For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal

Formato de citas

Permite que los modelos generen citas confiables.

Las citas confiables generan confianza y ayudan a los lectores a verificar la exactitud de las respuestas. Esta guía ofrece recomendaciones prácticas para preparar material que se pueda citar e indicarle al modelo cómo dar formato a las citas de manera eficaz, con patrones que los modelos de OpenAI conocen.

Descripción general

Un sistema de citas tiene muchas partes: decides qué se puede citar, presentas ese material con claridad, le indicas al modelo cómo citarlo y validas el resultado antes de que se muestre al usuario.

Esta guía abarca cinco elementos fundamentales con los que el modelo interactúa directamente:

  1. Unidades que se pueden citar: define qué tiene permitido citar el modelo.
  2. Representación del material: presenta el material de origen en un formato claro y estructurado.
  3. Formato de citas: especifica el formato exacto que el modelo debe usar para las citas.
  4. Instrucciones del prompt: indícale al modelo cuándo citar y cómo hacerlo correctamente.
  5. Análisis de citas: extrae las citas de la respuesta del modelo para su uso posterior.

Elige las unidades que se pueden citar

Antes de escribir prompts, define con claridad qué puede citar el modelo. Estas son algunas opciones comunes:

Unidad que se puede citarIdeal cuandoDesventajaEjemplo
DocumentoSolo necesitas mostrar de qué documento proviene la respuesta.Poca precisión.Cita el manual del empleado completo cuando solo necesites mostrar qué documento respalda la afirmación.
Bloque / fragmentoBuscas un buen equilibrio entre simplicidad y precisión.Aún no permite identificar las líneas exactas.Cita el párrafo específico del contrato o el fragmento recuperado que contiene la cláusula.
Rango de líneasNecesitas mostrar el texto exacto que respalda la afirmación.Mayor dificultad para el modelo.Cita las líneas L42-L47 cuando el usuario necesite verificar el pasaje exacto.

Una buena unidad que se pueda citar debe ser:

  • Consistente: la misma fuente debe conservar el mismo ID entre ejecuciones.
  • Fácil de inspeccionar: una persona debe poder leerla y entender el contexto que la rodea.
  • De un tamaño adecuado: lo suficientemente amplia para tener sentido, pero lo suficientemente acotada para mantener la precisión.

Para la mayoría de los sistemas, las citas a nivel de bloque son la mejor opción predeterminada. Suelen ser más fáciles para el modelo que las citas a nivel de línea y más útiles para los usuarios que las citas a nivel de documento.

Representa el material que se puede citar

El modelo no puede citar material que no se haya presentado con claridad. Ya sea que el material provenga de una herramienta o se inyecte directamente, asegúrate de que tenga:

  • ID de fuente estable: un identificador consistente, como file1 o block1.
  • Texto legible: material de origen con un formato claro.
  • Metadatos (opcional): URL, marcas de tiempo, títulos y contexto similar.

ID de fuente y localizadores: un ID de fuente es un identificador estable, generado por el modelo, como block1. Un localizador es el resaltado preciso que se muestra en la interfaz, como lines L8-L13 o Paragraph 21. En general, el modelo debe generar el ID de fuente, mientras que tu sistema resuelve o muestra el localizador. Mezclar ambos demasiado pronto suele aumentar los errores de formato.

Define el formato de las citas

Debes definir el formato de las citas que generará el modelo. Usa un formato explícito y consistente que el modelo pueda reproducir confiablemente.

A continuación se presentan el formato de citas y los marcadores que recomendamos. Recomendamos especialmente estos marcadores de citas porque son muy similares a los marcadores con los que se entrenan nuestros modelos. Si eliges valores de marcador diferentes, mantén el formato general de las citas lo más parecido posible.

ElementoFunciónRecomendado
CITATION_STARTAbre el marcador de cita.\ue200
Familia de citasIdentifica el tipo de cita. Usa cite para todas las fuentes compatibles.cite
CITATION_DELIMITERSepara los campos dentro del marcador.\ue202
ID de fuenteIdentifica la unidad citada. turn# es el número de turno. item# es el archivo, bloque o URL específico.turn0file1, turn0block1, turn0url1
Localizador (opcional)Acota la cita a un segmento preciso.L8-L13
CITATION_STOPCierra el marcador de cita.\ue201

