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.

La función de citas está actualmente disponible en Claude Opus 4, Claude Sonnet 4, Claude Sonnet 3.7, Claude Sonnet 3.5 (nuevo) y Haiku 3.5.

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. Cuando uses 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 indique explícitamente que use citas dentro de ese formato. Por ejemplo, si se le pide al modelo que use etiquetas en su respuesta, deberías añadir algo como “Siempre usa citas en tu respuesta, incluso dentro de .”

Por favor, comparte tus comentarios y sugerencias sobre la función de citas usando este formulario.

Aquí hay 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-opus-4-20250514",
    "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 soluciones de citas basadas en prompts, la función de citas tiene las siguientes ventajas:

  • Ahorro de costos: Si tu enfoque basado en prompts le pide a Claude que genere citas directas, puedes ver ahorros de costos debido al hecho de que cited_text no cuenta para tus tokens de salida.
  • Mejor fiabilidad de citas: Debido a que analizamos las citas en los respectivos formatos de respuesta mencionados anteriormente y extraemos cited_text, se garantiza que las citas contengan punteros válidos a los documentos proporcionados.
  • Mejor calidad de citas: En nuestras evaluaciones, encontramos que la función de citas es significativamente más propensa a citar las citas más relevantes de los documentos en comparación con enfoques puramente basados en prompts.

Cómo funcionan las citas

Integra las citas con Claude en estos pasos:

1

Proporciona documento(s) y habilita las citas

  • Incluye documentos en cualquiera de los formatos compatibles: PDFs, texto plano o documentos de contenido personalizado
  • Establece 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.
  • Ten en cuenta que actualmente solo se admiten citas de texto y las citas de imágenes aún no son posibles.
2

Los documentos se procesan

  • El contenido de los documentos se “fragmenta” para definir la granularidad mínima de las posibles citas. Por ejemplo, la fragmentación de oraciones permitiría a Claude citar una sola oración o encadenar varias oraciones consecutivas para citar un párrafo (¡o más largo!)
    • Para PDFs: El texto se extrae como se describe en Soporte de PDF y el contenido se fragmenta en oraciones. Actualmente no se admite la citación de imágenes de PDFs.
    • Para documentos de texto plano: El contenido se fragmenta en oraciones que pueden ser citadas.
    • Para documentos de contenido personalizado: Tus bloques de contenido proporcionados se utilizan tal cual y no se realiza ninguna fragmentación adicional.
3

Claude proporciona respuesta con citas

  • Las respuestas ahora pueden incluir múltiples bloques de texto donde cada bloque de texto puede contener una afirmación que Claude está haciendo y una lista de citas que respaldan la afirmación.
  • Las citas hacen referencia a ubicaciones específicas en los documentos fuente. El formato de estas citas depende del tipo de documento que se está citando.
    • Para PDFs: las citas incluirán el rango de números de página (indexado desde 1).
    • Para documentos de texto plano: Las citas incluirán el rango de índices de caracteres (indexado desde 0).
    • Para documentos de contenido personalizado: Las citas incluirán el rango de índices de bloques de contenido (indexado desde 0) correspondiente a la lista de contenido original proporcionada.
  • Se proporcionan índices de documentos para indicar la fuente de referencia y están indexados desde 0 según la lista de todos los documentos en tu solicitud original.

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), utiliza 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 RAG, deberías poner cada fragmento 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 poner los fragmentos RAG en documento(s) de contenido personalizado.

Contenido citable vs no citable

  • El texto que se encuentra dentro del contenido source de un documento puede ser citado.
  • title y context son campos opcionales que se pasarán al modelo pero no se utilizarán para el contenido citado.
  • title está limitado en longitud, por lo que puedes encontrar útil el campo context para almacenar cualquier metadato del documento como texto o json convertido a cadena.

Índices de citas

  • Los índices de documentos están indexados desde 0 a partir de la lista de todos los bloques de contenido de documentos en la solicitud (abarcando todos los mensajes).
  • Los índices de caracteres están indexados desde 0 con índices finales exclusivos.
  • Los números de página están indexados desde 1 con números de página finales exclusivos.
  • Los índices de bloques de contenido están indexados desde 0 con índices finales exclusivos de la lista content proporcionada en el documento de contenido personalizado.

