Bỏ qua nội dung
Trang chính Tin tức Bảng điều khiển

Phản hồi dạng luồng và không luồng

Trang này giải thích việc xử lý phản hồi của lệnh gọi gốc Claude(/v1/messages), cách tích hợp xem tại Claude 原生调用基础

Phản hồi không luồng

{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"content": [{ "type": "text", "text": "……" }],
"stop_reason": "end_turn",
"usage": { "input_tokens": 24, "output_tokens": 180 }
}
  • Nội dung chính nằm trong mảng content, được tổ chức theo từng khối (text / tool_use / thinking), duyệt từng khối rồi nối lại;
  • stop_reason: end_turn kết thúc bình thường, max_tokens bị cắt bớt, tool_use yêu cầu gọi công cụ.

Phản hồi luồng(SSE)

Thêm "stream": true vào request, các sự kiện sẽ được phát theo loại:

Sự kiệnÝ nghĩa
message_startBắt đầu phiên, bao gồm số token đầu vào
content_block_startBắt đầu một khối nội dung (text/tool_use/thinking)
content_block_deltaGia tăng nội dung, chỉ cần nối delta.text
content_block_stopKết thúc khối nội dung hiện tại
message_deltaMetadata cuối (stop_reason, số token đầu ra)
message_stopKết thúc toàn bộ
with client.messages.stream(
model="claude-sonnet-5", max_tokens=1024,
messages=[{"role": "user", "content": "Hãy viết một bài thơ ngắn về biển"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

Lưu ý

  • Khi dùng SDK Anthropic chính thức, các sự kiện này đã được đóng gói sẵn; chỉ khi tự viết SSE mới cần xử lý từng sự kiện;
  • Mức sử dụng token được tính theo message_start(đầu vào)+ message_delta(đầu ra), nhất quán với hóa đơn;
  • Cách phân tích khối thinking trong chế độ suy nghĩ xem tại思考模式