For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme

Formatação de citações

Permita que os modelos gerem citações confiáveis.

Citações confiáveis dão aos leitores mais segurança nas respostas e permitem verificar sua exatidão. Este guia mostra como preparar o material que pode ser citado e orientar o modelo a formatar as citações corretamente, usando padrões familiares aos modelos da OpenAI.

Visão geral

Um sistema de citações envolve várias etapas. Você decide o que pode ser citado, apresenta esse material com clareza, orienta o modelo sobre como citá-lo e valida o resultado antes de exibi-lo ao usuário.

Este guia aborda cinco elementos diretamente relacionados à forma como o modelo recebe o material e produz as citações:

  1. Unidades citáveis: defina o que o modelo pode citar.
  2. Representação do material: apresente o material de origem em um formato claro e estruturado.
  3. Formato das citações: especifique o formato exato que o modelo deve usar nas citações.
  4. Instruções do prompt: indique quando o modelo deve citar e como fazer isso corretamente.
  5. Extração das citações: extraia as citações da resposta do modelo para usá-las nas etapas seguintes.

Escolha as unidades citáveis

Antes de escrever os prompts, defina com clareza o que o modelo pode citar. Algumas opções comuns são:

Unidade citável Quando usar Desvantagem Exemplo
Documento Basta mostrar de qual documento veio a resposta. Pouca precisão. Cite o manual do funcionário inteiro quando só precisar indicar qual documento sustenta a afirmação.
Bloco ou trecho Você busca um equilíbrio entre simplicidade e precisão. Não identifica a linha exata. Cite o parágrafo específico do contrato ou o trecho recuperado que contém a cláusula.
Intervalo de linhas É preciso mostrar o texto exato que sustenta a afirmação. É mais difícil para o modelo. Cite as linhas L42-L47 quando o usuário precisar verificar a passagem exata.

Uma boa unidade citável deve ter:

  • Consistência: a mesma fonte deve manter o mesmo ID entre execuções.
  • Facilidade de consulta: quem lê a unidade deve conseguir entender o contexto em que ela aparece.
  • Tamanho adequado: a unidade deve ser extensa o suficiente para fazer sentido e curta o suficiente para manter a precisão.

Na maioria dos sistemas, citar blocos é a melhor opção padrão. Em geral, é mais fácil para o modelo citar blocos do que linhas, e os usuários obtêm referências mais úteis do que quando a citação aponta para o documento inteiro.

Represente o material citável

O modelo só consegue citar material que tenha sido apresentado com clareza. Tanto para material retornado por uma ferramenta quanto para material inserido diretamente, inclua:

  • ID estável da fonte: um identificador consistente, como file1 ou block1.
  • Texto legível: o material de origem com formatação clara.
  • Metadados (opcionais): URLs, datas e horários, títulos e outras informações de contexto.

IDs de fonte e localizadores: o ID da fonte é um identificador estável gerado pelo modelo, como block1. O localizador indica o trecho exato destacado na interface, como lines L8-L13 ou Paragraph 21. Em geral, o modelo deve emitir o ID da fonte, enquanto o sistema identifica ou exibe o trecho correspondente ao localizador. Misturar os dois cedo demais tende a aumentar os erros de formatação.

Defina o formato das citações

Defina o formato das citações que o modelo vai gerar. Escolha um formato explícito e consistente que o modelo consiga reproduzir com facilidade e de maneira confiável.

A tabela a seguir apresenta o formato de citação e os marcadores recomendados. Recomendamos especialmente esses marcadores porque são muito semelhantes aos usados no treinamento dos nossos modelos. Se você escolher outros valores para os marcadores, mantenha o formato geral da citação o mais próximo possível do recomendado.

Elemento Função Valor recomendado
CITATION_START Abre o marcador de citação. \ue200
Família de citações Identifica o tipo de citação. Use cite para todas as fontes compatíveis. cite
CITATION_DELIMITER Separa os campos dentro do marcador. \ue202
ID da fonte Identifica a unidade citada. turn# é o número do turno. item# identifica o arquivo, bloco ou URL específico. turn0file1, turn0block1, turn0url1
Localizador (opcional) Delimita o trecho exato a que a citação se refere. L8-L13
CITATION_STOP Fecha o marcador de citação. \ue201

