View a markdown version of this page

Suporte de estrutura genérica - Amazon Bedrock AgentCore

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Suporte de estrutura genérica

O Amazon Bedrock AgentCore Evaluations lê a telemetria por meio de dois padrões abertos: as convenções semânticas OpenTelemetry generativas da IA e as convenções semânticas. OpenInference Além das estruturas que têm sua própria página nesta seção, o serviço oferece suporte a qualquer agente que emita telemetria em uma dessas duas convenções. Este é um suporte genérico à estrutura.

Use o suporte genérico à estrutura ao criar com uma estrutura que não tenha nenhuma página nesta seção ou ao escrever sua própria instrumentação para um agente personalizado. Configure sua instrumentação para emitir o nome do escopo, os atributos de abrangência e os atributos de identificação descritos nesta página, e o serviço identificará suas extensões e extrairá os valores de que os avaliadores precisam, usando a mesma classificação de extensão e extração de campo das estruturas nomeadas.

Como as estruturas de dados da sua estrutura não são conhecidas de antemão, o serviço extrai cada valor como uma string em vez de analisá-lo em uma estrutura específica da estrutura. Mantenha solicitações, respostas e argumentos da ferramenta nos atributos listados em Como os campos de avaliação são extraídos, em vez de agrupados em sua própria estrutura, como um objeto de solicitação aninhado ou um envelope de mensagem personalizado, para que os avaliadores recebam valores claros.

Tópicos

Convenções suportadas

O serviço seleciona como ler cada intervalo do scope.name intervalo. Defina o nome do escopo da sua instrumentação com um dos seguintes prefixos e o serviço lerá a extensão com a convenção correspondente:

Convenção Prefixo do nome do escopo

OpenTelemetry

opentelemetry.instrumentation.*

OpenInference

openinference.instrumentation.*

Se um escopo tiver uma página própria nesta seção, o serviço usará o tratamento descrito nessa página. O suporte genérico à estrutura se aplica a todos os outros escopos que correspondam a um desses prefixos.

Alguns escopos correspondem aos OpenTelemetry prefixos, mas não são estruturas de agentes GenAI. São instrumentação de transporte e infraestrutura, como clientes HTTP (,,) httpxurllib3, estruturas da web (urllibstarlette,aiohttp_client), instrumentação do Model Context Protocol (MCP) e instrumentação AWS SDK (botocore), incluindo seus escopos e. fastapi bedrock-agentcore bedrock-runtime O serviço exclui esses escopos do suporte de estrutura genérica para que suas extensões não produzam extensões espúrias de agentes, ferramentas ou inferências.

Como os intervalos são identificados

O serviço classifica cada intervalo em um dos três tipos usando o atributo de identificação padrão para sua convenção. Defina esse atributo em cada intervalo que você deseja avaliar. Seu valor informa ao serviço o que o intervalo representa, e o serviço o lê a partir do próprio intervalo, independentemente de onde o conteúdo da conversa esteja armazenado.

exemplo
OpenTelemetry

O serviço classifica os períodos usando gen_ai.operation.name e volta para traceloop.span.kind quando o nome da operação está ausente.

Tipo de extensão Atributo de identificação

Invoque o agente

gen_ai.operation.name= invoke_agent (ou traceloop.span.kind =workflow)

Ferramenta de execução

gen_ai.operation.name= execute_tool (ou traceloop.span.kind =tool)

Inferência

gen_ai.operation.name= chat (ou llm.request.type =chat)

OpenInference

O serviço classifica os períodos usando. openinference.span.kind

Tipo de extensão Atributo de identificação

Invoque o agente

openinference.span.kind= AGENT ou CHAIN

Ferramenta de execução

openinference.span.kind = TOOL

Inferência

openinference.span.kind = LLM

Como os campos de avaliação são extraídos

Para cada período classificado, o serviço lê os valores necessários, como a solicitação do usuário, a resposta do agente e as entradas e saídas da ferramenta. Assim como nas estruturas nomeadas, a localização do conteúdo da conversa depende do modo de entrega da telemetria. Com a telemetria dividida, o conteúdo fica no registro do evento correlacionado. Com a telemetria unificada, ela permanece no espaço como atributos. Para obter mais informações, consulte Configuração e entrega de telemetria.

