Skip to main content

Citações

As citações vinculam trechos de uma resposta do assistente às fontes que os sustentam. Ative enableCitations ao criar ou retomar uma sessão e, em seguida, leia o payload citations nos eventos assistant.message para exibir notas de rodapé, listas de fontes ou links inline.

Aviso

As citações são um recurso experimental. O nome da opção, o conteúdo do evento e a cobertura do provedor podem ser alterados em uma versão futura.

Como funcionam as citações

As citações são produzidas pelo provedor de modelos, não pelo SDK. O fluxo tem três partes:

  1. Seu aplicativo fornece material citavel, como um anexo de documento ou um resultado de ferramenta que carrega o conteúdo de origem.
  2. O runtime marca esse material como citável na transmissão quando enableCitations estiver ativado. Para modelos da Anthropic, os anexos de arquivo são enviados como blocos document com citações ativadas.
  3. O modelo retorna metadados de citação, e o ambiente de execução os normaliza em um objeto citations independente de provedor no evento final assistant.message.

O suporte ao provedor é limitado. O campo provider em cada registro da fonte indica de onde veio a citação:

Valor do provedorMeaning
anthropicCitação produzida por uma resposta do modelo Claude, da Anthropic
openaiCitação produzida por uma resposta de um modelo da OpenAI
clientCitação sintetizada pelo runtime a partir da saída da ferramenta

Observação

enableCitations Ativar não garante que uma resposta contenha citações. Os modelos só os emitem quando a resposta é baseada em material-fonte citável. Sempre trate o citations campo como opcional.

Habilitar citações em uma sessão

Defina a opção na criação da sessão e defina-a novamente no currículo se desejar citações após uma reinicialização.

Idiomas de código navigation

TypeScript
const session = await client.createSession({
    onPermissionRequest: approveAll,
    enableCitations: true,
});

const resumed = await client.resumeSession(session.sessionId, {
    onPermissionRequest: approveAll,
    enableCitations: true,
});

Ler citações de mensagens do assistente

As citações são recebidas no evento final assistant.message, não nos eventos assistant.message_delta. Aguarde a mensagem final antes de renderizar marcadores de origem.

Idiomas de código navigation

TypeScript
session.on((event) => {
    if (event.type !== "assistant.message" || !event.data.citations) {
        return;
    }

    const { sources, spans } = event.data.citations;
    const sourceById = new Map(sources.map((source) => [source.id, source]));

    for (const span of spans) {
        const quoted = event.data.content.slice(span.startIndex, span.endIndex);
        for (const reference of span.references) {
            const source = sourceById.get(reference.sourceId);
            const label = source?.title ?? source?.url ?? source?.path ?? source?.id;
            console.log(`"${quoted}" — ${label}`);
        }
    }
});

Referência de conteúdo de citação

O objeto citations separa as fontes deduplicadas dos trechos que fazem referência a elas, de modo que uma fonte citada cinco vezes aparece uma única vez em sources.

TipoCampoDescription
CitationssourcesConjunto de fontes sem duplicatas referenciado pelos trechos de citação
CitationsspansTrechos de texto gerado anotados com suas fontes de apoio
CitationSourceidIdentificador estável com escopo de turno referenciado por CitationReference.sourceId
CitationSourceproviderSistema que produziu a citação: anthropic, openaiou client
CitationSourcetitle?Título legível da fonte
CitationSourceurl?URL da origem, quando é um recurso da Web
CitationSourcepath?Caminho do arquivo relativo à raiz do espaço de trabalho do agente, quando a origem é um arquivo
CitationSpanstartIndexIniciar deslocamento no conteúdo da mensagem final (unidades de código UTF-16, baseadas em zero, inclusive)
CitationSpanendIndexDeslocamento final no conteúdo da mensagem final (unidades de código UTF-16, baseadas em zero, exclusivas)
CitationSpanreferencesAs fontes que dão suporte a esse intervalo
CitationReferencesourceIdIdentificador do(a) CitationSource para o(a) qual esta referência aponta
CitationReferencecitedText?Texto exato da origem que dá suporte ao intervalo, quando o modelo o fornece
CitationReferencelocation?Local na fonte que dá suporte ao trecho
CitationReferenceproviderMetadata?Dados de correlação nativos do provedor, passados de forma opaca

Dica

Os offsets de span são medidos em unidades de código UTF-16 em relação à string final content. As cadeias de caracteres typeScript, Java e .NET já são UTF-16, para que você possa segmentá-las diretamente. As cadeias de caracteres em Python são indexadas por ponto de código Unicode, e as strings em Go e Rust usam UTF-8; portanto, converta o conteúdo para unidades de código UTF-16 antes de fatiá-lo, como fazem os exemplos acima.

Locais de citação

CitationReference.location é uma união discriminada indexada por type:

Tipo de localizaçãoCamposUtilização
char
startIndex, endIndexIntervalo de caracteres dentro do texto de origem
page
startPage, endPageIntervalo de páginas em um documento paginado
block
startBlock, endBlockIntervalo de blocos de conteúdo em um documento estruturado

Fornecer fontes citaveis

As citações precisam de material de origem que o modelo possa atribuir. Há duas maneiras de fornecê-lo.

Anexar documentos a uma mensagem

Quando as citações são habilitadas e a sessão usa um provedor de Anthropic, os anexos de arquivo são enviados como document blocos com citações ativadas, de modo que o modelo pode citar passagens deles.

await session.sendAndWait({
    prompt: "Summarize the attached PDF and cite the passages you used.",
    attachments: [
        {
            type: "blob",
            data: pdfBase64,
            displayName: "quarterly-report.pdf",
            mimeType: "application/pdf",
        },
    ],
});

Consulte Entrada de imagem para obter a API de anexos e os formatos de anexo file e blob.

Retornar fontes citaveis de uma ferramenta

Os resultados da ferramenta carregam uma matriz experimental citableSources . Cada entrada fornece content, que o modelo pode citar, juntamente com um id e, opcionalmente, title, url e path. Essas fontes são persistidas com o resultado da ferramenta, portanto permanecem disponíveis após a retomada da sessão, e as citações geradas a partir delas são marcadas com o provedor client.

Limitations

  • As citações são experimentais em cada SDK e não são cobertas por garantias de compatibilidade.
  • A cobertura depende do provedor do modelo. Uma sessão configurada para um provedor sem suporte a citações não emite payload citations.
  • As citações só estão presentes no evento final assistant.message , portanto, os consumidores de streaming não podem renderizá-las no meio da resposta.
  • O código público e as citações de duplicação de IP não fazem parte dessa superfície.

Leitura adicional