A Alibaba Cloud define os campos de rastreamento de modelos de linguagem grandes (LLM) com base no padrão OpenTelemetry e em conceitos do domínio de aplicações de LLM. Esses campos estendem atributos, recursos e eventos para descrever a semântica dos dados de rastreamento de aplicações de LLM. Eles capturam operações essenciais, como solicitações de entrada e saída do LLM e consumo de tokens. Além disso, fornecem dados semânticos ricos e contextualizados para cenários como Completion, Chat, Geração Aumentada por Recuperação (RAG), Agent e Tool Calling, permitindo rastreamento e geração de relatórios eficazes.
Esta especificação semântica evolui junto com a comunidade. Se sua aplicação for desenvolvida em Python, colete manualmente os dados de observabilidade. Utilize o componente loongsuite-util-genai para integração e coleta de dados. Para mais detalhes, consulte o README.
As definições de campos no nível de span seguem os padrões abertos do OpenTelemetry. Para descrições detalhadas dos campos de rastreamento de nível superior armazenados no Managed Service for OpenTelemetry da Alibaba Cloud, consulte Trace Explorer parameters.
O SpanKind específico para LLM é um atributo, e não o span kind definido na especificação de rastreamento do OpenTelemetry. Esta especificação semântica estende as Convenções Semânticas de GenAI do OpenTelemetry. Essa especificação está em desenvolvimento ativo e pode sofrer alterações em futuras versões de manutenção.
Seção comum
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Valor de exemplo |
Nível de obrigatoriedade |
|
|
ID da sessão |
string |
|
Obrigatório se disponível |
|
|
Identificador do usuário final |
string |
|
Obrigatório se disponível |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação [2] |
string |
|
Obrigatório |
|
|
Tipo de framework utilizado |
string |
|
Obrigatório se disponível |
[1] gen_ai.span.kind: Mapeia para gen_ai.operation.name da seguinte forma:
|
gen_ai.span.kind |
gen_ai.operation.name |
Descrição |
|
RETRIEVER |
|
Recuperação de documentos |
|
LLM |
|
Invocação de modelo |
|
EMBEDDING |
|
Embedding |
|
TOOL |
|
Chamada de ferramenta |
|
AGENT |
|
Invocação de agente |
|
RERANKER |
- |
Invocação de reranking |
|
CHAIN |
- |
Cadeia (unidade de invocação) |
|
TASK |
- |
Invocação de tarefa |
|
ENTRY |
- |
Marcador de invocação de entrada |
|
STEP |
- |
Marcador de rodada ReAct |
[2] gen_ai.operation.name: Tipo secundário de operação. Use uma das enumerações abaixo ou defina um valor personalizado:
|
Valor |
Descrição |
|
|
Operação de conclusão de chat |
|
|
Operação de criação de agente GenAI |
|
|
Operação de embedding de palavras |
|
|
Operação de chamada de ferramenta |
|
|
Operação de geração de conteúdo multimodal |
|
|
Operação de invocação de agente GenAI |
|
|
Operação de recuperação de documentos |
|
|
Operação de conclusão de texto |
Recursos
Chave do recurso | Descrição | Tipo | Valor de exemplo | Nível de obrigatoriedade |
| Nome da aplicação | string |
| Obrigatório |
| Workspace do Cloud Monitor | string |
| Obrigatório se disponível |
| ID do service Cloud Monitor | string |
| Obrigatório se disponível |
| source da aplicação | string |
| Obrigatório se disponível |
| Recurso da aplicação | string |
| Obrigatório Nota
|
Chain
Uma Chain é uma ferramenta que conecta LLMs e outros componentes para executar tarefas complexas, como Recuperação, Embedding, invocações de LLM e Chains aninhadas.
Nomeie o span como chain {chain_name}. Caso não seja possível obter o chain_name, utilize o nome chain.
A comunidade OpenTelemetry ainda não definiu uma convenção semântica para este tipo de span. Atualmente, os spans de Chain aplicam-se apenas ao framework LangChain.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação |
string |
|
Obrigatório se disponível |
|
|
Conteúdo de entrada |
string |
|
Recomendado |
|
|
Conteúdo da resposta |
string |
|
Recomendado |
|
|
Tempo até o primeiro token [2] |
integer |
1000000 |
Recomendado |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em uma Chain, este valor deve ser CHAIN.
[2] gen_ai.user.time_to_first_token: Tempo decorrido entre o recebimento da solicitação do usuário pelo servidor e o retorno do primeiro pacote de resposta. Unidade: nanossegundos.
Retriever
Um Retriever acessa bancos de dados vetoriais ou bases de dados para recuperar informações. Geralmente, complementa o contexto para melhorar a precisão e a eficiência das respostas do LLM.
Defina gen_ai.operation.name como retrieval. Quando gen_ai.operation.name for retrieval, deduza gen_ai.span.kind como RETRIEVER.
Nomeie o span como {gen_ai.operation.name} {gen_ai.data_source.id}. Outros formatos de nomenclatura são aceitáveis em casos especiais.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação [2] |
string |
|
Obrigatório |
|
|
Identificador único da fonte de dados [3] |
string |
|
Obrigatório se disponível |
|
|
Provedor do LLM |
string |
|
Obrigatório se disponível |
|
|
Nome do modelo especificado na solicitação |
string |
|
Obrigatório se disponível |
|
|
Valor Top-K especificado na solicitação |
float |
|
Recomendado |
|
|
Lista de documentos recuperados [4] |
string |
|
Opcional |
|
|
Trecho de texto da consulta |
string |
|
Opcional |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em um Retriever, este valor deve ser RETRIEVER.
[2] gen_ai.operation.name: Tipo secundário de operação.
[3] gen_ai.data_source.id: ID único da fonte de dados. Refere-se à fonte de dados da qual AI Agents ou aplicações RAG dependem. Pode ser um banco de dados externo, Object Storage Service, conjunto de documentos, site ou outro sistema de armazenamento.
[4] gen_ai.retrieval.documents: Registra a lista de documentos recuperados. Cada objeto de documento deve conter pelo menos estas propriedades: id (string): Identificador único do documento. score (número de ponto flutuante de precisão dupla): Pontuação de relevância.
Reranker
O Reranker avalia a relevância de múltiplos documentos de entrada com base na consulta, ordena-os e pode retornar os documentos Top-K como entrada para o LLM.
Nomeie o span como rerank {reranker.model_name}. Se não for possível obter reranker.model_name, utilize o nome rerank.
A comunidade OpenTelemetry ainda não definiu uma convenção semântica para este tipo de span.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Parâmetro de solicitação do Reranker |
string |
|
Opcional |
|
|
Nome do modelo usado pelo Reranker |
string |
|
Opcional |
|
|
Classificação após o reranking |
integer |
|
Opcional |
|
|
Metadados dos documentos de entrada [2] |
string |
|
Obrigatório |
|
|
Metadados dos documentos de saída [3] |
string |
|
Obrigatório |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em um Reranker, este valor deve ser RERANKER.
[2] reranker.output_document: Documentos de entrada para reranking. Estrutura de array JSON. Os metadados contêm informações básicas do documento, como caminho, nome do arquivo e origem.
[3] reranker.output_document: Documentos de saída após o reranking. Estrutura de array JSON. Os metadados contêm informações básicas do documento, como caminho, nome do arquivo e origem.
LLM
Um span de LLM representa uma chamada ou processo de inferência de LLM. Exemplos incluem o uso de um SDK ou OpenAPI para invocar diferentes LLMs para inferência ou geração de texto.
Defina gen_ai.operation.name como chat, generate_content ou text_completion. Quando gen_ai.operation.name for chat, generate_content ou text_completion, deduza gen_ai.span.kind como LLM.
Nomeie o span como {gen_ai.operation.name} {gen_ai.request.model}. Outros formatos de nomenclatura são aceitáveis em casos especiais.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação [2] |
string |
|
Obrigatório |
|
|
Provedor do LLM |
string |
|
Obrigatório |
|
|
ID único da conversa [3] |
string |
|
Obrigatório se disponível |
|
|
Tipo de saída especificado na solicitação do LLM [4] |
string |
|
Obrigatório se disponível |
|
|
Número de gerações candidatas solicitadas na requisição do LLM |
int |
|
Obrigatório se diferente de 1 |
|
|
Nome do modelo especificado na solicitação do LLM |
string |
|
Obrigatório |
|
|
Seed especificada na solicitação do LLM |
string |
|
Obrigatório se disponível |
|
|
Penalidade de frequência definida na solicitação do LLM |
float |
|
Recomendado |
|
|
Contagem máxima de tokens especificada na solicitação do LLM |
integer |
|
Recomendado |
|
|
Penalidade de presença definida na solicitação do LLM |
float |
|
Recomendado |
|
|
Temperatura especificada na solicitação do LLM |
float |
|
Recomendado |
|
|
Valor Top-P especificado na solicitação do LLM |
float |
|
Recomendado |
|
|
Valor Top-K especificado na solicitação do LLM |
float |
|
Recomendado |
|
|
Sequências de parada para o LLM |
string[] |
|
Recomendado |
|
|
ID único gerado pelo LLM |
string |
|
Recomendado |
|
|
Nome do modelo usado para geração do LLM |
string |
|
Recomendado |
|
|
Motivo pelo qual o LLM parou a geração |
string[] |
|
Recomendado |
|
|
Latência do primeiro token para o LLM em cenários de resposta em streaming [5] |
integer |
|
Recomendado |
|
|
Tempo de inferência para modelos de raciocínio [6] |
integer |
|
Recomendado |
|
|
Número de tokens de entrada utilizados |
integer |
|
Recomendado |
|
|
Número de tokens de saída utilizados |
integer |
|
Recomendado |
|
|
Número total de tokens utilizados |
integer |
|
Recomendado |
|
|
Número de tokens gravados no cache do provedor do modelo [7] |
integer |
|
Recomendado |
|
|
Número de tokens lidos do cache do provedor do modelo [8] |
integer |
|
Recomendado |
|
|
Conteúdo de entrada do modelo [9] |
string |
|
Opcional |
|
|
Conteúdo de saída do modelo [10] |
string |
|
Opcional |
|
|
Conteúdo do prompt do sistema [11] |
string |
|
Opcional |
|
|
Lista de definições de ferramentas [12] |
string |
|
Opcional |
|
|
Latência de prefill do LLM. Unidade: nanossegundos |
integer |
|
Recomendado |
|
|
Latência de decode do LLM. Unidade: nanossegundos |
integer |
|
Recomendado |
|
|
Tempo de inferência do LLM. Equivale à soma dos tempos de prefill e decode. Unidade: nanossegundos |
integer |
|
Recomendado |
|
|
Dados multimodais envolvidos no conteúdo de entrada do LLM [13] |
string[] |
|
Recomendado |
|
|
Dados multimodais envolvidos no conteúdo de saída do LLM [14] |
string[] |
|
Recomendado |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em um span de LLM, este valor deve ser LLM.
[2] gen_ai.operation.name: Tipo secundário de operação.
[3] gen_ai.conversation.id: ID único da conversa. Colete este dado se puder obtê-lo facilmente.
[4] gen_ai.output.type: Colete este dado se a solicitação especificar um tipo de saída (como um formato de saída). Os valores devem ser uma das seguintes enumerações ou um valor personalizado:
|
Valor |
Descrição |
|
|
Imagem |
|
|
Objeto JSON bem formatado |
|
|
Voz |
|
|
Texto simples |
[5] gen_ai.user.time_to_first_token: Tempo decorrido entre o recebimento da solicitação do usuário pelo servidor e o retorno do primeiro pacote de resposta. Unidade: nanossegundos.
[6] gen_ai.response.reasoning_time: Duração do processo de raciocínio. Unidade: milissegundos.
[7] gen_ai.usage.cache_creation.input_tokens: Este valor já deve estar incluído em gen_ai.usage.input_tokens.
[8] gen_ai.usage.cache_read.input_tokens: Este valor já deve estar incluído em gen_ai.usage.input_tokens.
[9] gen_ai.input.messages: Registra o conteúdo de entrada para a chamada do LLM. As mensagens devem ser fornecidas na ordem em que foram enviadas ao modelo ou agente. Siga gen_ai.input.messages.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[10] gen_ai.output.messages: Registra o conteúdo de saída do modelo. As mensagens devem ser fornecidas na ordem em que foram enviadas ao modelo ou agente. Siga gen_ai.output.messages.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[11] gen_ai.system_instructions: Registra separadamente o conteúdo do prompt ou instrução do sistema. Use este campo se conseguir obter o prompt do sistema ou o conteúdo da instrução de forma independente. Caso contrário, registre-o no atributo gen_ai.input.messages. Siga gen_ai.system_instructions.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[12] gen_ai.tool.definitions: Registra as definições de ferramentas passadas ao LLM. Este atributo pode ser muito extenso. Por padrão, colete apenas os campos type e name. Colete todos os outros campos somente quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[13] gen_ai.input.multimodal_metadata: Agrega dados multimodais referenciados no conteúdo de entrada do modelo. Inclui apenas mensagens UriPart. Siga gen_ai.input.messages.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[14] gen_ai.output.multimodal_metadata: Agrega dados multimodais referenciados no conteúdo de saída do modelo. Inclui apenas mensagens UriPart. Siga gen_ai.output.messages.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
Registrar prompts, entradas e saídas
É possível omitir o registro de entradas do usuário e respostas do modelo, registrá-las nos atributos do span ou como eventos (logs). Para mais detalhes, consulte Control LLM Application Conversation History Collection Behavior.
Embedding
Um embedding representa um processo único, como a vetorização de texto com um LLM. Posteriormente, consultas de similaridade podem otimizar a solução de problemas.
Defina gen_ai.operation.name como embeddings. Quando gen_ai.operation.name for embeddings, deduza gen_ai.span.kind como EMBEDDING.
Nomeie o span como {gen_ai.operation.name} {gen_ai.request.model}. Outros formatos de nomenclatura são aceitáveis em casos especiais.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação [2] |
string |
|
Obrigatório |
|
|
Provedor do LLM |
string |
|
Obrigatório |
|
|
Nome do modelo especificado na solicitação |
string |
|
Obrigatório se disponível |
|
|
Número de dimensões esperado para a operação de embedding |
integer |
|
Recomendado |
|
|
Formatos de codificação solicitados para a operação de embedding |
string[] |
|
Recomendado |
|
|
Contagem de tokens consumidos pelo texto de entrada |
integer |
|
Opcional |
|
|
Contagem total de tokens consumidos pelo embedding |
integer |
|
Opcional |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em um span de Embedding, este valor deve ser EMBEDDING.
[2] gen_ai.operation.name: Tipo secundário de operação.
Tool
Spans de Tool representam chamadas a ferramentas externas. Exemplos incluem chamar uma calculadora ou solicitar a previsão do tempo mais recente de uma API meteorológica.
Defina gen_ai.operation.name como execute_tool. Quando gen_ai.operation.name for execute_tool, deduza gen_ai.span.kind como TOOL.
Nomeie o span como {gen_ai.operation.name} {gen_ai.tool.name}. Outros formatos de nomenclatura são aceitáveis em casos especiais.
Se a execução de uma ferramenta carregar uma skill, defina os campos relevantes gen_ai.skill.*. Cenários comuns incluem chamadas de ferramentas como load_skill, read_skill ou operações similares.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação [2] |
string |
|
Obrigatório |
|
|
ID da ferramenta |
string |
|
Recomendado |
|
|
Descrição da ferramenta |
string |
|
Recomendado |
|
|
Nome da ferramenta |
string |
Recomendado |
|
|
|
Tipo da ferramenta |
string |
|
Recomendado |
|
|
Identificador único da skill GenAI. |
string |
|
Obrigatório ao carregar uma skill. |
|
|
Nome da skill GenAI. |
string |
|
Obrigatório ao carregar uma skill. |
|
|
Descrição em formato livre da skill GenAI, fornecida pela aplicação. |
string |
|
recomendado |
|
|
Versão da skill GenAI. |
string |
|
recomendado |
|
|
Parâmetros de entrada da chamada de ferramenta [2] |
string |
|
Opcional |
|
|
Valor de retorno da chamada de ferramenta [3] |
string |
|
Opcional |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em um span de Tool, este valor deve ser TOOL.
[2] gen_ai.tool.call.arguments: Parâmetros de entrada da chamada de ferramenta, como uma string JSON. Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[3] gen_ai.tool.call.result: Valor de retorno da chamada de ferramenta, como uma string JSON. Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
Agent
Um span de Agent representa um cenário de agente inteligente — uma Chain mais complexa. O agente usa resultados de inferência do LLM para decidir a próxima etapa. Isso pode envolver múltiplas chamadas de LLM e Tool, progredindo passo a passo até alcançar uma resposta final.
Defina gen_ai.operation.name como invoke_agent ou create_agent. Quando gen_ai.operation.name for invoke_agent ou create_agent, deduza gen_ai.span.kind como AGENT.
Nomeie o span como {gen_ai.operation.name} {gen_ai.agent.name}. Outros formatos de nomenclatura são aceitáveis em casos especiais.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação [2] |
string |
|
Obrigatório |
|
|
ID único da conversa [3] |
string |
|
Obrigatório se disponível |
|
|
Descrição do agente |
string |
|
Obrigatório se disponível |
|
|
Identificador único do agente |
string |
|
Obrigatório se disponível |
|
|
Nome do agente |
string |
|
Obrigatório se disponível |
|
|
Identificador único da fonte de dados [4] |
string |
|
Obrigatório se disponível |
|
|
Número de tokens de entrada utilizados |
integer |
|
Recomendado |
|
|
Número de tokens de saída utilizados |
integer |
|
Recomendado |
|
|
Número total de tokens utilizados |
integer |
|
Recomendado |
|
|
Número de tokens gravados no cache do provedor do modelo [5] |
integer |
|
Recomendado |
|
|
Número de tokens lidos do cache do provedor do modelo [6] |
integer |
|
Recomendado |
|
|
Conteúdo de entrada do modelo [7] |
string |
|
Opcional |
|
|
Conteúdo de saída do modelo [8] |
string |
|
Opcional |
|
|
Conteúdo do prompt do sistema [9] |
string |
|
Opcional |
|
|
Lista de definições de ferramentas [10] |
string |
|
Opcional |
|
|
Latência de resposta do primeiro token do agente |
integer |
|
Recomendado |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em um span de Agent, este valor deve ser AGENT.
[2] gen_ai.operation.name: Tipo secundário de operação.
[3] gen_ai.conversation.id: ID único da conversa. Colete este dado se puder obtê-lo facilmente.
[4] gen_ai.data_source.id: ID único da fonte de dados. Refere-se à fonte de dados da qual AI Agents ou aplicações RAG dependem. Pode ser um banco de dados externo, Object Storage Service, conjunto de documentos, site ou outro sistema de armazenamento.
[5] gen_ai.usage.cache_creation.input_tokens: Este valor já deve estar incluído em gen_ai.usage.input_tokens.
[6] gen_ai.usage.cache_read.input_tokens: Este valor já deve estar incluído em gen_ai.usage.input_tokens.
[7] gen_ai.input.messages: Registra o conteúdo de entrada para a chamada do LLM. As mensagens devem ser fornecidas na ordem em que foram enviadas ao modelo ou agente. Siga gen_ai.input.messages.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[8] gen_ai.output.messages: Registra o conteúdo de saída do modelo. As mensagens devem ser fornecidas na ordem em que foram enviadas ao modelo ou agente. Siga gen_ai.output.messages.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[9] gen_ai.system_instructions: Registra separadamente o conteúdo do prompt ou instrução do sistema. Use este campo se conseguir obter o prompt do sistema ou o conteúdo da instrução de forma independente. Caso contrário, registre-o no atributo gen_ai.input.messages. Siga gen_ai.system_instructions.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[10] gen_ai.tool.definitions: Registra as definições de ferramentas passadas ao LLM. Este atributo pode ser muito extenso. Por padrão, colete apenas os campos type e name. Colete todos os outros campos somente quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
Task
Um span de Task representa uma chamada de método interno personalizado, como a invocação de uma função local ou outra lógica definida pela aplicação.
Nomeie o span como run_task {gen_ai.task.name}. Outros formatos de nomenclatura são aceitáveis em casos especiais.
A comunidade OpenTelemetry ainda não definiu uma convenção semântica para este tipo de span. Portanto, gen_ai.operation.name pode sofrer alterações.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação |
string |
|
Obrigatório |
|
|
Parâmetros de entrada |
string |
|
Opcional |
|
|
Tipo MIME de entrada |
string |
|
Opcional |
|
|
Tipo MIME de saída |
string |
|
Opcional |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em um span de Task, este valor deve ser TASK.
Entry
Um span de Entry marca o ponto de entrada para uma chamada a um sistema de aplicação de IA.
Nomeie o span como enter_ai_application_system. Outros formatos de nomenclatura são aceitáveis em casos especiais.
A comunidade OpenTelemetry ainda não definiu uma convenção semântica para este tipo de span. Portanto, gen_ai.operation.name pode sofrer alterações.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação |
string |
|
Recomendado |
|
|
ID da sessão |
string |
|
Obrigatório se disponível |
|
|
Identificador do usuário final |
string |
|
Obrigatório se disponível |
|
|
Conteúdo de entrada do modelo [2] |
string |
|
Opcional |
|
|
Conteúdo de saída do modelo [3] |
string |
|
Opcional |
|
|
Latência de resposta do primeiro token em cenários de resposta em streaming [4] |
integer |
|
Recomendado |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em um span de Entry, este valor deve ser ENTRY.
[2] gen_ai.input.messages: Registra o conteúdo de entrada para a chamada do LLM. As mensagens devem ser fornecidas na ordem em que foram enviadas ao modelo ou agente. Siga gen_ai.input.messages.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[3] gen_ai.output.messages: Registra o conteúdo de saída do modelo. As mensagens devem ser fornecidas na ordem em que foram enviadas ao modelo ou agente. Siga gen_ai.output.messages.json.
Colete apenas quando o sinalizador OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT estiver ativado. Este sinalizador vem ativado por padrão.
[4] gen_ai.response.time_to_first_token: Tempo decorrido entre o recebimento da solicitação do usuário pelo servidor e o retorno do primeiro pacote de resposta. Unidade: nanossegundos.
Etapa ReAct
Um span de Step marca um processo de iteração Reasoning-Acting dentro de um Agent.
Nomeie o span como react step. Outros formatos de nomenclatura são aceitáveis em casos especiais.
A comunidade OpenTelemetry ainda não definiu uma convenção semântica para este tipo de span. Portanto, gen_ai.operation.name pode sofrer alterações.
Atributos
|
Chave do atributo |
Descrição |
Tipo |
Exemplo |
Nível de obrigatoriedade |
|
|
Tipo de operação [1] |
string |
|
Obrigatório |
|
|
Tipo secundário de operação |
string |
|
Recomendado |
|
|
Motivo para o término desta rodada ReAct |
string |
|
Recomendado |
|
|
Número da rodada para esta iteração ReAct [2] |
integer |
|
Recomendado |
[1] gen_ai.span.kind: Enumeração dedicada para spanKind de LLM. Em um span de etapa ReAct, este valor deve ser STEP.
[2] gen_ai.react.round: Os números das rodadas ReAct devem começar em 1 e incrementar de 1 a cada iteração.