Source: https://aiprimetech.io/vi/docs/api-reference/streaming/ [Trang chủ](/vi/) / [Tài liệu](/vi/docs/) / Truyền dữ liệu theo luồng # Truyền dữ liệu theo luồng Sự kiện do máy chủ gửi ở cả hai định dạng — cấu trúc sự kiện khác nhau và nhầm lẫn giữa chúng sẽ khiến bạn tưởng rằng không có phản hồi. Sao chép trang [ Xem dưới dạng Markdown](/vi/docs/api-reference/streaming.md) [ Hỏi ChatGPT](https://chatgpt.com/?q=Read%20https%3A//aiprimetech.io/docs/api-reference/streaming.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) [ Hỏi trong Claude](https://claude.ai/new?q=Read%20https%3A//aiprimetech.io/docs/api-reference/streaming.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) Đặt stream thành true và phản hồi sẽ trở thành text/event-stream. Cả hai endpoint đều truyền luồng, nhưng chúng phát ra các cấu trúc sự kiện khác nhau. ## Định dạng Anthropic ``` Copycurl -N https://aiprimetech.io/v1/messages \ -H "x-api-key: $CLAUDEAPIKEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{"model":"claude-sonnet-4-6","max_tokens":512,"stream":true, "messages":[{"role":"user","content":"Count to five"}]}' ``` ``` Copyevent: message_start data: {"type":"message_start","message":{"id":"msg_...","usage":{"input_tokens":9}}} event: content_block_delta data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"One"}} event: message_delta data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":14}} event: message_stop data: {"type":"message_stop"} ``` Văn bản được gửi trong content_block_delta các sự kiện tại delta.text. Số token đầu ra cuối cùng được gửi trong message_delta, không phải message_start. ## Định dạng OpenAI ``` Copydata: {"choices":[{"delta":{"content":"One"},"index":0}]} data: {"choices":[{"delta":{},"finish_reason":"stop","index":0}]} data: [DONE] ``` Văn bản được gửi tại choices[0].delta.content, và luồng kết thúc bằng giá trị đánh dấu nguyên văn data: [DONE] không phải là JSON. Sự không khớp này tạo ra phản hồi rỗng mà không có lỗi: một ứng dụng khách phân tích choices[].delta.content từ luồng Messages luôn không tìm thấy gì và báo thành công. Nếu việc truyền luồng có vẻ hoạt động nhưng không trả về gì, hãy kiểm tra cấu trúc bạn đang phân tích. ## Python, SDK Anthropic ``` Copyfrom anthropic import Anthropic client = Anthropic(api_key=class="s">"sk-your-key", base_url=class="s">"https://aiprimetech.io") with client.messages.stream( model=class="s">"claude-sonnet-4-6", max_tokens=512, messages=[{class="s">"role": class="s">"user", class="s">"content": class="s">"Count to five"}], ) as stream: for text in stream.text_stream: print(text, end=class="s">"", flush=True) ``` ## Lưu ý vận hành - Sử dụng curl -N khi kiểm thử thủ công, nếu không curl sẽ lưu toàn bộ luồng vào bộ đệm và trông như không có gì đang diễn ra. - Tắt cơ chế lưu vào bộ đệm của proxy phía trước ứng dụng của bạn (proxy_buffering off trong nginx), nếu không ứng dụng khách sẽ nhận toàn bộ phản hồi cùng lúc vào cuối quá trình. - Nếu kết nối bị ngắt giữa luồng, các token đã được tạo vẫn bị tính phí. - Truyền luồng không thay đổi giá — chỉ thay đổi thời điểm các byte đến. [API MessagesTài liệu tham khảo về chế độ không truyền luồng](/vi/docs/api-reference/messages/)[LỗiLỗi giữa luồng](/vi/docs/api-reference/errors/)[Khắc phục sự cốPhản hồi rỗng](/vi/docs/guides/troubleshooting/) [TrướcĐiểm cuối mô hình](/vi/docs/api-reference/models-endpoint/)[Tiếp theoLỗi](/vi/docs/api-reference/errors/)