本文示例端点统一为
https://api.apiyi.com,密钥用你的 API易 令牌。涉及模型:gpt-5.4-mini、deepseek-v4-pro、gemini-3.5-flash、claude-sonnet-4-6。核心原理:自己维护历史
记住一句话就够了:模型无状态,对话历史由你(客户端)维护,每轮把全部历史重新发一遍。OpenAI 兼容模式(多模型通用)
最通用的方式,端点/v1/chat/completions。历史放在 messages 数组里,每条带 role(system / user / assistant)。换个 model 名就能用同一套代码调不同模型(gpt、deepseek、claude、gemini…)。
推理模型的历史处理
像deepseek-v4-pro 这样的推理模型,响应里会多一个 reasoning_content(思考过程)字段。
推理模型在响应解析上的更多细节,见 推理模型输出。
OpenAI 原生格式(Responses API)
端点/v1/responses。多轮时把完整历史作为 input 数组传入(每条带 role / content),用法与兼容模式同理:
Gemini 原生格式
端点/v1beta/models/{model}:generateContent。历史放在 contents 数组里,注意 role 取值是 user / model(不是 assistant),每条的内容在 parts 里。
Gemini 3 系列响应的 part 上会带
thoughtSignature(思维签名)。普通文本多轮只回传 text 即可记住上下文(更省 token);只有在函数调用等需要严格推理连续性的场景才需把 thoughtSignature 原样回传——官方 SDK 会自动处理。详见 Gemini 原生调用 与 函数调用。Anthropic 原生格式
端点/v1/messages。历史放在 messages 数组里,role 取值 user / assistant,content 用字符串简写即可。注意 max_tokens 必填。
四种格式对比
| 维度 | OpenAI 兼容 | OpenAI 原生(Responses) | Gemini 原生 | Anthropic 原生 |
|---|---|---|---|---|
| 端点 | /v1/chat/completions | /v1/responses | /v1beta/…:generateContent | /v1/messages |
| 历史字段 | messages | input | contents | messages |
| role 取值 | system/user/assistant | user/assistant | user/model | user/assistant |
| 内容写法 | content 字符串 | content 字符串 | parts: [{text}] | content 字符串 |
| 历史维护方 | 自己拼 | 自己拼 | 自己拼 | 自己拼 |
| 服务端会话状态 | 无 | ⚠️ 不可用 | 无 | 无 |
| 多模型通用 | ✅ 换 model 名即可 | 仅 OpenAI 系 | 仅 Gemini | 仅 Claude |
常见问题
对话越长,费用越高吗?
对话越长,费用越高吗?
历史要保留多少轮?超出上下文怎么办?
历史要保留多少轮?超出上下文怎么办?
没有硬性要求,但历史越长越贵、也可能超出模型上下文窗口。常见策略:① 滑动窗口——只保留最近 N 轮;② 摘要压缩——把早期对话总结成一段话放进 system;③ 始终保留 system 指令 + 最近若干轮。按业务对”记忆深度”的需要权衡。
system / 系统指令放在哪里?
system / 系统指令放在哪里?
OpenAI 兼容与 Anthropic:放在
messages 最前面(兼容模式用 role:"system";Anthropic 用顶层 system 字段或首条消息)。Gemini:用 config.system_instruction。系统指令只需设置一次,不必每轮重复追加。推理模型的思考过程(reasoning_content)要回传吗?
推理模型的思考过程(reasoning_content)要回传吗?
不要。 思考过程是本轮中间产物,历史里只回传最终
content(Gemini 只回传 text)。回传思考既费 token,部分上游还会报错。函数调用场景下 Gemini 的 thoughtSignature 是例外——官方 SDK 会自动处理。能不能让服务端帮我记住对话,不用每次发历史?
能不能让服务端帮我记住对话,不用每次发历史?
在 API易 平台不建议依赖服务端会话状态。OpenAI Responses 的
previous_response_id 经网关转发后不保证生效(实测不记忆)。请统一采用客户端自维护历史的方式,行为最稳定、跨模型一致。相关链接
- 调用基础:OpenAI 兼容模式调用 · OpenAI 原生调用 · Gemini 原生调用 · Claude API 基础
- 响应解析:OpenAI 响应数据处理 · 推理模型输出 · Claude 流式与非流式响应 · Gemini 流式与非流式响应
- 模型与价格:模型与价格总览
- 获取 / 管理令牌:
https://api.apiyi.com/token