View a markdown version of this page

Supporto per framework generici - Amazon Bedrock AgentCore

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Supporto per framework generici

Amazon Bedrock AgentCore Evaluations legge la telemetria attraverso due standard aperti: le convenzioni semantiche di intelligenza artificiale OpenTelemetry generativa e le convenzioni semantiche. OpenInference Oltre ai framework che hanno una propria pagina in questa sezione, il servizio supporta qualsiasi agente che emette telemetria in una di queste due convenzioni. Si tratta di un supporto di framework generico.

Usa il supporto generico per il framework quando crei con un framework che non ha pagine in questa sezione o quando scrivi la tua strumentazione per un agente personalizzato. Configura la tua strumentazione per emettere il nome dell'ambito, gli attributi span e gli attributi identificativi descritti in questa pagina, e il servizio identifica gli intervalli ed estrae i valori necessari ai valutatori, utilizzando la stessa classificazione degli intervalli e l'estrazione dei campi dei framework denominati.

Poiché le strutture dati proprie del framework non sono note in anticipo, il servizio estrae ogni valore come stringa anziché analizzarlo in una struttura specifica del framework. Conserva i prompt, le risposte e gli argomenti degli strumenti negli attributi elencati in Come vengono estratti i campi di valutazione, anziché racchiusi in una struttura personalizzata, ad esempio un oggetto di richiesta annidato o una busta di messaggio personalizzata, in modo che i valutatori ricevano valori puliti.

Argomenti

Convenzioni supportate

Il servizio seleziona come leggere ogni intervallo tra quelli dell'intervallo. scope.name Imposta il nome dell'ambito della strumentazione su uno dei seguenti prefissi e il servizio legge l'intervallo con la convenzione corrispondente:

Convenzione Prefisso del nome dell'ambito

OpenTelemetry

opentelemetry.instrumentation.*

OpenInference

openinference.instrumentation.*

Se un ambito ha una pagina propria in questa sezione, il servizio utilizza invece la gestione descritta in quella pagina. Il supporto del framework generico si applica a tutti gli altri ambiti che corrispondono a uno di questi prefissi.

Alcuni ambiti corrispondono ai OpenTelemetry prefissi ma non sono framework di agenti GenAI. Si tratta di strumentazione per il trasporto e l'infrastruttura, come i client HTTP (,,), i framework web (httpxurllib3urllib,aiohttp_client), la strumentazione Model Context Protocol (starletteMCPfastapi) e la strumentazione SDK (), compresi gli ambiti e gli ambiti. AWS botocore bedrock-agentcore bedrock-runtime Il servizio esclude questi ambiti dal supporto del framework generico in modo che i loro intervalli non producano intervalli di agenti, strumenti o inferenze spuri.

Come vengono identificati gli intervalli

Il servizio classifica ogni intervallo in uno dei tre tipi utilizzando l'attributo identificativo standard per la relativa convenzione. Imposta questo attributo su ogni intervallo che desideri valutare. Il suo valore indica al servizio cosa rappresenta l'intervallo e il servizio lo legge dall'intervallo stesso, indipendentemente da dove è archiviato il contenuto della conversazione.

Esempio
OpenTelemetry

Il servizio classifica gli intervalli utilizzando gen_ai.operation.name e ricorre a traceloop.span.kind quando il nome dell'operazione è assente.

Tipo Span Attributo identificativo

Invoca l'agente

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

Strumento di esecuzione

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

Inferenza

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

OpenInference

Il servizio classifica gli intervalli utilizzando. openinference.span.kind

Tipo di intervallo Attributo identificativo

Invoca l'agente

openinference.span.kind= AGENT o CHAIN

Strumento di esecuzione

openinference.span.kind = TOOL

Inferenza

openinference.span.kind = LLM

Come vengono estratti i campi di valutazione

Per ogni intervallo classificato, il servizio legge i valori necessari, come il prompt dell'utente, la risposta dell'agente e gli input e gli output dello strumento. Come per i framework citati, la collocazione del contenuto della conversazione dipende dalla modalità di trasmissione della telemetria. Con la telemetria divisa, il contenuto risiede nel record dell'evento correlato. Con la telemetria unificata, rimane nell'intervallo come attributi. Per ulteriori informazioni, consulta Configurazione e consegna della telemetria.

