"id": str(uuid.uuid4()),
"method": "message/stream",
"params": {"message": build_message(text)},
with requests.post(URL, headers=HEADERS, json=payload, stream=True, timeout=120) as response:
response.raise_for_status()
response.encoding = "utf-8"
for line in response.iter_lines(decode_unicode=True):
if not line or not line.startswith("data:"):
event = json.loads(line[len("data:"):].strip())
result = event.get("result", {})
state = result.get("status", {}).get("state")
parts = result.get("status", {}).get("message", {}).get("parts", [])
text_delta = "".join(part.get("text", "") for part in parts if part.get("kind") == "text")
print(text_delta, end="", flush=True)
if state in {"completed", "failed", "canceled"}: