Citations trong Claude API: trích dẫn nguyên văn, đúng vị trí, rẻ hơn
Tóm tắt
Citations trả về đoạn trích nguyên văn kèm vị trí chính xác trong tài liệu, đáng tin và rẻ hơn dặn bằng prompt vì cited_text không tính output token. Chọn đúng loại tài liệu và lưu ý không dùng chung với structured outputs.
Chatbot trả lời dựa trên tài liệu nội bộ, nhưng người dùng hỏi lại: "Câu này lấy ở đâu?". Bạn có thể dặn model "hãy trích dẫn" trong prompt, nhưng trích dẫn đó có thể sai vị trí, thậm chí bịa câu không có trong tài liệu. Tính năng Citations của Claude API giải quyết tận gốc: API trả về đoạn trích nguyên văn kèm vị trí chính xác trong tài liệu gốc, được đảm bảo trỏ tới nội dung có thật.
Bật citations
{
"type": "document",
"source": {"type": "text", "media_type": "text/plain",
"data": "Chính sách đổi trả trong 30 ngày..."},
"title": "Chính sách bán hàng",
"citations": {"enabled": true}
}
Đặt khối document này trong content của message người dùng, kèm câu hỏi. Câu trả lời sẽ gồm nhiều khối text, khối nào dựa trên tài liệu thì có mảng citations.
Ba loại tài liệu
| Loại | Hợp với | Cắt nhỏ | Vị trí trích dẫn |
|---|---|---|---|
| Plain text | Văn bản thường | Theo câu | Chỉ số ký tự (từ 0) |
| PDF có lớp chữ | Theo câu | Số trang (từ 1) | |
| Custom content | Danh sách, transcript, chunk RAG | Không cắt thêm | Chỉ số block (từ 0) |
Muốn Claude trích được từng câu trong chunk RAG, đặt mỗi chunk vào một document plain text. Muốn giữ nguyên ranh giới chunk, dùng custom content.
Kết quả trả về
{
"type": "text",
"text": "Khách được đổi trả trong 30 ngày",
"citations": [{
"type": "char_location",
"cited_text": "Chính sách đổi trả trong 30 ngày...",
"document_index": 0,
"start_char_index": 0, "end_char_index": 34
}]
}
Vì sao tốt hơn trích dẫn bằng prompt?
- Đáng tin: trích dẫn được API parse ra, đảm bảo trỏ hợp lệ vào tài liệu đã cung cấp.
- Chất lượng: theo đánh giá của Anthropic, tính năng này trích đúng đoạn liên quan nhất tốt hơn đáng kể so với cách dùng prompt thuần.
- Tiết kiệm:
cited_textkhông tính vào output token, và khi gửi lại ở lượt sau cũng không tính vào input token. Đổi lại, input tăng nhẹ do phần chỉ dẫn hệ thống và việc cắt tài liệu.
Rủi ro và lưu ý
- Không dùng chung với structured outputs: bật citations và đặt
output_config.formatcùng lúc sẽ nhận lỗi 400, vì trích dẫn phải xen kẽ với văn bản. - PDF scan không trích được: trích dẫn hình ảnh chưa được hỗ trợ; PDF không có lớp chữ thì không có gì để trích.
- Trích dẫn ≠ suy luận đúng: đoạn trích có thật nhưng kết luận rút ra vẫn có thể sai; giao diện nên cho người dùng xem đoạn gốc.
- Kết hợp caching: tài liệu lớn dùng lại nhiều lần nên bật prompt caching để giảm chi phí.
Áp dụng thế nào?
- Dev: Với chatbot RAG, đưa chunk vào document có citations thay vì nhồi vào system prompt; hiển thị
cited_textdạng chú thích bấm được. - Tech Lead: Thêm kiểm tra tự động: câu trả lời không có citation cho nhận định quan trọng thì gắn cờ để review.
- PM: Tính năng "xem nguồn" tăng niềm tin người dùng rõ rệt với nội dung pháp lý, chính sách, y tế.
Nguồn & tham khảo
- Citations — Claude Docs