Claude es capaz de proporcionar citas detalladas al responder preguntas sobre documentos, ayudándote a rastrear y verificar las fuentes de información en las respuestas.
Todos los modelos activos admiten citas, con la excepción de Haiku 3.
Citas con Claude Sonnet 3.7
Claude Sonnet 3.7 puede ser menos propenso a hacer citas en comparación con otros modelos de Claude sin instrucciones más explícitas del usuario. Al usar citas con Claude Sonnet 3.7, recomendamos incluir instrucciones adicionales en el turno del user, como "Usa citas para respaldar tu respuesta." por ejemplo.
También hemos observado que cuando se le pide al modelo que estructure su respuesta, es poco probable que use citas a menos que se le diga explícitamente que use citas dentro de ese formato. Por ejemplo, si se le pide al modelo que use etiquetas <result> en su respuesta, deberías agregar algo como "Siempre usa citas en tu respuesta, incluso dentro de las etiquetas <result>."
Por favor comparte tus comentarios y sugerencias sobre la función de citas usando este formulario.
Aquí tienes un ejemplo de cómo usar citas con la API de Messages:
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": "The grass is green. The sky is blue."
},
"title": "My Document",
"context": "This is a trustworthy document.",
"citations": {"enabled": true}
},
{
"type": "text",
"text": "What color is the grass and sky?"
}
]
}
]
}'Comparación con enfoques basados en prompts
En comparación con las soluciones de citas basadas en prompts, la función de citas tiene las siguientes ventajas:
cited_text no cuenta hacia tus tokens de salida.cited_text, las citas están garantizadas de contener punteros válidos a los documentos proporcionados.Integra las citas con Claude en estos pasos:
Fragmentación automática vs contenido personalizado
Por defecto, los documentos de texto plano y PDF se fragmentan automáticamente en oraciones. Si necesitas más control sobre la granularidad de las citas (por ejemplo, para viñetas o transcripciones), usa documentos de contenido personalizado en su lugar. Consulta Tipos de Documentos para más detalles.
Por ejemplo, si quieres que Claude pueda citar oraciones específicas de tus fragmentos RAG, deberías poner cada fragmento RAG en un documento de texto plano. De lo contrario, si no quieres que se haga ninguna fragmentación adicional, o si quieres personalizar cualquier fragmentación adicional, puedes poner fragmentos RAG en documento(s) de contenido personalizado.
source de un documento puede ser citado.title y context son campos opcionales que se pasarán al modelo pero no se usarán hacia el contenido citado.title tiene una longitud limitada, por lo que puedes encontrar útil el campo context para almacenar cualquier metadato del documento como texto o json stringificado.content proporcionada en el documento de contenido personalizado.cited_text se proporciona por conveniencia y no cuenta hacia los tokens de salida.cited_text tampoco se cuenta hacia los tokens de entrada.Las citas funcionan en conjunto con otras funciones de la API incluyendo caché de prompts, conteo de tokens y procesamiento por lotes.
Las citas y el caché de prompts se pueden usar juntos de manera efectiva.
Los bloques de citas generados en las respuestas no se pueden cachear directamente, pero los documentos fuente que referencian sí se pueden cachear. Para optimizar el rendimiento, aplica cache_control a tus bloques de contenido de documentos de nivel superior.
En este ejemplo:
cache_control en el bloque del documentoAdmitimos tres tipos de documentos para citas. Los documentos se pueden proporcionar directamente en el mensaje (base64, texto o URL) o subir a través de la API de Files y referenciar por file_id:
| Tipo | Mejor para | Fragmentación | Formato de cita |
|---|---|---|---|
| Texto plano | Documentos de texto simples, prosa | Oración | Índices de caracteres (indexado desde 0) |
| Archivos PDF con contenido de texto | Oración | Números de página (indexado desde 1) | |
| Contenido personalizado | Listas, transcripciones, formato especial, citas más granulares | Sin fragmentación adicional | Índices de bloques (indexado desde 0) |
Los archivos .csv, .xlsx, .docx, .md y .txt no están soportados como bloques de documentos. Convierte estos a texto plano e incluye directamente en el contenido del mensaje. Consulta Trabajar con otros formatos de archivo.
Los documentos de texto plano se fragmentan automáticamente en oraciones. Puedes proporcionarlos en línea o por referencia con su file_id:
Los documentos PDF se pueden proporcionar como datos codificados en base64 o por file_id. El texto del PDF se extrae y se fragmenta en oraciones. Como las citas de imágenes aún no están soportadas, los PDFs que son escaneos de documentos y no contienen texto extraíble no serán citables.
Los documentos de contenido personalizado te dan control sobre la granularidad de las citas. No se hace fragmentación adicional y los fragmentos se proporcionan al modelo según los bloques de contenido proporcionados.
{
"type": "document",
"source": {
"type": "content",
"content": [
{"type": "text", "text": "Primer fragmento"},
{"type": "text", "text": "Segundo fragmento"}
]
},
"title": "Título del Documento", # opcional
"context": "Contexto sobre el documento del que no se citará", # opcional
"citations": {"enabled": True}
}Cuando las citas están habilitadas, las respuestas incluyen múltiples bloques de texto con citas:
{
"content": [
{
"type": "text",
"text": "Según el documento, "
},
{
"type": "text",
"text": "la hierba es verde",
"citations": [{
"type": "char_location",
"cited_text": "La hierba es verde.",
"document_index": 0,
"document_title": "Documento de Ejemplo",
"start_char_index": 0,
"end_char_index": 20
}]
},
{
"type": "text",
"text": " y "
},
{
"type": "text",
"text": "el cielo es azul",
"citations": [{
"type": "char_location",
"cited_text": "El cielo es azul.",
"document_index": 0,
"document_title": "Documento de Ejemplo",
"start_char_index": 20,
"end_char_index": 36
}]
},
{
"type": "text",
"text": ". La información de la página 5 establece que ",
},
{
"type": "text",
"text": "el agua es esencial",
"citations": [{
"type": "page_location",
"cited_text": "El agua es esencial para la vida.",
"document_index": 1,
"document_title": "Documento PDF",
"start_page_number": 5,
"end_page_number": 6
}]
},
{
"type": "text",
"text": ". El documento personalizado menciona ",
},
{
"type": "text",
"text": "hallazgos importantes",
"citations": [{
"type": "content_block_location",
"cited_text": "Estos son hallazgos importantes.",
"document_index": 2,
"document_title": "Documento de Contenido Personalizado",
"start_block_index": 0,
"end_block_index": 1
}]
}
]
}Para respuestas de streaming, hemos agregado un tipo citations_delta que contiene una sola cita para ser agregada a la lista citations en el bloque de contenido text actual.
Proporcionar documento(s) y habilitar citas
citations.enabled=true en cada uno de tus documentos. Actualmente, las citas deben estar habilitadas en todos o ninguno de los documentos dentro de una solicitud.Los documentos se procesan
Claude proporciona respuesta citada
import anthropic
client = anthropic.Anthropic()
# Contenido de documento largo (por ejemplo, documentación técnica)
long_document = "Este es un documento muy largo con miles de palabras..." + " ... " * 1000 # Longitud mínima cacheable
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "text",
"media_type": "text/plain",
"data": long_document
},
"citations": {"enabled": True},
"cache_control": {"type": "ephemeral"} # Cachear el contenido del documento
},
{
"type": "text",
"text": "¿Qué dice este documento sobre las funciones de la API?"
}
]
}
]
)