O serviço tenta vários locais para cada campo e usa o primeiro que contém um valor, para que você possa emitir qualquer atributo que sua instrumentação já defina. Cada valor extraído é stringificado em vez de analisado em uma estrutura específica da estrutura.

OpenTelemetry convenção

Para estruturas que usam a OpenTelemetry convenção, o serviço lê cada campo dos seguintes locais, na ordem:

  • Solicitação do usuário (invocar o intervalo do agente): do registro do eventobody.input; depois, do atributo gen_ai.task.input span.

  • Resposta do agente (invocar o intervalo do agente): do registro do eventobody.output; depois, do atributo gen_ai.task.output span. Se nenhuma delas estiver presente, o serviço retornará à primeira mensagem do usuário e à última mensagem do assistente coletada dos períodos de inferência do rastreamento.

  • Mensagens de inferência (intervalo de inferência): do registro do evento body.input.messages ebody.output.messages; depois dos atributos gen_ai.input.messages e gen_ai.output.messages span.

  • Nome da ferramenta (execute tool span): do atributo gen_ai.tool.name span; depois do atributo traceloop.entity.name span.

  • Argumentos da ferramenta (execute tool span): do atributo gen_ai.tool.call.arguments span; depois do registro do eventobody.input; depois do atributo traceloop.entity.input span.

  • Resultado da ferramenta (executar extensão da ferramenta): do atributo gen_ai.tool.call.result span; depois do registro do eventobody.output; depois do atributo traceloop.entity.output span.

  • Solicitação do sistema (intervalo de inferência): do atributo gen_ai.system_instructions span.

OpenInference convenção

Para estruturas que usam a OpenInference convenção, o serviço lê cada campo dos seguintes locais, na ordem:

  • Solicitação do usuário (invocar span do agente): a partir do atributo input.value span; depois, da entrada do corpo do registro do evento.

  • Resposta do agente (invocar o intervalo do agente): do atributo output.value span; depois, da saída do corpo do registro do evento.

  • Mensagens de inferência (intervalo de inferência): dos atributos da OpenInference mensagem do intervalo (por exemplo, llm.input_messages.* ellm.output_messages.*); depois de input.value eoutput.value; depois do corpo do registro do evento.

  • Argumentos da ferramenta (execute tool span): do atributo input.value span; depois da entrada do corpo do registro do evento.

  • Resultado da ferramenta (executar extensão da ferramenta): do atributo output.value span; depois da saída do corpo do registro do evento.

  • Solicitação do sistema (intervalo de inferência): a partir dos atributos do intervalo de inferência; depois, do corpo do registro do evento.

  • Ferramentas disponíveis: a partir dos atributos de definição de ferramenta do intervalo de inferência (llm.tools.*); em seguida, analisadas a partir da solicitação serializada no corpo do registro do evento ou. input.value

Requisitos de configuração

Para ser avaliado com suporte de estrutura genérica, configure sua instrumentação da seguinte forma:

  • Use um nome de escopo reconhecido. Emita extensões com um nome de escopo que começa com opentelemetry.instrumentation.* ou. openinference.instrumentation.* O serviço lê somente esses prefixos com suporte genérico à estrutura.

  • Defina um atributo de identificação em cada intervalo. gen_ai.operation.nameDefinido ou traceloop.span.kind para a OpenTelemetry convenção, ou openinference.span.kind para a OpenInference convenção. O serviço ignora um intervalo que não contém nenhum atributo de identificação reconhecido.

  • Coloque o conteúdo nos atributos documentados. Defina os atributos de solicitação, resposta e ferramenta listados em Como os campos de avaliação são extraídos. Se você agrupar esses valores em sua própria estrutura, o valor extraído incluirá essa estrutura circundante, porque o serviço sequenciará o conteúdo em vez de analisar o modelo de dados da sua estrutura.

Se você não conseguir definir os atributos da convenção, ainda poderá avaliar a vez do agente de nível superior. Defina os atributos agentcore.invocation.user_prompt e agentcore.invocation.agent_response span, que o AgentCore SDK também emite. O serviço lê esses atributos de qualquer escopo e eles abrangem apenas a solicitação e a resposta do agente, não a inferência ou a abrangência de ferramentas.