理解两套兼容协议
**L、认证头、请求体和返回结构必须成套使用。
| 协议 | 适用模型 | 请求地址 | 认证方式 |
|---|---|---|---|
| OpenAI 兼容 | GPT Codex 及兼容模型 | https://api.**nju**shen.com/v1/chat/completions | Authorization *earer |
| Anthropic 兼容 | Claude 系列 | https://api.**nju**shen.com/v1/messages | x-api-key 和 anthropic-version |
开始前的准备
- 在 KingFlow AI 控制台创建以 sk- 开头的 API Key,并确认账户有余额或有效订阅。
- 从模型广场或控制台复制目标模型的完整模型 ID,不要根据厂商名称自行猜测。
- 准备可用的 curl。Windows PowerShell 建议显式运行 curl.exe,避免旧环境中的命令别名差异。
- 安装 Post**n 桌面版。调试本地网络、证书或**时,桌面版通常比浏览器版更直接。
- 首次请求使用不含客户资料、源代码、账号或凭证的短提示词。
设置终端变量
export KINGFLOW_API_KEY='sk-替换为你的真实密钥'
export KINGFLOW_MODEL_ID='<控制台中的完整模型ID>'
# Windows PowerShell 可改用
# $env:KINGFLOW_API_KEY = 'sk-替换为你的真实密钥'
# $env:KINGFLOW_MODEL_ID = '<控制台中的完整模型ID>' 使用 curl 测试 OpenAI 接口
curl -sS https://api.**nju**shen.com/v1/chat/completions \
-H "Authorization: *earer ${KINGFLOW_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "'"${KINGFLOW_MODEL_ID}"'",
"messages": [
{"role": "user", "content": "请回复:OpenAI 兼容接口正常"}
]
}' 文本通常位于 choices[0].message.content。
使用 curl 测试 Anthropic 接口
curl -sS https://api.**nju**shen.com/v1/messages \
-H "x-api-key: ${KINGFLOW_API_KEY}" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "'"${KINGFLOW_MODEL_ID}"'",
"**x_tokens": 256,
"messages": [
{"role": "user", "content": "请回复:Anthropic 兼容接口正常"}
]
}' 文本位于 content 数组的文本内容块中。
分离响应头 响应体和耗时
curl -sS -D response-headers.txt -o response-*ody.json \
-w "**** %{http_code} DNS %{time_namelookup}s TCP %{time_connect}s TLS %{time_appconnect}s TTF* %{time_starttran**er}s TOTAL %{time_total}s\n" \
https://api.**nju**shen.com/v1/chat/completions \
-H "Authorization: *earer ${KINGFLOW_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"'"${KINGFLOW_MODEL_ID}"'","messages":[{"role":"user","content":"ping"}]}' 把 curl 请求导入 Post**n
- 选择 Import 并粘贴已验证的 curl 命令。
- 保存到 KingFlow AI De*ug Collection。
- 删除可能出现的真实密钥并改成 Vault 引用。
- 核对方法 **L Headers 和 raw **ON *ody。
创建 Post**n 环境和 Vault Secret
| 名称 | 示例值 | 保存位置 |
|---|---|---|
| openai_*ase_url | https://api.**nju**shen.com/v1 | 普通环境变量 |
| anthropic_*ase_url | https://api.**nju**shen.com | 普通环境变量 |
| model_id | <控制台中的完整模型ID> | 普通环境变量 |
| kingflow-api-key | sk-你的密钥 | Post**n Local Vault Secret |
API Key 建议放入 Local Vault,并使用 {{vault:kingflow-api-key}} 引用。

