40 lines
2.7 KiB
Markdown
40 lines
2.7 KiB
Markdown
## MODIFIED Requirements
|
|
|
|
### Requirement: LLM Failure Phase 与状态摘要
|
|
LLM checker SHALL 使用 `request`、`status`、`headers`、`stream`、`output`、`finishReason`、`rawFinishReason`、`usage`、`duration` 作为第一版 failure phase。成功结果的 API detail SHALL 从持久化 observation 动态构造,简短描述 provider、mode、HTTP status、finish reason、raw finish reason、first token、输出长度和 token usage 中可用的信息。observation 和 detail MUST NOT 写入完整 prompt、完整输出或 key。
|
|
|
|
#### Scenario: request failure
|
|
- **WHEN** 模型请求因网络错误、认证调用异常、AbortSignal 或无 HTTP metadata 的 SDK 错误失败
|
|
- **THEN** LLM checker SHALL 返回 `phase: "request"` 的 error failure
|
|
|
|
#### Scenario: output mismatch failure
|
|
- **WHEN** 模型输出不满足 `expect.output`
|
|
- **THEN** LLM checker SHALL 返回 `phase: "output"` 的 mismatch failure
|
|
|
|
#### Scenario: 非流式成功摘要
|
|
- **WHEN** `provider: openai` 的非流式检查成功
|
|
- **THEN** detail SHALL 使用类似 `LLM openai http 200 finish=stop, output=2 chars, usage=12/2 tokens` 的简短格式
|
|
|
|
#### Scenario: 流式成功摘要
|
|
- **WHEN** `provider: anthropic` 的流式检查成功且存在 raw finish reason
|
|
- **THEN** detail SHALL 使用类似 `LLM anthropic stream 200 finish=stop raw=end_turn, firstToken=624ms, output=2 chars` 的简短格式
|
|
|
|
#### Scenario: serialize 展示文本
|
|
- **WHEN** store 同步 LLM target
|
|
- **THEN** LLM checker `serialize()` SHALL 返回类似 `openai:gpt-4o-mini @ https://api.openai.com/v1` 的 target 展示文本和 resolved config JSON
|
|
|
|
### Requirement: LLM Checker 测试策略
|
|
LLM checker 的自动化测试 MUST 不访问真实外部模型服务。测试 SHALL 使用本地 mock HTTP/SSE 服务模拟 OpenAI Chat Completions、OpenAI Responses 和 Anthropic Messages 的成功、错误和流式响应。测试 SHALL 覆盖 schema、语义校验、defaults 合并、变量替换、provider factory、observation、expect、execute、registry 注册、配置加载和 JSON Schema 导出。
|
|
|
|
#### Scenario: 本地 mock provider 测试成功路径
|
|
- **WHEN** 测试运行 LLM checker 的 OpenAI、OpenAI Responses 和 Anthropic 成功路径
|
|
- **THEN** 测试 SHALL 使用本地 mock 服务返回 provider 响应,不依赖外部网络或真实 API key
|
|
|
|
#### Scenario: 本地 mock provider 测试错误路径
|
|
- **WHEN** 测试运行 401、429、500、超时、stream error、stream abort、缺 usage 或无文本输出路径
|
|
- **THEN** 测试 SHALL 断言 LLM checker 返回符合 spec 的 matched、failure phase、actual、detail 和 observation
|
|
|
|
#### Scenario: 质量检查覆盖 LLM checker
|
|
- **WHEN** 实现完成后执行质量检查
|
|
- **THEN** `bun run schema:check`、`bun run check` SHALL 通过
|