gen_ai.*, ele pode escrever na Niadra sem chamada nova no caminho da conversa: aponte um exportador OTLP para a Niadra, e cada chamada ao modelo vira as mensagens da conversa, com quem falou e quando. É o jeito mais rápido de começar a construir memória a partir de um agente que você não quer mexer, e um caminho comum para capturar uma plataforma de fornecedor que exporta traces mas não tem integração com a Niadra.
A leitura continua por context(), pelas ferramentas do histórico ou pelo MCP. O OpenTelemetry cobre o lado da escrita.
O endpoint
A Niadra recebe OTLP por HTTP com corpo em JSON (Content-Type: application/json):
Authorization: Bearer, a mesma que o seu agente usaria no SDK, com o escopo track. A resposta é a do OTLP: spans recusados contam em partialSuccess.rejectedSpans, com os motivos em errorMessage. Corpo em protobuf é recusado com 422; configure o exportador em http/json.
O que a Niadra lê de um span
As convenções semânticasgen_ai ainda mudam, e várias gerações de atributos convivem nas bibliotecas em uso hoje. A Niadra lê em cascata, então você não precisa travar a versão de biblioteca por nossa causa:
Duas coisas não têm atributo no OpenTelemetry, então você mesmo marca, no span ou no recurso:
Cada span repete a conversa até ali, então cada mensagem ganha a chave de idempotência da posição dela na conversa: um histórico exportado de novo é deduplicado, em vez de duplicado.
Passos
1. Aponte um exportador para a Niadra
Acrescente um exportador OTLP ao lado do que você já tem, com a codificação em JSON. O SDK de OpenTelemetry para Node.js tem exportador em JSON. O SDK de Python só exporta em protobuf, então mande os spans dele para um OpenTelemetry Collector e deixe o Collector repassar em JSON para a Niadra.2. Marque o canal e o cliente
Marque os atributos da Niadra no span que leva as mensagens, ou uma vez no recurso, para um processo que atende um canal só. Mantenhagen_ai.conversation.id estável durante a conversa inteira: ele vira o conversation_id.
3. Ligue a captura de conteúdo
A maioria das instrumentaçõesgen_ai deixa o conteúdo das mensagens de fora por padrão. A Niadra precisa dele para construir memória, então ligue a captura de conteúdo na instrumentação que você usa (em muitas instrumentações de Python, OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true). Se preferir manter o conteúdo fora dos seus outros destinos, rode um segundo pipeline só para a Niadra.
4. Confira se os eventos chegaram
Um span vira mensagens com as mesmas garantias de um lote: o conteúdo bruto é gravado antes da resposta e os eventos são ordenados pelo momento em que aconteceram. Leia a linha do tempo do cliente para conferir:Quando usar o SDK
O OpenTelemetry registra o que o modelo viu e disse. O SDK acrescenta o que os traces não levam: o contexto lido antes da resposta e ocontext_stamp de cada turno do agente, a verificação com verify(), a ligação entre handles com identify(), as ações de agente com closes, as transferências e o fim da conversa. É isso que alimenta a medição do aproveitamento do contexto. Um caminho comum é começar pelo OpenTelemetry para construir memória desde o primeiro dia e depois acrescentar context() e as escritas do SDK nos agentes que atendem o cliente.
Próximos passos
Eventos e o lote
o que é um evento e como ele é deduplicado.
Início rápido
ler o contexto com o SDK.
Receber traces OTLP
a referência do endpoint.
Webhooks dos seus sistemas
eventos de CRM, ERP e help desk.