Em chamadas de ferramenta, turnN aumenta uma vez por chamada, independentemente do número de resultados retornados. Em uma mesma chamada, as fontes se distinguem por sufixos como file0, file1 e assim por diante. Em um sistema de resposta única, todas as referências terão o formato turn0… somente se o modelo fizer exatamente uma chamada de ferramenta antes de responder. Se fizer várias chamadas, poderão aparecer referências como turn0fileX, turn1fileX e assim por diante.

Estrutura

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

Exemplo

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

Se o sistema não usar localizadores, omita esse campo:

{CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_STOP}

Escreva instruções eficazes para citações

Para obter a máxima precisão, use padrões de citação familiares ao modelo. Formatos personalizados ou pouco familiares exigem mais esforço do modelo e podem levar a erros nas citações, especialmente em duas situações:

  • Quando o esforço de raciocínio é baixo, o modelo dispõe de menos recursos para corrigir erros de formatação.
  • Em tarefas complexas, o modelo dedica a maior parte dos recursos de raciocínio à resolução da tarefa em si, o que deixa menos recursos para corrigir a sintaxe das citações.

A seguir, recomendamos um formato de citação próximo dos padrões que o modelo já conhece. Você pode usá-lo como está ou adaptá-lo ao seu sistema.

Se quiser escrever seu próprio prompt, especifique:

  • a sintaxe exata dos marcadores.
  • onde inserir as citações.
  • quando citar e quando não citar.
  • como citar várias fontes que sustentam uma afirmação.
  • quais formatos são proibidos.
  • o que fazer quando nenhuma fonte sustenta a afirmação.

Extraia as citações

Depois que o modelo emitir as citações, extraia-as do texto da resposta. Assim, você pode identificar as fontes pelos IDs, exibir links ou remover os marcadores brutos antes de mostrar a resposta aos usuários.

Você pode copiar o código auxiliar a seguir diretamente para o seu aplicativo. Ele extrai citações de uma ou várias fontes e localizadores opcionais de intervalos de linhas, preservando as posições dos caracteres no texto original.

Este exemplo aceita apenas localizadores de linhas. Adapte-o se o seu sistema usar outro formato de localizador.

Se os IDs das fontes tiverem outro formato, ajuste SOURCE_ID_RE ao padrão do seu sistema.

Exemplos

Os exemplos a seguir mostram dois padrões comuns de citação:

  • Contexto recuperado por uma ferramenta, em que a ferramenta retorna o material citável e os respectivos IDs.
  • Contexto inserido no prompt, em que você fornece os blocos citáveis diretamente no prompt.

Formate citações de contexto recuperado por uma ferramenta

Use esse padrão quando o modelo usar uma ferramenta para recuperar contexto e citar esse material na resposta.

Defina as unidades citáveis

Escolha as unidades citáveis de acordo com a precisão exigida pelo seu caso de uso. Os exemplos a seguir mostram alguns resultados possíveis de uma chamada de ferramenta.

Esses exemplos ilustram alguns formatos recomendados para a saída da ferramenta. A ferramenta usada pode variar conforme o aplicativo. O mais importante é apresentar a saída com uma estrutura clara e estável, como nos exemplos.

Escreva as instruções do 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.

Exemplo de saída:

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

Formate citações de contexto inserido no prompt

Use esse padrão quando você recuperar ou preparar o contexto com antecedência e inseri-lo diretamente no prompt.

Defina as unidades citáveis

Ao inserir o contexto no prompt, uma prática comum é delimitar os trechos de cada fonte com tags explícitas que tenham IDs de referência estáveis.

<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>
...

Assim, a unidade citável fica claramente delimitada, o que facilita a referência pelo modelo.

Escreva as instruções do 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.

Exemplo de saída:

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

Observação: as ferramentas hospedadas pela OpenAI, como a Pesquisa na Web, inserem citações automaticamente no corpo do texto. Se preferir usar ferramentas hospedadas, consulte a visão geral das ferramentas, o guia de Pesquisa na Web e o guia de pesquisa em arquivos.