- OpenAI 兼容 API:适合绝大多数场景,使用统一接口调用不同模型。
- Provider 原生 API:适合需要统一接口未暴露的上游特有能力的高级场景。
OpenAI 兼容 API
这是使用 YouRouter 最简单、最灵活的方式。你可以直接使用熟悉的 OpenAI SDK,并通过极少的代码变更在不同模型和 provider 之间切换。基础用法
下面的示例演示了如何发送一个基础 chat completion 请求。你可以修改model 和 vendor 请求头,以切换不同模型和上游提供商。
高级功能
多轮对话
如果要保持连续对话,只需要把完整对话历史放入messages 数组中。
流式响应
对于聊天机器人等实时交互场景,可以用流式输出边生成边返回。把stream=True 传入请求即可。
函数调用 / 工具调用
你可以让模型调用工具或函数,与外部系统交互。这通常是一个多步骤流程:- 发送包含工具定义的请求。
- 模型返回它想调用哪些工具。
- 你在代码中实际执行这些工具。
- 再把工具执行结果返回给模型,由模型生成最终自然语言回复。
Vision(多模态补全)
很多模型支持多模态输入,可以在请求中直接附带图片。这适用于图片描述、图像分析和视觉问答等场景。gpt-4o、claude-3-5-sonnet-20240620 和 gemini-1.5-pro-latest 等模型都支持视觉能力。
参数
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
model | string | 要使用的模型 ID。 | 必填 |
messages | array | 截至当前的对话消息数组。 | 必填 |
max_tokens | integer | 生成回复时允许的最大 token 数。 | null |
temperature | number | 采样温度,范围通常在 0 到 2 之间。 | 1 |
top_p | number | 另一种采样控制方式,即 nucleus sampling。 | 1 |
n | integer | 为每条输入消息生成多少个 completion 结果。 | 1 |
stream | boolean | 若开启,则像 ChatGPT 一样以增量消息方式返回。 | false |
stop | string or array | 最多 4 个停止序列,命中后停止继续生成。 | null |
presence_penalty | number | 根据 token 是否已出现过,调整新 token 的概率。 | 0 |
frequency_penalty | number | 根据 token 的出现频率,调整新 token 的概率。 | 0 |
logit_bias | map | 调整指定 token 出现的概率。 | null |
user | string | 代表终端用户的唯一标识,可用于监控和滥用检测。 | null |
tool_choice | string or object | 控制模型是否以及如何调用工具。 | none |
tools | array | 模型可以调用的工具列表。 | null |
Provider 原生 API
对于一些高级场景,如果你需要统一 OpenAI 兼容接口中没有暴露的 provider 特有字段或能力,可以直接请求 provider 的原生接口。这种情况下你必须带上vendor 请求头。
YouRouter 会将整个请求体,以及除
Authorization 外的所有请求头,原样转发给上游。更多说明见 请求透传。Gemini(Google)
Generate Content
Endpoint:POST /v1/projects/cognition/locations/us/publishers/google/models/{model}:generateContent
Safety Settings
你可以通过在请求中加入safetySettings 来配置内容安全阈值。完整的分类和阈值列表,请参考官方 Google AI 文档。
Claude(Anthropic)
Messages API
Endpoint:POST /v1/messages
Claude 的工具调用
你可以给 Claude 提供一组工具,它会根据用户请求决定何时调用。整个流程依然是多步对话:你的代码负责执行工具,再把结果回传给 Claude。 下面是一个完整的工具调用生命周期示例:最佳实践
- 路由:生产环境建议使用
auto获得更高可用性。只有在需要固定模型版本或特有能力时,才固定 provider。详见 路由指南。 - 错误处理:网络问题和 provider 故障都可能发生,建议实现可靠的错误处理与指数退避重试,尤其是长耗时任务。
- 流式输出:凡是面向用户的交互型应用,都建议开启流式输出,提升实时性和体验。
- 系统提示词:高质量的 system prompt 对模型行为、语气和风格影响很大,建议持续测试和优化。
- Token 管理:始终关注输入上下文和输出生成的 token 限制,并利用响应中的
usage信息跟踪成本与截断风险。