建立 Interaction 時,您可以設定 stream: true,使用伺服器傳送事件 (SSE) 逐步串流回應。
Python
from google import genai
client = genai.Client()
stream = client.interactions.create(
model="gemini-3.5-flash",
input="Count from 1 to 25.",
stream=True,
)
for event in stream:
if event.event_type == "step.delta":
if event.delta.type == "text":
print(event.delta.text, end="", flush=True)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const stream = await client.interactions.create({
model: "gemini-3.5-flash",
input: "Count from 1 to 25.",
stream: true,
});
for await (const event of stream) {
if (event.event_type === "step.delta") {
if (event.delta.type === "text") {
process.stdout.write(event.delta.text);
}
}
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
--no-buffer \
-d '{
"model": "gemini-3.5-flash",
"input": "Count from 1 to 25.",
"stream": true
}'
event: interaction.created
data: {"interaction":{"id":"v1_...","status":"in_progress","object":"interaction","model":"gemini-3.5-flash"},"event_type":"interaction.created"}
event: interaction.status_update
data: {"interaction_id":"v1_...","status":"in_progress","event_type":"interaction.status_update"}
event: step.start
data: {"index":0,"step":{"type":"thought"},"event_type":"step.start"}
event: step.delta
data: {"index":0,"delta":{"signature":"...","type":"thought_signature"},"event_type":"step.delta"}
event: step.stop
data: {"index":0,"event_type":"step.stop"}
event: step.start
data: {"index":1,"step":{"type":"model_output"},"event_type":"step.start"}
event: step.delta
data: {"index":1,"delta":{"text":"1, 2, 3, 4, 5, 6, ","type":"text"},"event_type":"step.delta"}
event: step.delta
data: {"index":1,"delta":{"text":"7, 8, 9, 10, 11, 12, 13,","type":"text"},"event_type":"step.delta"}
...
event: step.stop
data: {"index":1,"event_type":"step.stop"}
event: interaction.completed
data: {"interaction":{"id":"v1_...","status":"completed","usage":{"total_tokens":346,"total_input_tokens":11,"input_tokens_by_modality":[{"modality":"text","tokens":11}],"total_cached_tokens":0,"total_output_tokens":90,"total_tool_use_tokens":0,"total_thought_tokens":245},"created":"2026-05-12T18:44:51Z","updated":"2026-05-12T18:44:51Z","service_tier":"standard","object":"interaction","model":"gemini-3.5-flash"},"event_type":"interaction.completed"}
event: done
data: [DONE]
事件類型
每個伺服器傳送的事件都包含名為 event_type 的事件和相關聯的 JSON 資料。Interactions API 使用對稱串流模型,所有內容 (文字、工具呼叫、思考) 都會透過一致的步驟式事件流動。
每個串流都會遵循下列事件流程:
interaction.created:互動已建立,包含中繼資料 (ID、模型、狀態)。- 一系列的步驟,每個步驟都包含:
step.start事件,表示步驟類型 (例如model_output、thought、function_call)。- 一或多個
step.delta事件,其中包含該步驟的增量資料。 step.stop事件,將步驟標示為完成。
- 含有最終
usage統計資料的interaction.completed事件。
設定 stream: false 時,API 會傳回含有 steps 陣列的單一 interaction 物件。steps 中的每個元素都是一個 step.start → step.delta(s) → step.stop 週期完整組裝的版本。
interaction.created
首次建立互動時傳送。包含互動 ID、模型和初始狀態。
event: interaction.created
data: {"interaction": {"id": "...", "model": "gemini-3.5-flash", "status": "in_progress", "object": "interaction"}, "event_type": "interaction.created"}
interaction.status_update
發出互動層級狀態轉換的信號。可能會顯示在步驟之間。
event: interaction.status_update
data: {"interaction_id": "...", "status": "in_progress", "event_type": "interaction.status_update"}
step.start
標示新步驟的開頭。包含步驟 type 和 index。步驟類型會決定預期的 delta 類型,以及步驟在非串流回應中的顯示方式:
| 步驟類型 | 預期差異類型 | 說明 |
|---|---|---|
model_output |
text、image、audio |
模型的最終回覆內容。 |
thought |
thought_signature、thought_summary |
關聯思考推論。只有在啟用 thinking_summaries 時,才會顯示 summary。 |
function_call |
arguments_delta |
要求用戶端執行函式。將互動狀態設為 requires_action。 |
| 伺服器端工具 | 依工具而異 | API 執行的工具 (例如 google_search_call、google_search_result、code_execution_call、code_execution_result)。 |
如需完整清單,請參閱 Interactions API 參考資料。
event: step.start
data: {"index": 0, "step": {"type": "model_output"}, "event_type": "step.start"}
如果是函式呼叫,這個步驟會包含函式名稱、ID 和空白引數 {}。
event: step.start
data: {"index": 0, "step": {"type": "function_call", "id":"un6k8t18", "name": "get_weather", "arguments":{}}, "event_type": "step.start"}
step.delta
目前步驟的增量資料。delta 物件包含 type 欄位,可決定形狀。
範例:
text:model_output 步驟的增量文字權杖:
event: step.delta
data: {"index": 0, "delta": {"type": "text", "text": "Hello, my name is Phil"}, "event_type": "step.delta"}
event: step.delta
data: {"index": 0, "delta": {"type": "text", "text": ", and I live in Germany." }, "event_type": "step.delta"}
image:來自 model_output 步驟的 Base64 編碼圖片資料:
event: step.delta
data: {"index": 0, "delta": {"type":