/v1beta generateContent)呼叫時,響應是 Google 的 candidates / parts 結構,與 OpenAI 相容格式不同。本頁講清非流式(generateContent)與流式(streamGenerateContent)兩種響應怎麼解析。
請求側(base_url 為
https://api.apiyi.com 不帶 /v1、x-goog-api-key 鑑權、thinking_level 思考控制)見 Gemini 原生格式呼叫指南。本頁只講響應側。示例用輕量模型 gemini-3.1-flash-lite。非流式響應
端點…:generateContent,正文在 candidates[0].content.parts[]:
parts 拼接每個 text:
finishReason 是大寫 STOP(不是 OpenAI 的小寫 stop),其它取值如 MAX_TOKENS、SAFETY。一個 part 可能只含 thoughtSignature 而無 text,遍歷時要用 if "text" in p 過濾,否則會 KeyError。thoughtSignature(思維簽名)
Gemini 3 系列會在 part 上附帶thoughtSignature(加密的推理狀態)——實測連輕量的 gemini-3.1-flash-lite 也會返回。
- 單輪:用不到,忽略即可。
- 多輪 / 函式呼叫:要把上一輪響應裡的
thoughtSignature原樣回傳到下一輪的contents中,模型才能延續推理鏈。官方google-genaiSDK 自動處理;手寫 REST 時注意不要丟棄該欄位。詳見 Gemini 函式呼叫。
流式響應(SSE)
端點…:streamGenerateContent,每行 data: {...},每塊的增量在 candidates[0].content.parts[0].text:
usageMetadata 每塊都帶,且是累計值(candidatesTokenCount 隨輸出增長)——以最後一塊為準即可,無需自己累加。與 OpenAI 相容格式的關鍵差異
usage 與計費
thoughtsTokenCount(思考 token)按輸出價計費,可用thinking_level控檔省錢。- 快取命中
cachedContentTokenCount的折扣見 Gemini 快取計費。 - 各欄位完整說明見 Gemini 原生格式呼叫指南 的「用量欄位」一節。
相關連結
- 同組頁面:Gemini 原生格式呼叫指南 · 多模態與程式碼執行 · 函式呼叫
- 相容格式對照:OpenAI 相容模式響應資料處理
- 獲取 / 管理令牌:
https://api.apiyi.com/token