En las llamadas a herramientas, turnN aumenta una vez por invocación de herramienta, no una vez por cada resultado individual. Dentro de una misma invocación, las fuentes se distinguen mediante sufijos como file0, file1, y así sucesivamente. En un sistema de respuesta única, todas las referencias tendrán la forma turn0... solo si el modelo realiza exactamente una llamada a una herramienta antes de responder. Si realiza varias llamadas a herramientas, podrías ver referencias como turn0fileX, turn1fileX, y así sucesivamente.

Plantilla

{CITATION_START}<citation_family>{CITATION_DELIMITER}<source_id>{CITATION_DELIMITER}<locator>{CITATION_STOP}

Ejemplo

{CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_DELIMITER}L8-L13{CITATION_STOP}

Si tu sistema no usa localizadores, omite ese campo:

{CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_STOP}

Escribe instrucciones eficaces para las citas

Para mantener la máxima exactitud, usa patrones de citas conocidos por el modelo. Los formatos personalizados o poco conocidos aumentan la carga cognitiva del modelo, lo que provoca errores en las citas, especialmente en:

  • un esfuerzo de razonamiento bajo, cuando el modelo dispone de menos recursos para corregir errores de formato.
  • tareas de alta complejidad, donde la mayor parte de los recursos de razonamiento se dedica a resolver la tarea en sí, en lugar de corregir la sintaxis de las citas.

A continuación, recomendamos un formato de citas similar a los patrones que el modelo conoce. Puedes usarlo tal cual o adaptarlo a tu sistema.

Si quieres crear tu propio prompt, define:

  • la sintaxis exacta de los marcadores.
  • dónde se colocan las citas.
  • cuándo citar y cuándo no.
  • cómo citar varias fuentes de respaldo.
  • qué formatos están prohibidos.
  • qué hacer cuando no hay información de respaldo.

Analizar citas

Una vez que el modelo genera citas, debes extraerlas del texto de la respuesta para poder resolver los ID de las fuentes, mostrar enlaces o eliminar los marcadores sin procesar antes de mostrar la respuesta a los usuarios.

El código auxiliar que se muestra a continuación está diseñado para que lo copies directamente en tu aplicación. Analiza citas de una sola fuente, citas de varias fuentes y localizadores opcionales de rangos de líneas, y conserva las posiciones de los caracteres en el texto original.

Este ejemplo solo admite localizadores de líneas y debe adaptarse si tu sistema usa otro formato de localizador.

Si los ID de tus fuentes tienen otra estructura, actualiza SOURCE_ID_RE para que coincida con tu sistema.

Ejemplos

Los siguientes ejemplos muestran dos patrones comunes de citas:

  • Contexto recuperado mediante una herramienta, que devuelve material que se puede citar y sus ID.
  • Contexto inyectado, donde proporcionas bloques que se pueden citar directamente en el prompt.

Dar formato a las citas de contexto recuperado mediante herramientas

Usa este patrón cuando el modelo recupere contexto mediante una herramienta y cite ese contexto en su respuesta.

Definir unidades que se pueden citar

Debes elegir las unidades que se pueden citar según la precisión que requiera tu caso de uso. Los siguientes ejemplos muestran algunas salidas posibles de las herramientas.

Los siguientes ejemplos muestran algunos formatos recomendados para la salida de las herramientas. La herramienta utilizada puede variar según la aplicación, pero lo más importante es que la salida se presente con una estructura clara y estable, como en estos ejemplos.

Escribir instrucciones para el prompt

## Citations

Results are returned by "tool_1". Each message from `tool_1` is called a "source" and identified by its reference ID, which is the first occurrence of `turn\\d+file\\d+` (for example, `turn0file0` or `turn2file1`). In this example, the string `turn0file0` would be the source reference ID.

