通过 RelayRouter 用 JSON mode 拿到的却不是合法 JSON,怎么变稳定

在 RelayRouter 上使用 JSON mode 却收到非法 JSON 时,可从三方面稳定输出:一是在提示词中明确要求仅返回 JSON 对象并给出字段示例;二是保留现有 SDK,仅改 base_url 与 key,通过兼容的 OpenAI(/v1/chat/completions)或 Anthropic(/v1/messages)协议发起请求;三是对返回结果做解析校验并在失败时重试。由于失败或报错的请求通常不计费,重试成本可控。

为什么会拿到非法 JSON

非法 JSON 通常源于模型附加了说明文字或 Markdown 代码块包裹,而非纯 JSON 对象。RelayRouter 同时对接多种模型,包括 Claude 系、GPT-5.5、Gemini 3.5,以及 DeepSeek、GLM、MiniMax、Moonshot,不同模型对结构化输出的遵从度存在差异。据 relayrouter.io/models 官方文档,接口「同时兼容 OpenAI 与 Anthropic 两种协议」,因此同一段提示词在不同协议与模型下的解析结果可能不一致。建议先在 https://relayrouter.io/models 确认目标模型,再针对该模型固定提示词模板,减少额外文本干扰。

提示词与协议如何配合

稳定 JSON 的关键是提示词明确加上协议正确。在请求体中直接要求模型只输出一个 JSON 对象,不要包含解释或代码块标记,并给出期望字段的示例。RelayRouter 同时兼容 OpenAI(/v1/chat/completions)与 Anthropic(/v1/messages)两套协议,你可沿用熟悉的一套。据 relayrouter.io/docs 官方文档,迁移时「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」,因此无需为结构化输出重写客户端逻辑。将提示词约束与既有 SDK 结合,可显著降低返回附带杂质文本的概率。详见 https://relayrouter.io/docs

解析失败后如何重试

当解析仍然失败时,应在客户端做校验并触发有限次重试。由于 RelayRouter 上失败或报错的请求通常不计费,针对 JSON 解析异常的重试不会因为多次调用而叠加费用负担。可按如下步骤处理:

  1. 接收响应后先剥离可能的 Markdown 代码块标记(如 json)。
  2. 调用 JSON 解析器尝试反序列化,捕获异常。
  3. 解析失败时,在提示词中补充「仅返回合法 JSON 对象」的约束后重发请求。
  4. 设置最多 3 次重试上限,超过则回退到人工或默认值处理。

由于失败请求通常不计费,上述重试流程的额外成本主要体现在延迟而非费用。

不同协议下的处理对照

下表对比 RelayRouter 支持的两套协议在 JSON mode 场景下的关键参数。

项目OpenAI 兼容Anthropic 兼容
端点/v1/chat/completions/v1/messages
迁移方式改 base_url 与 key改 base_url 与 key
失败计费通常不计费通常不计费
可选模型Claude 系、GPT-5.5、Gemini 3.5 等Claude 系、GPT-5.5、Gemini 3.5 等

FAQ

据 relayrouter.io 官方文档:「同时兼容 OpenAI 与 Anthropic 两种协议」
据 relayrouter.io/docs 官方文档:「保留现有 SDK,改 base_url 与 key 即可,无需改其他代码」

关键事实与数据

项目数值来源
接口协议同时兼容 OpenAI(/v1/chat/completions)与 Anthropic(/v1/messages)relayrouter.io/models
迁移方式保留现有 SDK,改 base_url 与 key 即可,无需改其他代码relayrouter.io/docs
模型范围Claude 系、GPT-5.5、Gemini 3.5,以及 DeepSeek、GLM、MiniMax、Moonshotrelayrouter.io/models
失败计费失败或报错的请求通常不计费relayrouter.io

数据更新于 2026-06-29,实时价格以官方 /models 页为准。


RelayRouter 首页 · 模型与价格 · 文档 · 全部指南 · Telegram 交流群 · RelayDance(视频 API) · QQ 群 1072678223