本文示例端點統一為
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 必填。
四種格式對比
常見問題
對話越長,費用越高嗎?
對話越長,費用越高嗎?
歷史要保留多少輪?超出上下文怎麼辦?
歷史要保留多少輪?超出上下文怎麼辦?
沒有硬性要求,但歷史越長越貴、也可能超出模型上下文視窗。常見策略:① 滑動視窗——只保留最近 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