Đối thoại nhiều lượt
Chat Completions là một API không trạng thái: mô hình sẽ không nhớ yêu cầu trước đó. Nguyên lý của đối thoại nhiều lượt là—— mỗi lần gửi yêu cầu đều mang theo đầy đủ các tin nhắn lịch sử.
Cách dùng cơ bản
messages = [ {"role": "system", "content": "你是一个简洁的中文助手。"}, {"role": "user", "content": "什么是向量数据库?"},]r1 = client.chat.completions.create(model="gpt-5.5", messages=messages)messages.append({"role": "assistant", "content": r1.choices[0].message.content})
messages.append({"role": "user", "content": "它和 Elasticsearch 有什么区别?"})r2 = client.chat.completions.create(model="gpt-5.5", messages=messages)Ở vòng thứ hai, mô hình có thể hiểu “nó” đang chỉ gì, vì toàn bộ lịch sử đã nằm trong messages.
Quản lý ngữ cảnh
Lịch sử càng dài, số token đầu vào càng nhiều, chi phí càng cao, và có thể vượt quá giới hạn ngữ cảnh của mô hình. Các chiến lược thường dùng:
| Chiến lược | Cách làm | Phù hợp |
|---|---|---|
| Cửa sổ trượt | Chỉ giữ N lượt gần nhất + system | CSKH, trò chuyện |
| Nén bằng tóm tắt | Dùng mô hình giá rẻ để nén lịch sử cũ thành bản tóm tắt | Trợ lý hội thoại dài |
| Tăng cường truy xuất | Đưa lịch sử vào vector database, truy xuất theo nhu cầu các đoạn liên quan | Ứng dụng tri thức |
Lưu ý
- Tin nhắn
systemnên luôn được giữ ở dòng đầu tiên, và tận dụng tính phí cache để giảm chi phí lặp lại; - Khi cắt bớt lịch sử, hãy xóa theo “lượt” (cặp user+assistant), đừng cắt ngang giữa chừng;
- Khi chuyển đổi giữa các mô hình (ví dụ từ GPT sang Claude), không cần đổi định dạng lịch sử, chỉ cần thay
modellà được.