前言
现在很多人在接入大模型接口时,都会遇到一个很现实的问题:
这个中转站到底是不是真的?
表面上看,很多接口都号称兼容 OpenAI,甚至直接写着支持 GPT、Claude、Gemini、DeepSeek 等模型。但真正接入之后,经常会发现很多问题:
- 模型名称对不上
- 参数透传不完整
tool_calls、stop、json_object等能力失效- 返回结构看起来兼容,实际行为却不一致
- 明明写的是某个模型,实际表现却像另一个模型
所以,很多时候你需要的不是一个"聊天页面",而是一个能帮你判断中转站是否靠谱的检测工具。
这就是 ProbeKit Lite 的作用。
一句话介绍这个项目
ProbeKit Lite 是一个专门用来检测 OpenAI-compatible API 真实度、兼容性和可用性的工具。
你可以把它理解成:
AI 中转站真实度检测工具
它的核心目标不是聊天,而是帮助你判断一个接口:
- 能不能正常使用
- 是不是真的兼容 OpenAI 协议
- 有没有伪装模型
- 有没有阉割能力
- 适不适合继续接入你的业务
项目地址
- 在线体验:
https://www.probekitlite.top/ - GitHub:
https://github.com/9527Xy/probe-kit-lite - Gitee:
https://gitee.com/1634874721/probe-kit-lite
线上体验说明
项目提供了在线体验站:
https://www.probekitlite.top/
但这里要提前说明一个很关键的现实问题:
线上网页环境会受到浏览器跨域策略影响,所以部分中转站接口在官网上可能无法直接完成测试。
这并不是工具本身失效,而是因为很多 API 站点本身没有开放浏览器跨域访问。
所以更准确的使用建议是:
- 如果你只是想快速看看工具长什么样、有什么功能,可以直接用线上站点
- 如果你要认真测试某个中转站,尤其是跨域比较严格的接口,建议拉取代码到本地运行
一句话理解就是:
官网适合体验,本地更适合正式测试。
这个工具能解决什么问题
如果你正在遇到下面这些问题,那么这个工具基本就是为你准备的:
- 买了一个中转站,不知道后端到底接的是什么模型
- 想验证某个接口是不是真的兼容 OpenAI Chat Completions
- 想知道中转站有没有偷偷改写参数或阉割功能
- 想比较多个中转站谁更稳定、谁更透明、谁更接近真实模型
- 想在接入业务前先做一次基础验收
说得更直接一点:
它可以帮你快速判断一个 AI 接口是"能用",还是"值得用"。
ProbeKit Lite 到底检测什么
这个项目内置了一组自动化检测逻辑,会从多个维度去判断一个中转站的真实度和兼容性。
当前重点检测内容包括:
- 连通性检测
- 身份识别检测
- 模型一致性检测
- 协议兼容性检测
- Tool Calling 检测
- Tool Choice 检测
- Logprobs 检测
- Stop 序列检测
- JSON 输出检测
- Max Tokens 检测
- Sampling 参数检测
- 流式输出检测
- 上下文检测
- Token Usage 检测
- Response ID 检测
- 缓存重放检测
- Prompt 透传检测
- 隐藏水印扫描
- 并发检测
- 安全边界检测
- 网关透明度检测
- 性能检测
这些检测最终会帮助你判断下面几件事:
- 这个接口是不是一个真正可用的
OpenAI-compatible API。 - 这个中转站有没有明显的伪装、改写、缩水或转发痕迹。
- 这个接口适不适合进一步接入你的项目或业务。
看一点核心代码,更容易理解它在做什么
很多人看完介绍后,还是会问一句:
这个工具到底是怎么判断的?
下面直接贴几段项目里的核心实现逻辑,你一眼就能明白它不是"随便测一下",而是真的在按接口行为做判断。
1. 自动拼接真实请求地址
这段逻辑来自项目里的接口封装,作用是根据你的配置,决定最终请求哪个地址:
ts
function getEndpoint(config: ProbeConfig) {
const baseUrl = config.apiUrl.trim().replace(/\/$/, '')
const targetUrl = config.appendChatCompletions
? `${baseUrl}/chat/completions`
: baseUrl
if (config.useDevProxy) {
return `/api/proxy/chat?target=${encodeURIComponent(targetUrl)}`
}
return targetUrl
}
这段代码说明了两件事:
- 如果你填的是基础地址,比如
https://domain/v1,工具可以自动帮你补上/chat/completions - 如果你本地开发遇到跨域问题,它还能切到开发代理模式
这也是为什么它适合拿来快速测试不同中转站,而不是每次都手动改请求地址。
2. 先判断返回的是不是 OpenAI-compatible JSON
很多中转站表面上说兼容 OpenAI,但实际返回的可能是网页、错误页,甚至根本不是标准响应。
项目里有一段很关键的校验逻辑:
ts
function validateChatResponse(data: unknown): ChatCompletionResponse {
if (typeof data === 'string') {
throw new Error('API returned plain text instead of JSON.')
}
if (!data || typeof data !== 'object' || Array.isArray(data)) {
throw new Error('API returned an invalid response body.')
}
const response = data as ChatCompletionResponse
if (!Array.isArray(response.choices)) {
throw new Error('API response is JSON, but it is not an OpenAI-compatible chat completion response.')
}
return response
}
这段代码的意义非常直接:
- 不是 JSON,直接判定有问题
- 是 JSON 但没有
choices,说明它不是标准的 Chat Completions 响应 - 只有通过这一步,后面的真实性检测才有意义
换句话说,这个工具不是"接口有返回就算成功",而是先确认它是不是一个像样的 OpenAI 兼容接口。
3. 先做连通性预检,再跑完整检测
项目不是上来就把全部测试一股脑跑完,而是先做最基础的连接确认:
ts
async function runConnectionTest() {
const response = await openai.chat({
messages: [{ role: 'user', content: 'say ok' }],
maxTokens: 16,
})
return createResult(
'connection',
'Connection Test',
100,
response.duration,
`HTTP 200. Response received in ${response.duration} ms.`,
)
}
这样做的好处很明显:
- 如果连基础请求都打不通,就没必要继续跑后面的真实性检测
- 可以先把"地址填错""接口不可用""权限不对"这些低级问题排掉
对于实际使用者来说,这一步非常重要,因为很多问题并不是"模型不真",而是"接口压根没通"。
4. 真的会测模型身份有没有问题
下面这段是模型一致性检测思路的核心:
ts
async function runModelConsistencyTest() {
const response = await openai.chat({
messages: [
{
role: 'user',
content: [
`Are you ${config.model}?`,
'Answer in one compact JSON object with keys: requested_model, self_identified_model, provider.',
].join('\n'),
},
],
maxTokens: 120,
})
const content = getContent(response.data)
const responseModel = response.data.model ?? ''
const expected = config.model.toLowerCase()
const combined = `${responseModel} ${content}`.toLowerCase()
const expectedFamily = expected.split(/[/:.-]/)[0]
const hasExpectedSignal = Boolean(expectedFamily) && combined.includes(expectedFamily)
}
这段代码说明,它不是只看你传入了什么模型名,而是会同时看:
- 你请求的模型名
- 接口返回的
response.model - 模型自己在回答里怎么描述自己
如果这三者明显对不上,就会被判定为存在模型身份风险。
这也是这个项目和普通"接口测试页"最大的差别之一。
5. 所有测试是按顺序统一调度的
项目内部会把所有测试收拢到一个总流程里:
ts
const runners: TestRunner[] = [
runIdentityTest,
runModelConsistencyTest,
runProtocolTest,
runToolCallingTest,
runToolChoiceTest,
runLogprobsTest,
runStopFidelityTest,
runJsonFormatTest,
runMaxTokensClampTest,
runSamplingParamsTest,
runStreamingTest,
runContextTest,
runTokenUsageTest,
runResponseIdUniquenessTest,
runCacheReplayTest,
runPromptFidelityTest,
runWatermarkTest,
runConcurrencyTest,
runSecurityTest,
runPolicyBoundaryTest,
runGatewayTransparencyTest,
runPerformanceTest,
]
这意味着它不是只做一项检测,而是把"兼容性、真实性、透明度、性能、风险"几个维度连起来看。
所以最终报告的价值,不是某一项单点结论,而是一个更接近真实接入场景的综合判断。
它适合哪些人使用
这个工具比较适合下面几类人:
- 正在筛选 AI 中转站的人
- 需要接入 OpenAI 兼容接口的开发者
- 想快速验收接口质量的团队
- 想对比多个中转站效果的人
- 想排查"为什么模型表现不对劲"的技术人员
它的实际价值在哪里
很多人会问:市面上能调用接口的工具那么多,为什么还需要这个项目?
原因很简单。
因为很多时候问题并不是"接口能不能返回内容",而是:
- 它返回的内容是不是可信
- 它的模型身份是不是真的
- 它的参数有没有被改写
- 它的能力有没有被裁剪
- 它的协议兼容是不是只做了表面兼容
ProbeKit Lite 的价值,就在于它不是只帮你"调通接口",而是帮你识别接口质量。
如何使用
下面直接说使用方法。
1. 安装依赖
bash
npm install
2. 启动项目
bash
npm run dev
启动后,打开本地页面即可使用。
这里本地启动有一个明显优势:
项目内置了开发代理能力,本地测试时可以更方便地绕过部分浏览器跨域限制。
所以如果你在线上站点发现某些接口测不了,不用怀疑项目本身,优先改用本地运行版本测试。
3. 填写接口信息
你只需要填写三个核心参数:
API URLAPI KeyModel
4. 配置检测选项
项目里有几个比较关键的开关:
Append /chat/completions
如果你填写的是基础地址,比如:
text
https://domain/v1
通常建议开启这个选项。
如果你填写的是完整地址,比如:
text
https://domain/v1/chat/completions
通常建议关闭这个选项。
Use Dev Proxy
这个选项主要用于本地开发。
如果你在浏览器里直接请求接口时遇到跨域问题,可以在开发模式下开启它。
Use AI Scoring
开启之后,系统会在基础检测完成后,再调用一次当前模型对检测结果做 AI 复评。
优点是报告会更丰富,缺点是会额外消耗 token。
5. 开始检测
点击开始后,系统会先做连通性预检,然后按顺序执行全部测试,最后生成检测报告。
检测完成后看什么
很多人拿到报告之后,不知道重点该看哪里。其实很简单,先看下面几项:
- 总分
- 每一项测试是否通过
- 失败项的原因说明
- 请求和响应摘要
- token usage 是否完整
- AI 复评结果是否和基础结论一致
如何判断一个中转站靠不靠谱
这里给一个最直接的判断思路。
如果出现这些信号,通常说明比较靠谱
- 接口连通稳定
- 返回结构完整
- 协议兼容性正常
- 模型身份和行为表现基本一致
tool_calls、stop、json_object、logprobs可以正常工作usage字段完整- 并发、流式、性能表现正常
如果出现这些信号,就要提高警惕
- 声称是某模型,但返回身份或行为明显不一致
- 工具调用失真
- 参数透传不完整
usage长期缺失- 响应 ID 重复
- 存在缓存重放嫌疑
- 并发请求接近串行执行
- 返回元数据严重缺失
它能不能直接帮你下结论
可以明确说:
它能帮你做高价值判断,但不能替你做绝对结论。
也就是说,它可以帮助你:
- 快速发现问题
- 快速判断风险
- 快速筛掉明显不靠谱的中转站
- 快速找出适合继续测试的接口
但它不能保证:
- 100% 证明对方一定是官方直连
- 100% 证明某个模型身份绝对真实
- 替代你自己的业务场景测试
- 替代长期稳定性观察
所以最合理的理解是:
ProbeKit Lite 是一个前期筛选和验真工具,不是最终裁判。
这个项目适不适合你
如果你只是想找一个聊天页面,这个项目不适合你。
如果你想解决的是下面这些问题,那它就很适合:
- 我想知道这个中转站真不真
- 我想知道它是不是只是"表面兼容 OpenAI"
- 我想知道它有没有偷改参数
- 我想知道它能不能接入生产业务
- 我想快速比较几个 API 哪个更靠谱
总结
ProbeKit Lite 本质上不是一个普通的 AI 页面,而是一个用于检测 AI 中转站真实度、兼容性和可用性的工具。
如果你现在正准备接入某个 OpenAI-compatible API,或者正在筛选中转站、代理站、聚合站,那么这个项目的价值会非常直接:
它能帮你少踩坑,更快判断一个接口到底值不值得继续用。