📖 Nội dung bài học
Tóm tắt
Khi xây dựng giao diện chat với các model AI, người dùng mong muốn thấy phản hồi xuất hiện ngay lập tức thay vì phải chờ 10-30 giây để có phản hồi đầy đủ. Hàm converse_stream giải quyết vấn đề này bằng cách streaming văn bản khi nó được tạo ra, tạo ra trải nghiệm người dùng tốt hơn nhiều.
Cách Streaming Hoạt Động
Thay vì chờ toàn bộ phản hồi được tạo ra, streaming gửi lại các phần văn bản ngay khi chúng có sẵn. Đây là cách luồng thay đổi:

Khi bạn gọi converse_stream, bạn sẽ nhận lại ngay một phản hồi ban đầu có chứa một đối tượng stream. Stream này là một generator tạo ra các event khi model tạo ra văn bản. Mỗi event chứa một phần nhỏ của phản hồi tổng thể.
Triển khai cơ bản
Đây là cách dùng converse_stream trong code của bạn:
messages = []
add_user_message(messages, "Write a 1 sentence description of a fake database")
response = client.converse_stream(messages=messages, modelId=model_id)
for event in response["stream"]:
print(event)
Code này sẽ in ra tất cả các event khác nhau khi chúng đến. Bạn sẽ thấy phản hồi đến theo từng phần thay vì tất cả cùng một lúc.
Hiểu các Event của Stream
Stream tạo ra một số loại event, mỗi loại phục vụ một mục đích khác nhau:

Đối với việc tạo văn bản cơ bản, bạn chỉ cần quan tâm đến các event contentBlockDelta. Chúng chứa các phần văn bản thực tế được tạo ra mà bạn muốn hiển thị cho người dùng.

Các event luôn đến theo một thứ tự có thể dự đoán được: messageStart, nhiều event contentBlockDelta chứa văn bản của bạn, sau đó là contentBlockStop, messageStop và cuối cùng là metadata.
Trích xuất Văn bản
Để chỉ lấy văn bản được tạo ra từ mỗi phần, hãy lọc các event contentBlockDelta và trích xuất văn bản:
text = ""
for event in response["stream"]:
if "contentBlockDelta" in event:
chunk = event["contentBlockDelta"]["delta"]["text"]
print(chunk, end="")
text += chunk
print("\n\nTotal Message:\n" + text)
Tham số end="" loại bỏ dấu xuống dòng tự động mà hàm print của Python thêm vào, làm cho văn bản streaming xuất hiện tự nhiên hơn.
Ứng dụng thực tế
Trong một ứng dụng thực tế, thay vì in ra từng phần, bạn thường sẽ:
- Gửi từng phần đến frontend của bạn thông qua WebSocket hoặc Server-Sent Events
- Cập nhật UI để hiển thị phản hồi đang tăng lên trong thời gian thực
- Lưu trữ thông báo đầy đủ sau khi
streamingkết thúc - Xử lý mọi lỗi có thể xảy ra trong quá trình
streaming
Cách tiếp cận streaming này chuyển đổi trải nghiệm người dùng từ "gửi và chờ" thành "gửi và xem phản hồi xuất hiện", làm cho các ứng dụng hỗ trợ AI của bạn có cảm giác đáp ứng và hấp dẫn hơn nhiều.
Tải xuống
🔁 Bài học liên quan
- Bài tiếp: Controlling model output
- Bài trước: Temperature
- Cùng section: Overview of Claude Models · Accessing the API · Making a request
- Thuộc lộ trình: Path C
- Docs tham khảo: Glossary · Skills atlas · By use-case
📚 Nguồn & ghi nhận
- Bài học gốc Anthropic Academy: https://anthropic.skilljar.com/claude-in-amazon-bedrock/276721
- © 2025 Anthropic. Chỉ dùng cho mục đích giáo dục, fair-use.
- Crawl: — · Chuẩn hoá: 2026-05-01