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

Formatação de citações

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

Citações confiáveis geram confiança e ajudam os leitores a verificar a precisão das respostas. Este guia oferece orientações práticas sobre como preparar materiais que podem ser citados e instruir o modelo a formatar citações de maneira eficaz, usando padrões familiares aos modelos da OpenAI.

Visão geral

Um sistema de citações tem várias partes: você decide o que pode ser citado, representa esse material com clareza, instrui o modelo sobre como citá-lo e valida o resultado antes de exibi-lo ao usuário.

Este guia aborda cinco elementos centrais com os quais o modelo lida diretamente:

  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 no prompt: diga ao modelo quando citar e como fazer isso corretamente.
  5. Análise sintática das citações: extraia as citações da resposta do modelo para uso posterior.

Escolha as unidades citáveis

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

Unidade citávelQuando usarDesvantagemExemplo
DocumentoVocê só precisa mostrar de qual documento veio a resposta.Pouca precisão.Cite o manual do funcionário inteiro quando precisar apenas mostrar qual documento sustenta a afirmação.
Bloco / trechoVocê quer um bom equilíbrio entre simplicidade e precisão.Ainda não identifica as linhas exatas.Cite o parágrafo específico do contrato ou o trecho recuperado que contém a cláusula.
Intervalo de linhasVocê precisa 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 ser:

  • Consistente: a mesma fonte deve manter o mesmo ID entre as execuções.
  • Fácil de examinar: uma pessoa deve conseguir lê-la e entender o contexto ao redor.
  • De tamanho adequado: grande o suficiente para fazer sentido, mas pequena o suficiente para manter a precisão.

Para a maioria dos sistemas, citações por bloco são a melhor opção padrão. Elas costumam ser mais fáceis para o modelo do que citações por linha e mais úteis para os usuários do que citações por documento.

Represente o material citável

O modelo não consegue citar um material que não tenha sido apresentado com clareza. Quer o material venha de uma ferramenta ou seja injetado diretamente, garanta que ele tenha:

  • ID de fonte estável: um identificador consistente, como file1 ou block1.
  • Texto legível: material de origem formatado com clareza.
  • Metadados (opcional): URLs, datas e horários, títulos e informações contextuais semelhantes.

IDs de fonte e localizadores: um ID de fonte é um identificador estável, gerado pelo modelo, como block1. Um 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 resolve ou renderiza o localizador. Misturar os dois cedo demais tende a aumentar os erros de formatação.

Defina o formato das citações

Você precisa definir o formato das citações que o modelo vai gerar. Use um formato explícito, consistente e fácil de reproduzir com confiabilidade pelo modelo.

A seguir, apresentamos o formato de citação e os marcadores que recomendamos. Recomendamos fortemente esses marcadores de citação porque são muito semelhantes aos marcadores usados no treinamento dos nossos modelos. Se escolher outros valores para os marcadores, mantenha o formato geral das citações o mais parecido possível.

ElementoFunçãoRecomendação
CITATION_STARTAbre o marcador de citação.\ue200
Família de citaçõesIdentifica o tipo de citação. Use cite para todas as fontes compatíveis.cite
CITATION_DELIMITERSepara os campos dentro do marcador.\ue202
ID da fonteIdentifica a unidade citada. turn# é o número do turno. item# é o arquivo, bloco ou URL específico.turn0file1, turn0block1, turn0url1
Localizador (opcional)Restringe a citação a um trecho exato.L8-L13
CITATION_STOPFecha o marcador de citação.\ue201

Nas chamadas de ferramenta, turnN é incrementado uma vez por chamada, não por resultado individual. Dentro de uma mesma chamada, as fontes são diferenciadas por sufixos como file0, file1 e assim por diante. Em um sistema de resposta única, todas as referências terão a forma turn0... somente se o modelo fizer exatamente uma chamada de ferramenta antes de responder. Se fizer várias chamadas de ferramenta, você poderá ver referências como turn0fileX, turn1fileX e assim por diante.

Modelo

{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 seu sistema não usa localizadores, omita esse campo:

{CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_STOP}

Escreva instruções eficazes para citações

Para manter a máxima precisão, use padrões de citação familiares ao modelo. Formatos personalizados ou desconhecidos aumentam a carga cognitiva do modelo, levando a erros de citação, especialmente em:

  • baixo esforço de raciocínio, quando o modelo tem menos recursos disponíveis para corrigir erros de formatação.
  • tarefas de alta complexidade, em que a maior parte dos recursos de raciocínio é dedicada a resolver a tarefa em si, em vez de corrigir a sintaxe das citações.

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

Se quiser criar seu próprio prompt, defina:

  • a sintaxe exata dos marcadores.
  • onde inserir as citações.
  • quando citar e quando não citar.
  • como citar várias fontes de apoio.
  • quais formatos são proibidos.
  • o que fazer quando não houver fontes de apoio.

Faça a análise sintática das citações

Depois que o modelo gerar citações, você precisará extraí-las do texto da resposta para resolver os IDs das fontes, renderizar links ou remover os marcadores brutos antes de mostrar a resposta aos usuários.

O código auxiliar abaixo foi desenvolvido para ser copiado diretamente para seu aplicativo. Ele faz a análise sintática de citações de uma ou várias fontes e de localizadores opcionais de intervalos de linhas, preservando as posições dos caracteres no texto original.

Este exemplo oferece suporte apenas a localizadores de linhas e deve ser adaptado se o seu sistema usar outro formato de localizador.

Se os IDs das suas fontes tiverem outro formato, atualize SOURCE_ID_RE para corresponder ao 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 material que pode ser citado e seus IDs.
  • Contexto injetado, em que você fornece blocos que podem ser citados diretamente no prompt.

Formate citações para contexto recuperado por ferramentas

Use este padrão quando o modelo recuperar contexto por meio de uma ferramenta e citar esse contexto na resposta.

Defina as unidades que podem ser citadas

Você deve escolher as unidades que podem ser citadas com base na precisão exigida pelo seu caso de uso. Os exemplos a seguir mostram algumas saídas possíveis de ferramentas.

Os exemplos a seguir mostram alguns formatos recomendados para saídas de ferramentas. A ferramenta usada pode variar de acordo com o aplicativo, mas o mais importante é que a saída tenha uma estrutura clara e estável, como nestes 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 para contexto injetado

Use este padrão quando você recuperar ou preparar o contexto antecipadamente e injetá-lo diretamente no prompt.

Defina as unidades que podem ser citadas

Para contexto injetado, um padrão comum é delimitar os segmentos das fontes com tags explícitas que contenham 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>
...

Isso torna explícita a unidade que pode ser citada e facilita sua 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: Ferramentas hospedadas pela OpenAI, como a pesquisa na Web, fornecem citações automáticas 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 de arquivos.