Citations are references to `tool_1` sources. Citations may be used to refer to either a single source or multiple sources.

A citation to a single source must be written as:
{CITATION_START}cite{CITATION_DELIMITER}turn\d+file\d+{CITATION_STOP}

If line-level citations are supported, a citation to a specific line range must be written as:
{CITATION_START}cite{CITATION_DELIMITER}turn\d+file\d+{CITATION_DELIMITER}L\d+-L\d+{CITATION_STOP}

Citations to multiple sources must be written by emitting multiple citation markers, one for each supporting source.

You must NOT write reference IDs like `turn0file0` verbatim in the response text without putting them between {CITATION_START}...{CITATION_STOP}.

- Place citations at the end of the supported sentence, or inline if the sentence is long and contains multiple supported clauses.
- Citations must be placed after punctuation.
- Cite only retrieved sources that directly support the cited text.
- Never invent source IDs, line ranges, or block locators that were not returned by the tool.
- If multiple retrieved sources materially support a proposition, cite all of them.
- If the retrieved sources disagree, cite the conflicting sources and describe the disagreement accurately.

Ejemplo de salida:

The on-call handoff process is documented in the weekly support sync notes. \ue200cite\ue202turn0file0\ue202L8-L13\ue201

Dar formato a las citas de contexto inyectado

Usa este patrón cuando recuperes o prepares el contexto de antemano y lo inyectes directamente en el prompt.

Definir unidades que se pueden citar

Para el contexto inyectado, un patrón común es encerrar los segmentos de las fuentes entre etiquetas explícitas con ID de referencia estables.

<BLOCK id="block1">
The service agreement states that termination for convenience requires thirty (30) days’ written notice, unless superseded by a customer-specific addendum.
In practice, renewal terms auto-extend for successive one-year periods when no written non-renewal notice is received before the deadline.
Appendix B further clarifies that pricing exceptions must be approved in writing by both Finance and the account owner.
</BLOCK>

<BLOCK id="block2">
Syllabus
</BLOCK>
...

Esto delimita explícitamente la unidad que se puede citar y facilita que el modelo haga referencia a ella.

Escribir instrucciones para el prompt

## Citations

Supporting context is provided directly in the prompt as citable units. Each citable unit is identified by the value of its `id` attribute in the first occurrence of a tag such as `<BLOCK id="block5"> ... </BLOCK>`. In this example, `block5` would be the source reference ID.

Because this pattern does not invoke tools, there is no tool turn counter to increment. That means you do not need to use a `turn#` prefix for the citation marker. You can keep IDs in a `turn0block5` style if that matches the rest of your system, or use plain IDs like `block5` as shown here. The key requirement is that the citation marker matches the injected context ID exactly and consistently.

Citations are references to these provided citable units. Citations may be used to refer to either a single source or multiple sources.

A citation to a single source must be written as:
{CITATION_START}cite{CITATION_DELIMITER}<block_id>{CITATION_STOP}

For example:
{CITATION_START}cite{CITATION_DELIMITER}block5{CITATION_STOP}

Citations to multiple sources must be written by emitting multiple citation markers, one for each supporting block.

You must NOT write block IDs verbatim in the response text without putting them between {CITATION_START}...{CITATION_STOP}.

- Place citations at the end of the supported sentence, or inline if the sentence is long and contains multiple supported clauses.
- Citations must be placed after punctuation.
- Cite only blocks that appear in the provided context.
- Never invent new block IDs.
- Never cite outside knowledge or outside authorities.
- If multiple blocks materially support a proposition, cite all of them.
- If the provided blocks conflict, cite the conflicting blocks and describe the conflict accurately.

Ejemplo de salida:

The Court held that the District Court lacked personal jurisdiction over the petitioner. \ue200cite\ue202block5\ue201

Nota: las herramientas alojadas por OpenAI, como la búsqueda web, proporcionan citas automáticas integradas en el texto. Si prefieres usar herramientas alojadas, consulta la descripción general de las herramientas, la guía de búsqueda web y la guía de búsqueda de archivos.