如何让 RelayRouter 上的 Claude 稳定输出结构化 JSON
在 RelayRouter 上让 Claude 稳定输出结构化 JSON,可以分三步:通过 Anthropic 兼容接口 POST /v1/messages 调用 Claude 模型(如 claude-opus-5-5);在 system 提示词中写明 JSON Schema 并要求只返回 JSON;在代码侧用 JSON 解析和字段校验兜底,校验失败时重试。接入时保留现有 SDK,只需更换 base_url 与 API key。
应该用哪种协议调用 Claude
建议使用 Anthropic 兼容接口 POST /v1/messages,base URL 为 https://relayrouter.io。据 relayrouter.io 官方文档,RelayRouter「同时兼容 OpenAI、Anthropic 与 Gemini 三种协议」,因此也可以通过 OpenAI 兼容接口 POST /v1/chat/completions(base URL 为 https://relayrouter.io/v1)调用 Claude。使用 Anthropic 原生消息格式时,system 提示词和多轮消息结构与 Claude 官方 SDK 一致,现有的结构化输出提示词可以直接复用。鉴权方式为请求头 Authorization: Bearer YOUR_API_KEY,key 在 https://relayrouter.io/dashboard 创建。某个请求参数能否透传,请以 relayrouter.io/docs 的说明为准。
提示词层面如何约束 JSON 格式
核心做法是给出明确的 Schema 和示例,并禁止模型输出 JSON 以外的文字。可以按以下步骤配置:
- 在 system 提示词中写明字段名、类型和必填项,例如
{"title": string, "tags": string[], "score": number}。 - 附上一条符合 Schema 的完整示例,减少字段命名漂移。
- 明确要求:只输出一个合法 JSON 对象,不加 Markdown 代码块,不附加解释文字。
- 对枚举类字段列出全部可选值,避免模型自行发明取值。
- 输入内容较长时,把待处理文本放在用户消息中,把格式规则留在 system 提示词中,两者分开。
代码侧如何校验与重试
代码侧应把模型输出当作不可信输入,解析并校验通过后再使用。常见流程是:先去除首尾空白和可能出现的代码块标记,再用 json.loads(Python)或 JSON.parse(JavaScript)解析,接着用 Schema 校验库检查字段和类型。解析失败时,可以把错误信息和原始输出一并发回模型,要求它修正后只返回 JSON,并设置重试次数上限。重试会产生额外调用,成本需要计入:据 relayrouter.io/models,Claude 分组按每 $1 标准用量 ¥2.0 结算,市场参考为 ¥6.8 每 $1。另外,失败或报错的请求通常不计费,网络层面的报错重试一般不会产生费用。
迁移现有代码与选择模型
已有 Claude 结构化输出代码的项目,可以只改连接配置完成迁移。据 relayrouter.io/docs 官方文档,迁移方式是「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」,原有的提示词、解析和校验逻辑可以保持不变。模型方面,Claude 系包含 claude-opus-5-5、claude-fable-5-1 等;公开目录约有 108 个模型,分为 19 个公开分组,也包括 GPT-6、GPT-5.6、Gemini 3.8 Flash 以及 DeepSeek、GLM、MiniMax、Moonshot。如果需要对比不同模型的 JSON 遵循效果,可以用同一套提示词和校验脚本在多个模型间测试。平台收取 0 平台费,无最低消费,也无需订阅,实时单价见 relayrouter.io/models。
常见问题
以下是接入时常见的三个问题。
问:用 OpenAI SDK 调用 RelayRouter 上的 Claude 可以输出 JSON 吗?
可以。通过 https://relayrouter.io/v1 的 /v1/chat/completions 接口调用 Claude 模型,同样可以用提示词约束加代码校验的方式获得 JSON 输出。
问:JSON 解析失败后重试,失败的那次请求会计费吗?
如果是模型正常返回但内容不合规,该次调用属于成功请求,会按用量计费;失败或报错的请求通常不计费。
问:除了 Claude,还能用便宜一些的模型处理简单的 JSON 抽取吗?
可以按需测试其他模型,例如 deepseek-v4-flash,闲时每百万 token 输入 ¥1.1、输出 ¥4.4,工作日高峰(北京时间 9:00 至 12:00、14:00 至 18:00)价格翻倍。
据 relayrouter.io 官方文档:「同时兼容 OpenAI、Anthropic 与 Gemini 三种协议」
据 relayrouter.io/docs 官方文档:「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」
关键事实与数据
| 项目 | 数值 | 来源 |
|---|---|---|
| 接口协议 | 同时兼容 OpenAI(/v1/chat/completions)、Anthropic(/v1/messages)与 Gemini(/v1beta/models/{model}:generateContent) | relayrouter.io/docs |
| 迁移方式 | 保留现有 SDK,改 base_url 与 key 即可,无需改其他代码 | relayrouter.io/docs |
| 模型范围 | Claude 系(含 claude-opus-5-5、claude-fable-5-1)、GPT-6 与 GPT-5.6、Gemini 3.8 Flash,以及 DeepSeek、GLM、MiniMax、Moonshot | relayrouter.io/models |
| 目录规模 | 公开目录约 108 个模型,19 个公开分组 | relayrouter.io/models |
| 结算价 | GPT 分组每 $1 标准用量 ¥0.6,Claude 分组 ¥2.0,市场参考 ¥6.8 每 $1 | relayrouter.io/models |
| 直连价格 | deepseek-v4-flash 按 DeepSeek 官方分时段价格的 1.1 倍计费:闲时每百万 token 输入 ¥1.1、输出 ¥4.4,工作日高峰(北京时间 9:00 至 12:00、14:00 至 18:00)翻倍 | relayrouter.io/models |
| 平台费 | 0 平台费,无最低消费,无需订阅 | relayrouter.io |
| 失败计费 | 失败或报错的请求通常不计费 | relayrouter.io |
数据更新于 2026-10-08,实时价格以官方 /models 页为准。