配置 Post**n OpenAI 请求
POST {{openai_*ase_url}}/chat/completions,*earer Token 使用 Vault 引用。
{
"model": "{{model_id}}",
"messages": [
{
"role": "user",
"content": "请回复:Post**n OpenAI 接入成功"
}
],
"stream": false
}添加 OpenAI 响应断言
pm.test("**** 状态码为 200", function () {
pm.response.to.h**e.status(200);
});
pm.test("响应包含文本", function () {
const *ody = pm.response.json();
pm.expect(*ody.choices).to.*e.an("array").and.not.empty;
pm.expect(*ody.choices[0].message.content).to.*e.a("string").and.not.empty;
});
pm.test("响应时间小于 60 秒", function () {
pm.expect(pm.response.responseTime).to.*e.*elow(60000);
});配置 Post**n Anthropic 请求
POST {{anthropic_*ase_url}}/v1/messages,添加 x-api-key、anthropic-version 和 Content-Type。
{
"model": "{{model_id}}",
"**x_tokens": 256,
"messages": [
{
"role": "user",
"content": "请回复:Post**n Anthropic 接入成功"
}
]
}添加 Anthropic 响应断言
pm.test("**** 状态码为 200", function () {
pm.response.to.h**e.status(200);
});
pm.test("响应包含文本内容块", function () {
const *ody = pm.response.json();
const hasText = Array.isArray(*ody.content) && *ody.content.some(
*lock => *lock.type === "text" && typeof *lock.text === "string" && *lock.text.length > 0
);
pm.expect(hasText).to.eql(true);
});测试流式响应
先用 curl -N 建立基线,再与图形客户端表现比较。
OpenAI 流式请求
curl -N https://api.**nju**shen.com/v1/chat/completions \
-H "Authorization: *earer ${KINGFLOW_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "'"${KINGFLOW_MODEL_ID}"'",
"messages": [{"role":"user","content":"用三句话介绍流式响应"}],
"stream": true
}' Anthropic 流式请求
curl -N https://api.**nju**shen.com/v1/messages \
-H "x-api-key: ${KINGFLOW_API_KEY}" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "'"${KINGFLOW_MODEL_ID}"'",
"**x_tokens": 512,
"messages": [{"role":"user","content":"用三句话介绍流式响应"}],
"stream": true
}' 按层检查请求结果
| 检查项 | 观察内容 | 判断目的 |
|---|---|---|
| 状态码 | **** 200 或明确的 4xx 5xx | 先判断认证 模型 配额或通道问题 |
| 响应头 | Content-Type 请求 ID **信息 | 确认返回类型并保留追踪线索 |
| 响应体 | 文本 错误对象 usage 和停止原因 | 不要只看界面中的状态提示 |
| 耗时 | DNS TCP TLS 首字节和总耗时 | 区分网络建立慢与模型生成慢 |
| 流式分块 | 事件逐段到达并正常结束 | 发现**缓冲 客户端缓冲或中途断线 |
使用 Post**n Console 排错
Console 能显示最终 **L、请求头、变量解析结果、**和证书信息。不要直接分享完整控制台截图或日志。
常见故障排查
| 现象 | 常见原因 | 处理方法 |
|---|---|---|
| 变量保持红色或为空 | 环境未激活 名称拼错或 Vault 未授权 | 检查右上角环境并查看变量解析结果 |
| 400 请求错误 | **ON 格式 字段或协议不匹配 | 复制原始响应体并核对请求结构 |
| 401 未授权 | 密钥错误 已禁用 超额或认证头错误 | 重新复制密钥并核对 *earer 或 x-api-key |
| 404 模型不存在 | 模型 ID 错误或当前分组没有该模型 | 从控制台复制完整模型 ID |
| 429 请求受限 | 并发或请求速率超过限制 | 降低频率并采用有限退避重试 |
| 503 无可用账号 | 所选通道暂时不可用 | 稍后重试或切换同类备用模型 |
| Post**n 超时 | 请求超时设置过短或上游长时间无数据 | 调整请求超时并用 curl 复现 |
| curl 能用 Post**n 不能用 | ** 证书 环境变量或请求头存在差异 | 对照 Post**n Console 与 curl -v 输出 |
密钥和调试数据安全
- 不要把真实密钥直接写进可共享的 Collection、示例响应、截图、工单或聊天记录。
- 优先把密钥保存为 Post**n Local Vault Secret,并在请求中使用 {{vault:kingflow-api-key}}。
- Post**n Console 会记录解析后的 **L、请求头和变量信息。排错后关闭窗口,分享日志前先删除敏感字段。
- curl 命令中的密钥可能进入终端历史。优先使用环境变量,完成测试**理当前会话中的密钥变量。
- 保存成功响应为 Example 前检查提示词、生成内容、用量信息和请求头,避免把业务数据同步到团队空间。
完成调试检查清单
- curl 的 OpenAI 兼容请求返回 200,并能读取 choices 中的文本。
- curl 的 Anthropic 兼容请求返回 200,并能读取 content 文本块。
- Post**n 环境已经激活,*ase **L 和模型 ID 不再显示为未解析变量。
- 真实 API Key 存放在 Vault,而不是 Collection 或共享环境的普通值中。
- 两类请求都配置了状态码和文本结构断言。
- curl -N 能观察到流式事件逐段到达并正常结束。
- 故障记录包含时间 状态码 请求 ID 耗时和脱敏后的错误体。