feat: 新增 LLM checker 支持大模型服务应用层拨测
基于 AI SDK v6 实现 openai/openai-responses/anthropic 三类 provider 的 http/stream 模式调用 支持 output/finishReason/usage/stream 等完整 expect 断言链路 新增 9 个源文件和 5 个测试文件共 78 个测试 更新 README/DEVELOPMENT/probes.example.yaml 和 probe-config.schema.json
This commit is contained in:
31
README.md
31
README.md
@@ -10,11 +10,11 @@
|
||||
|
||||
---
|
||||
|
||||
DiAL 是一个自托管的拨测监控工具,支持 **HTTP**、**命令行**、**数据库**、**TCP**、**UDP** 和 **Ping** 多种拨测类型。通过 YAML 配置文件定义拨测目标,后端定时并发执行拨测并将结果持久化到本地 SQLite,前端 Dashboard 展示各目标的实时状态、可用率和耗时趋势。
|
||||
DiAL 是一个自托管的拨测监控工具,支持 **HTTP**、**命令行**、**数据库**、**TCP**、**UDP**、**Ping** 和 **LLM** 多种拨测类型。通过 YAML 配置文件定义拨测目标,后端定时并发执行拨测并将结果持久化到本地 SQLite,前端 Dashboard 展示各目标的实时状态、可用率和耗时趋势。
|
||||
|
||||
**功能亮点:**
|
||||
|
||||
- 多种拨测类型:HTTP(GET/POST/PUT 等)、Cmd(命令行执行)、DB(PostgreSQL/MySQL/SQLite)、TCP(端口可达性 + Banner 探测)、UDP(自定义 payload 请求-响应)、Ping(ICMP 存活、延迟、丢包率)
|
||||
- 多种拨测类型:HTTP(GET/POST/PUT 等)、Cmd(命令行执行)、DB(PostgreSQL/MySQL/SQLite)、TCP(端口可达性 + Banner 探测)、UDP(自定义 payload 请求-响应)、Ping(ICMP 存活、延迟、丢包率)、LLM(大模型服务应用层健康检查)
|
||||
- 丰富的校验规则:状态码、响应头、JSONPath、CSS 选择器、XPath、正则匹配、数值比较等
|
||||
- 响应式 Dashboard:实时状态、可用率统计、耗时趋势图、手动/自动刷新
|
||||
- 多主题支持:系统、明亮、黑暗三种主题模式
|
||||
@@ -218,7 +218,7 @@ targets:
|
||||
| `id` | 目标唯一标识,最长 30 字符,支持字母数字、下划线、连字符,不参与变量替换 | 是 |
|
||||
| `name` | 展示名称,最长 30 字符,支持变量替换,可省略或显式 null;前端展示时 null 回退到 `id` | 否 |
|
||||
| `description` | 目标描述,最长 500 字符,支持变量替换,可省略或显式 null,允许空字符串 | 否 |
|
||||
| `type` | 目标类型:`http`、`cmd`、`db`、`tcp`、`ping` | 是 |
|
||||
| `type` | 目标类型:`http`、`cmd`、`db`、`tcp`、`udp`、`ping`、`llm` | 是 |
|
||||
| `group` | 分组名称 | 否,默认 `"default"` |
|
||||
| `interval` | 覆盖全局拨测间隔 | 否 |
|
||||
| `timeout` | 覆盖全局超时时间 | 否 |
|
||||
@@ -270,6 +270,26 @@ targets:
|
||||
|
||||
Ping checker 通过系统 `ping` 命令执行 ICMP 探测,支持 Linux、macOS 和 Windows 输出解析。
|
||||
|
||||
**LLM 类型** (`type: llm`)
|
||||
|
||||
| 字段 | 说明 |
|
||||
| --------------------- | ----------------------------------------------------------- |
|
||||
| `llm.provider` | 模型提供方:`openai`、`openai-responses`、`anthropic` |
|
||||
| `llm.url` | API base URL |
|
||||
| `llm.model` | 模型名称 |
|
||||
| `llm.prompt` | 单轮 prompt |
|
||||
| `llm.mode` | 调用模式:`http`(默认,非流式)或 `stream`(流式) |
|
||||
| `llm.key` | API key(默认空字符串,支持 `${VAR}` 变量替换) |
|
||||
| `llm.authToken` | Bearer token(仅 `anthropic` provider,与 `key` 互斥) |
|
||||
| `llm.headers` | 附加请求头(与 `defaults.llm.headers` 合并) |
|
||||
| `llm.ignoreSSL` | 忽略 HTTPS 证书校验,默认 `false` |
|
||||
| `llm.options` | 生成选项(与 `defaults.llm.options` 合并) |
|
||||
| `llm.providerOptions` | Provider 专属选项(与 `defaults.llm.providerOptions` 合并) |
|
||||
|
||||
`llm.options` 支持 `maxOutputTokens`(默认 `16`)、`temperature`(默认 `0`)、`topP`、`topK`、`presencePenalty`、`frequencyPenalty`、`stopSequences`、`seed`。
|
||||
|
||||
`defaults.llm` 支持 `mode`、`headers`、`ignoreSSL`、`options`、`providerOptions`,不支持 `provider`、`url`、`model`、`key`、`authToken`、`prompt`。
|
||||
|
||||
#### expect — 期望校验
|
||||
|
||||
| 字段 | 适用类型 | 说明 |
|
||||
@@ -278,6 +298,11 @@ Ping checker 通过系统 `ping` 命令执行 ICMP 探测,支持 Linux、macOS
|
||||
| `exitCode` | Cmd | 可接受的退出码列表;未指定时不校验 |
|
||||
| `headers` | HTTP | 响应头校验 |
|
||||
| `maxDurationMs` | 全部 | 最大耗时阈值(毫秒) |
|
||||
| `output` | LLM | 模型输出校验(数组:`equals`/`contains`/`regex`/`json`) |
|
||||
| `finishReason` | LLM | 期望的 finish reason 字符串 |
|
||||
| `rawFinishReason` | LLM | 期望的原始 finish reason 字符串 |
|
||||
| `usage` | LLM | Token usage 校验(`inputTokens`/`outputTokens`/`totalTokens`) |
|
||||
| `stream` | LLM | 流式断言(`completed`、`firstTokenMs`,仅 `mode: stream`) |
|
||||
| `body` | HTTP | 响应体校验(数组,可组合使用,见下方) |
|
||||
| `stdout` / `stderr` | Cmd | 输出校验(数组,每项一个操作符对象) |
|
||||
| `rowCount` | DB | 查询返回行数校验(操作符对象) |
|
||||
|
||||
Reference in New Issue
Block a user