seekdb AI 函数验证
<!-- OB-S:lKXP2WHyC1xTQt2X_5j0Ag -->把 AI 函数的实现改动对应到可重复的测试,并给出本次实际执行的证据。
确认仓库和测试入口
在用户指定的 seekdb 仓库工作。先读取项目的 AGENTS.md、.bazelversion 和现有测试说明,确认当前分支及未提交改动。
此 Skill 根据带有 AI 函数增强测试的 seekdb 仓库整理。先检查这些入口是否存在:
unittest/sql/engine/expr/README.md:构建和集成测试命令。unittest/sql/BUILD.bazel:ai_function_test构建目标。unittest/sql/engine/expr/run_ai_function_integration.py:集成测试入口。unittest/sql/engine/expr/ai_service_mock.py:本地 HTTP 测试服务。tools/deploy/mysql_test/test_suite/ai_function/:SQL 测试和预期结果。
路径缺失时,查找当前版本中的对应入口。不要把其他分支的文件存在情况或历史通过记录当作当前事实。
按改动选择检查内容
只运行与改动相关的检查。公共 Provider、HTTP 或批量执行路径改动需要覆盖所有受影响的函数。
| 函数或公共路径 | 重点检查 | | --- | --- | | AI_PROMPT | 重复和嵌套占位符、花括号转义、非法下标、Unicode、JSON 参数、TEXT/LONGTEXT | | AI_COMPLETE | 普通 Prompt、AI_PROMPT 输出、SQL NULL 和 JSON 配置、长文本、空内容及非字符串响应 | | AI_EMBED | 向量维度、数值有效性、返回数量、响应 index 重排、重复或越界 index | | Provider | OpenAI/Ollama 的请求和响应协议、凭证配置、Provider 名称解析 | | AI_RERANK | 返回索引唯一且在范围内、分数为有限数值、分数降序、同分稳定顺序、原始对象字段保留 | | 批量执行 | NULL、skip/evaluated mask、跨行结果映射、模型和维度分组、过滤与 LIMIT、JSON 包装表达式 | | HTTP 异常 | 畸形 JSON、空响应、HTTP 错误、超时后资源释放及 SQL 连接仍可使用 |
数值边界和批次上限以当前实现或题目契约为准,不把某次测试的样本数写成协议要求。
执行验证
-
按当前仓库文档准备构建环境,使用
.bazelversion对应的 Bazel。确认测试可执行文件对应当前代码。 -
构建并运行
//unittest/sql:ai_function_test。记录实际退出码、通过数、失败用例和日志路径。仅构建成功不能证明测试通过。 -
集成测试使用已确认可丢弃的独立实例。先读 runner 的参数和说明,确认 socket 指向该实例。
下面是命令模板;将参数替换成已核实的实际路径:
python3 unittest/sql/engine/expr/run_ai_function_integration.py \ --socket=/path/to/disposable-instance/run/sql.sock \ --mysqltest=/path/to/mysqltest \ --work-dir=/path/to/test-output -
对 SQL 测试比较实际输出与仓库预期结果。排查差异时保留原始结果,不通过重录预期结果掩盖失败。
-
对批量优化同时检查返回值和 Mock 请求日志。必须观察每次 HTTP 请求的输入数、请求次数及 SQL 行映射,才能证明请求合并。
-
触发异常响应后执行简单 SQL,确认连接仍能使用。若修改了事务相关行为,再验证事务状态。
没有测试实例或构建依赖时,报告尚缺的条件和未运行的检查。不要连接用途不明的实例运行会写入或清理数据的集成测试。
输出证据
报告本次代码版本、执行命令、退出码、测试结果及可定位的日志。失败时给出最小复现和首个有意义的错误。
区分本地 Mock 测试、官方脚本测试、组织方外部服务测试及比赛平台验收。官方脚本配合本地 Mock 通过,只能证明该组合下的结果;没有平台返回值就不报告平台得分。
使用示例
检查当前 seekdb 中 AI_EMBED 的跨行批量改动。重点验证混合 NULL、响应重排和 JSON 包装表达式,并根据 Mock 请求日志判断 HTTP 请求是否真的合并。使用独立测试实例,报告本次结果和证据路径。
微信扫一扫