Il servizio prova diverse posizioni per ogni campo e utilizza la prima che contiene un valore, in modo da poter emettere qualsiasi attributo già impostato dalla strumentazione. Ogni valore estratto viene stringato anziché analizzato in una struttura specifica del framework.

OpenTelemetry convenzione

Per i framework che utilizzano la OpenTelemetry convenzione, il servizio legge ogni campo dalle seguenti posizioni, nell'ordine:

  • Prompt utente (invoke agent span): dal record dell'eventobody.input; quindi dall'attributo span. gen_ai.task.input

  • Risposta dell'agente (richiama l'agente span): dal record dell'eventobody.output; quindi dall'attributo span. gen_ai.task.output Se nessuno dei due è presente, il servizio ritorna al primo messaggio utente e all'ultimo messaggio dell'assistente raccolti dagli intervalli di inferenza della traccia.

  • Messaggi di inferenza (intervallo di inferenza): dal record dell'evento e quindi dagli body.output.messages attributi body.input.messages and span. gen_ai.input.messages gen_ai.output.messages

  • Nome dello strumento (execute tool span): dall'attributo span; quindi dall'attributo gen_ai.tool.name span. traceloop.entity.name

  • Argomenti dello strumento (execute tool span): dall'attributo gen_ai.tool.call.arguments span; poi dal record body.input dell'evento; quindi dall'attributo span. traceloop.entity.input

  • Risultato dello strumento (execute tool span): dall'attributo gen_ai.tool.call.result span; poi dal record body.output dell'evento; quindi dall'attributo span. traceloop.entity.output

  • Prompt di sistema (inference span): dall'attributo span. gen_ai.system_instructions

OpenInference convenzione

Per i framework che utilizzano la OpenInference convenzione, il servizio legge ogni campo dalle seguenti posizioni, nell'ordine:

  • Prompt utente (invoke agent span): dall'attributo input.value span; quindi dall'input del corpo del record dell'evento.

  • Risposta dell'agente (invoke agent span): dall'attributo output.value span; quindi dall'output del corpo del record dell'evento.

  • Messaggi di inferenza (intervallo di inferenza): dagli attributi del OpenInference messaggio dell'intervallo (ad esempio, llm.input_messages.* ellm.output_messages.*); quindi da input.value eoutput.value; quindi dal corpo del record dell'evento.

  • Argomenti dello strumento (execute tool span): dall'attributo input.value span; quindi dall'input del corpo del record dell'evento.

  • Risultato dello strumento (execute tool span): dall'attributo output.value span; quindi dall'output del corpo del record dell'evento.

  • Prompt di sistema (inference span): dagli attributi inference span; quindi dal corpo del record dell'evento.

  • Strumenti disponibili: dagli attributi di definizione degli strumenti dell'inference span (llm.tools.*); quindi analizzati dalla richiesta serializzata nel corpo del record dell'evento o. input.value

Requisiti di configurazione

Per essere valutati con il supporto di un framework generico, configura la tua strumentazione come segue:

  • Usa un nome di ambito riconosciuto. Emit si estende sotto un nome di ambito che inizia con opentelemetry.instrumentation.* o. openinference.instrumentation.* Il servizio legge solo questi prefissi con il supporto del framework generico.

  • Imposta un attributo identificativo su ogni intervallo. Impostare gen_ai.operation.name o traceloop.span.kind per la OpenTelemetry convenzione o openinference.span.kind per la OpenInference convenzione. Il servizio salta un intervallo che non riporta alcun attributo identificativo riconosciuto.

  • Inserisci il contenuto negli attributi documentati. Imposta gli attributi di prompt, response e tool elencati in Come vengono estratti i campi di valutazione. Se racchiudi questi valori nella tua struttura, il valore estratto include la struttura circostante, perché il servizio stringe il contenuto anziché analizzare il modello di dati del framework.

Se non riesci a impostare gli attributi delle convenzioni, puoi comunque valutare il turno dell'agente di primo livello. Imposta gli attributi agentcore.invocation.user_prompt e agentcore.invocation.agent_response span, che vengono emessi anche dall' AgentCore SDK. Il servizio legge questi attributi da qualsiasi ambito e riguardano solo il prompt e la risposta dell'agente, non le inferenze o gli intervalli degli strumenti.