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_turnkết thúc bình thường,max_tokensbị cắt bớt,tool_useyê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_start | Bắt đầu phiên, bao gồm số token đầu vào |
content_block_start | Bắt đầu một khối nội dung (text/tool_use/thinking) |
content_block_delta | Gia tăng nội dung, chỉ cần nối delta.text |
content_block_stop | Kết thúc khối nội dung hiện tại |
message_delta | Metadata cuối (stop_reason, số token đầu ra) |
message_stop | Kế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
thinkingtrong chế độ suy nghĩ xem tại思考模式。