← 返回 Skill 列表
extension
分类: 开发与工程API Key 暂未确认

seekdb AI 函数验证

验证 seekdb AI SQL 函数,覆盖参数校验、Provider 协议、异常响应和向量批量请求,并生成可复查的测试证据。

person作者: gyp666hubModelScope

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 连接仍可使用 |

数值边界和批次上限以当前实现或题目契约为准,不把某次测试的样本数写成协议要求。

执行验证

  1. 按当前仓库文档准备构建环境,使用 .bazelversion 对应的 Bazel。确认测试可执行文件对应当前代码。

  2. 构建并运行 //unittest/sql:ai_function_test。记录实际退出码、通过数、失败用例和日志路径。仅构建成功不能证明测试通过。

  3. 集成测试使用已确认可丢弃的独立实例。先读 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
    
  4. 对 SQL 测试比较实际输出与仓库预期结果。排查差异时保留原始结果,不通过重录预期结果掩盖失败。

  5. 对批量优化同时检查返回值和 Mock 请求日志。必须观察每次 HTTP 请求的输入数、请求次数及 SQL 行映射,才能证明请求合并。

  6. 触发异常响应后执行简单 SQL,确认连接仍能使用。若修改了事务相关行为,再验证事务状态。

没有测试实例或构建依赖时,报告尚缺的条件和未运行的检查。不要连接用途不明的实例运行会写入或清理数据的集成测试。

输出证据

报告本次代码版本、执行命令、退出码、测试结果及可定位的日志。失败时给出最小复现和首个有意义的错误。

区分本地 Mock 测试、官方脚本测试、组织方外部服务测试及比赛平台验收。官方脚本配合本地 Mock 通过,只能证明该组合下的结果;没有平台返回值就不报告平台得分。

使用示例

检查当前 seekdb 中 AI_EMBED 的跨行批量改动。重点验证混合 NULL、响应重排和 JSON 包装表达式,并根据 Mock 请求日志判断 HTTP 请求是否真的合并。使用独立测试实例,报告本次结果和证据路径。