Costos de tokens

  • Habilitar las citas implica un ligero aumento en los tokens de entrada debido a las adiciones del prompt del sistema y la fragmentación del documento.
  • Sin embargo, la función de citas es muy eficiente con los tokens de salida. Internamente, el modelo genera citas en un formato estandarizado que luego se analizan en texto citado e índices de ubicación de documentos. El campo cited_text se proporciona por conveniencia y no cuenta para los tokens de salida.
  • Cuando se pasan en turnos de conversación posteriores, cited_text tampoco se cuenta para los tokens de entrada.

Compatibilidad de funciones

Las citas funcionan junto con otras funciones de la API, incluido el almacenamiento en caché de prompts, conteo de tokens y procesamiento por lotes.

Uso de almacenamiento en caché de prompts con citas

Las citas y el almacenamiento en caché de prompts pueden usarse juntos de manera efectiva.

Los bloques de citas generados en las respuestas no se pueden almacenar 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.

import anthropic

client = anthropic.Anthropic()

# Contenido de documento largo (por ejemplo, documentación técnica)
long_document = "This is a very long document with thousands of words..." + " ... " * 1000  # Longitud mínima almacenable en caché

response = client.messages.create(
    model="claude-opus-4-20250514",
    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"}  # Almacenar en caché el contenido del documento
                },
                {
                    "type": "text",
                    "text": "What does this document say about API features?"
                }
            ]
        }
    ]
)

En este ejemplo:

  • El contenido del documento se almacena en caché usando cache_control en el bloque del documento
  • Las citas están habilitadas en el documento
  • Claude puede generar respuestas con citas mientras se beneficia del contenido del documento almacenado en caché
  • Las solicitudes posteriores que utilicen el mismo documento se beneficiarán del contenido almacenado en caché

Tipos de documentos

Elegir un tipo de documento

Admitimos tres tipos de documentos para citas. Los documentos pueden proporcionarse directamente en el mensaje (base64, texto o URL) o cargarse a través de la API de archivos y referenciarse por file_id:

TipoMejor paraFragmentaciónFormato de cita
Texto planoDocumentos de texto simples, prosaOraciónÍndices de caracteres (indexados desde 0)
PDFArchivos PDF con contenido de textoOraciónNúmeros de página (indexados desde 1)
Contenido personalizadoListas, transcripciones, formato especial, citas más granularesSin fragmentación adicionalÍndices de bloque (indexados desde 0)

Documentos de texto plano

Los documentos de texto plano se fragmentan automáticamente en oraciones. Puedes proporcionarlos en línea o por referencia con su file_id:

{
    "type": "document",
    "source": {
        "type": "text",
        "media_type": "text/plain",
        "data": "Contenido de texto plano..."
    },
    "title": "Título del documento", # opcional
    "context": "Contexto sobre el documento que no será citado", # opcional
    "citations": {"enabled": True}
}

Documentos PDF

Los documentos PDF pueden proporcionarse 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 son compatibles, los PDF que son escaneos de documentos y no contienen texto extraíble no serán citables.

{
    "type": "document",
    "source": {
        "type": "base64",
        "media_type": "application/pdf",
        "data": datos_pdf_codificados_base64
    },
    "title": "Título del documento", # opcional
    "context": "Contexto sobre el documento que no será citado", # opcional
    "citations": {"enabled": True}
}

Documentos de contenido personalizado

Los documentos de contenido personalizado te dan control sobre la granularidad de las citas. No se realiza 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 que no será citado", # opcional
    "citations": {"enabled": True}
}

Estructura de respuesta

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": "el césped es verde",
            "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": " y "
        },
        {
            "type": "text",
            "text": "el cielo es azul",
            "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
            }]
        }
    ]
}

Soporte de streaming

Para respuestas en streaming, hemos añadido un tipo citations_delta que contiene una sola cita para ser añadida a la lista citations en el bloque de contenido text actual.