Was this page helpful?
Esta función es elegible para Zero Data Retention (ZDR). Cuando tu organización tiene un acuerdo de ZDR, los datos enviados a través de esta función no se almacenan después de que se devuelve la respuesta de la API.
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.
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:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
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?"},
],
}
],
)
print(response)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 para tus tokens de salida.cited_text, se garantiza que las citas contengan referencias válidas a los documentos proporcionados.Integra las citas con Claude siguiendo estos pasos:
Fragmentación automática vs. contenido personalizado
De forma predeterminada, 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 listas con viñetas o transcripciones), usa documentos de contenido personalizado en su lugar. Consulta Tipos de documentos para obtener más detalles.
Por ejemplo, si quieres que Claude pueda citar oraciones específicas de tus fragmentos de RAG, debes colocar cada fragmento de RAG en un documento de texto plano. De lo contrario, si no quieres que se realice ninguna fragmentación adicional, o si quieres personalizar cualquier fragmentación adicional, puedes colocar los fragmentos de RAG en documento(s) de contenido personalizado.
source de un documento puede citarse.title y context son campos opcionales que se pasarán al modelo pero no se usarán como contenido citable.title tiene una longitud limitada, por lo que puede resultarte útil el campo context para almacenar cualquier metadato del documento como texto o JSON convertido a cadena.content proporcionada en el documento de contenido personalizado.cited_text se proporciona por conveniencia y no cuenta para los tokens de salida.cited_text tampoco cuenta para los tokens de entrada.Las citas funcionan en conjunto con otras funciones de la API, incluyendo el almacenamiento en caché de prompts, el conteo de tokens y el procesamiento por lotes.
Las citas y Structured Outputs son incompatibles
Las citas no pueden usarse junto con Structured Outputs. Si habilitas las citas en cualquier documento proporcionado por el usuario (bloques Document o RequestSearchResultBlock) y también incluyes el parámetro output_config.format (o el parámetro obsoleto output_format), la API devolverá un error 400.
Esto se debe a que las citas requieren intercalar bloques de citas con la salida de texto, lo cual es incompatible con las restricciones estrictas de esquema JSON de structured outputs.
Las citas y el almacenamiento en caché de prompts pueden usarse juntos de manera efectiva.
Los bloques de citas generados en las respuestas no pueden almacenarse en caché directamente, pero los documentos fuente a los que hacen referencia sí pueden almacenarse en caché. 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 documentoSe admiten tres tipos de documentos para las citas. Los documentos pueden proporcionarse directamente en el mensaje (base64, texto o URL) o cargarse a través de la Files API y referenciarse mediante file_id:
| Tipo | Ideal para | Fragmentación | Formato de cita |
|---|---|---|---|
| Texto plano | Documentos de texto simples, prosa | Oración | Índices de caracteres (indexados desde 0) |
| Archivos PDF con contenido de texto | Oración | Números de página (indexados desde 1) | |
| Contenido personalizado | Listas, transcripciones, formato especial, citas más granulares | Sin fragmentación adicional | Índices de bloques (indexados desde 0) |
Los archivos .csv, .xlsx, .docx, .md y .txt no se admiten como bloques de documentos. Conviértelos a texto plano e inclúyelos 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 pueden proporcionarse como datos codificados en base64, una URL o mediante file_id. El texto del PDF se extrae y se fragmenta en oraciones. Como aún no se admiten las citas de imágenes, los PDFs que son escaneos de documentos y no contienen texto extraíble no podrán citarse.
Los documentos de contenido personalizado te dan control sobre la granularidad de las citas. No se realiza ninguna 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": "First chunk"},
{"type": "text", "text": "Second chunk"},
],
},
"title": "Document Title", # optional
"context": "Context about the document that will not be cited from", # optional
"citations": {"enabled": True},
}Cuando las citas están habilitadas, las respuestas incluyen múltiples bloques de texto con citas:
{
"content": [
{"type": "text", "text": "According to the document, "},
{
"type": "text",
"text": "the grass is green",
"citations": [
{
"type": "char_location",
"cited_text": "The grass is green.",
"document_index": 0,
"document_title": "Example Document",
"start_char_index": 0,
"end_char_index": 20,
}
],
},
{"type": "text", "text": " and "},
{
"type": "text",
"text": "the sky is blue",
"citations": [
{
"type": "char_location",
"cited_text": "The sky is blue.",
"document_index": 0,
"document_title": "Example Document",
"start_char_index": 20,
"end_char_index": 36,
}
],
},
{
"type": "text",
"text": ". Information from page 5 states that ",
},
{
"type": "text",
"text": "water is essential",
"citations": [
{
"type": "page_location",
"cited_text": "Water is essential for life.",
"document_index": 1,
"document_title": "PDF Document",
"start_page_number": 5,
"end_page_number": 6,
}
],
},
{
"type": "text",
"text": ". The custom document mentions ",
},
{
"type": "text",
"text": "important findings",
"citations": [
{
"type": "content_block_location",
"cited_text": "These are important findings.",
"document_index": 2,
"document_title": "Custom Content Document",
"start_block_index": 0,
"end_block_index": 1,
}
],
},
]
}Para respuestas en streaming, se incluye un tipo citations_delta que contiene una sola cita que debe agregarse a la lista citations en el bloque de contenido text actual.
Proporciona documento(s) y habilita las citas
citations.enabled=true en cada uno de tus documentos. Actualmente, las citas deben estar habilitadas en todos o en ninguno de los documentos dentro de una solicitud.Los documentos se procesan
Claude proporciona una respuesta con citas
client = anthropic.Anthropic()
# Contenido de documento largo (p. ej., documentación técnica)
long_document = (
"This is a very long document with thousands of words..." + " ... " * 1000
) # Minimum cacheable length
response = client.messages.create(
model="claude-opus-4-8",
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"
}, # Cache the document content
},
{
"type": "text",
"text": "What does this document say about API features?",
},
],
}
],
)
print(response)