# LLM Checker

`type: llm` 用于大模型服务应用层健康检查。

## 配置项

| 字段                  | 说明                                                  | 必填 | 默认值  |
| --------------------- | ----------------------------------------------------- | ---- | ------- |
| `llm.provider`        | 模型提供方：`openai`、`openai-responses`、`anthropic` | 是   | 无      |
| `llm.url`             | API base URL                                          | 是   | 无      |
| `llm.model`           | 模型名称                                              | 是   | 无      |
| `llm.prompt`          | 单轮 prompt                                           | 是   | 无      |
| `llm.mode`            | 调用模式：`http` 或 `stream`                          | 否   | `http`  |
| `llm.key`             | API key，支持 `${VAR}` 变量替换                       | 否   | `""`    |
| `llm.authToken`       | Bearer token，仅 `anthropic` provider，与 `key` 互斥  | 否   | 无      |
| `llm.headers`         | 附加请求头                                            | 否   | 无      |
| `llm.ignoreSSL`       | 忽略 HTTPS 证书校验                                   | 否   | `false` |
| `llm.options`         | 生成选项                                              | 否   | 无      |
| `llm.providerOptions` | Provider 专属选项                                     | 否   | 无      |

`llm.options` 支持 `maxOutputTokens`（默认 `16`）、`temperature`（默认 `0`）、`topP`、`topK`、`presencePenalty`、`frequencyPenalty`、`stopSequences`、`seed`。

## expect 校验项

| 字段              | 说明                                                                        | 必填 | 默认值  |
| ----------------- | --------------------------------------------------------------------------- | ---- | ------- |
| `status`          | 可接受的状态码列表，支持精确码和范围（如 `"2xx"`）                          | 否   | `[200]` |
| `headers`         | 响应头校验，使用 `KeyedExpectations`                                        | 否   | 无      |
| `output`          | 模型输出校验，使用 `ContentExpectations` 数组                               | 否   | 无      |
| `finishReason`    | finish reason 校验，使用 `ValueMatcher`                                     | 否   | 无      |
| `rawFinishReason` | 原始 finish reason 校验，使用 `ValueMatcher`                                | 否   | 无      |
| `usage`           | Token usage 校验，支持 `inputTokens`、`outputTokens`、`totalTokens` matcher | 否   | 无      |
| `stream`          | 流式断言，支持 `completed`、`firstTokenMs` matcher，仅 `mode: stream`       | 否   | 无      |
| `durationMs`      | 完整执行耗时校验，使用 `ValueMatcher`                                       | 否   | 无      |

## 示例

```yaml
- id: "llm-openai-probe"
  name: "OpenAI 健康检查"
  type: llm
  llm:
    provider: openai
    url: "https://api.openai.com/v1"
    model: "gpt-4o-mini"
    prompt: "Say OK"
    key: "${OPENAI_API_KEY}"
  expect:
    status: [200]
    finishReason: "stop"
    output:
      - contains: "OK"
```
