

# OpenAI-Agenten
<a name="supported-frameworks-openai-agents"></a>

Auf dieser Seite wird erklärt, wie ein [OpenAI Agents-Agent](https://openai.github.io/openai-agents-python/) instrumentiert wird, wie Spans identifiziert werden und wie Bewertungsfelder extrahiert werden.

 **Topics** 
+  [Instrumentieren Sie Ihren Agenten](#openai-agents-instrument) 
+  [Wie werden Spannweiten identifiziert](#openai-agents-span-identification) 
+  [Wie werden Bewertungsfelder extrahiert](#openai-agents-extraction) 
  +  [Aus Ereignisaufzeichnungen](#openai-agents-extraction-event-records) 
  +  [Aus Span-Attributen](#openai-agents-extraction-attributes) 
+  [Beispiel für Spans mit Ereignisdatensätzen](#openai-agents-examples-with) 
+  [Beispiel für Spans ohne Ereignisdatensätze](#openai-agents-examples-without) 

## Instrumentieren Sie Ihren Agenten
<a name="openai-agents-instrument"></a>

Sie können einen OpenAI Agents-Agenten mit einer von zwei Instrumentierungsbibliotheken instrumentieren: **OpenTelemetry**(`opentelemetry-instrumentation-openai-agents`) oder **OpenInference**(`openinference-instrumentation-openai-agents`). Amazon Bedrock AgentCore Evaluations unterstützt beide Bibliotheken. Die Bibliotheken geben unterschiedliche Bereichsnamen aus und verwenden unterschiedliche Span-Attribute. Der Bewertungsservice extrahiert aus jedem die gleichen Werte.

Wenn Ihr Agent mit AWS Distro for OpenTelemetry (ADOT) ausgeführt wird, z. B. auf Amazon Bedrock AgentCore Runtime, müssen Sie keinen expliziten Instrumentierungscode hinzufügen. Es reicht aus, die Instrumentierungsbibliothek zu den Abhängigkeiten Ihres Projekts hinzuzufügen. ADOT erkennt es beim Start und aktiviert es automatisch.

Fügen Sie die Instrumentierungsbibliothek für den gewünschten Pfad zu Ihren Abhängigkeiten hinzu. Verwenden Sie die neueste verfügbare Version, es sei denn, Sie haben einen Grund zum Pin.

**Example**  
HINWEIS: Verwenden Sie Version `0.61.0` oder höher. Dies ist die früheste Version, die mit dem Evaluierungsservice getestet wurde.  
Fügen `opentelemetry-instrumentation-openai-agents` Sie Ihre Abhängigkeiten hinzu. Der ausgegebene Bereichsname lautet`opentelemetry.instrumentation.openai_agents`.  
 `requirements.txt`:  

```
opentelemetry-instrumentation-openai-agents>=0.61.0
```
 `pyproject.toml`:  

```
[project]
dependencies = [
    "opentelemetry-instrumentation-openai-agents>=0.61.0",
]
```
HINWEIS: Verwenden Sie Version `1.5.0` oder höher. Dies ist die früheste Version, die mit dem Evaluierungsservice getestet wurde.  
Fügen `openinference-instrumentation-openai-agents` Sie Ihre Abhängigkeiten hinzu. Der ausgegebene Bereichsname lautet`openinference.instrumentation.openai_agents`.  
 `requirements.txt`:  

```
openinference-instrumentation-openai-agents>=1.5.0
```
 `pyproject.toml`:  

```
[project]
dependencies = [
    "openinference-instrumentation-openai-agents>=1.5.0",
]
```

**Anmerkung**  
Die Instrumentierung ist ein Schritt bei der Einrichtung der Beobachtbarkeit. Um Telemetrie zur Auswertung zu exportieren, schließen Sie die vollständigen Einstellungen unter Beobachtbarkeit [einrichten](supported-frameworks.md#supported-frameworks-setup) ab.

## Wie werden Spannweiten identifiziert
<a name="openai-agents-span-identification"></a>

Das zur Klassifizierung von Spans verwendete Attribut unterscheidet sich zwischen den beiden Instrumentierungsbibliotheken.

**Example**  
Die OpenTelemetry Instrumentierungsbibliothek klassifiziert Spans anhand des Attributs. `gen_ai.operation.name`  


| Typ der Spannweite | Identifizierendes Attribut | 
| --- | --- | 
| Agent aufrufen |  `gen_ai.operation.name` = `invoke_agent`  | 
| Tool ausführen |  `gen_ai.operation.name` = `execute_tool`  | 
| Inferenz |  `gen_ai.operation.name` = `chat`  | 
OpenAI Agents gibt auch interne Turn-Boundary-Spans mit = aus. `gen_ai.operation.name` `unknown` Der Evaluierungsservice überspringt diese.
Die OpenInference Instrumentierungsbibliothek klassifiziert Spannweiten anhand des Attributs. `openinference.span.kind`  


| Typ der Spannweite | Identifizierendes Attribut | 
| --- | --- | 
| Agent aufrufen |  `openinference.span.kind`= oder `AGENT` `CHAIN`  | 
| Tool ausführen |  `openinference.span.kind` = `TOOL`  | 
| Inferenz |  `openinference.span.kind` = `LLM`  | 
Bei der OpenInference Bibliothek handelt es sich bei den `CHAIN` Feldern `AGENT` und um leere Strukturcontainer: Sie enthalten keinen Konversationsinhalt. Die Benutzeraufforderung und die Antwort des Agenten werden anhand der Inference (`LLM`) -Spannen in derselben Ablaufverfolgung rekonstruiert.

## Wie werden Bewertungsfelder extrahiert
<a name="openai-agents-extraction"></a>

OpenAI Agents serialisiert Nachrichten in einem teilbasierten Format, in dem jede Nachricht eine `parts` Reihe von typisierten Inhaltsblöcken enthält (z. B.). `[{"role": "user", "parts": [{"type": "text", "content": "…​"}]}]` Mit der OpenTelemetry Bibliothek analysiert AgentCore Evaluations den Text aus diesen Teilen. Bei der OpenInference Bibliothek ist die Modellausgabe das vollständige OpenAI Response-Objekt, und AgentCore Evaluations liest den Antworttext aus`output[].content[].text`.

Der Speicherort dieser Inhalte hängt davon ab, wie die Telemetrie erfasst wurde. Das identifizierende Attribut (`gen_ai.operation.name`oder`openinference.span.kind`) befindet sich in beiden Fällen auf der Spanne. Weitere Informationen finden Sie unter [Spans, Ereignisdatensätze und Telemetriesignale](supported-frameworks-telemetry.md).

### Aus Ereignisaufzeichnungen
<a name="openai-agents-extraction-event-records"></a>

Wenn die Telemetrie aufgeteilt wird, liest AgentCore Evaluations den Konversationsinhalt aus dem Ereignisdatensatz, der den einzelnen Zeiträumen zugeordnet ist. Die Position der Werkzeugeingaben und -ausgaben unterscheidet sich zwischen den beiden Bibliotheken:
+  **OpenTelemetry**:
  +  **Benutzereingabe** und **Agentenantwort**: aus dem Ereignisdatensatz des Invoke Agent Span, in `body.input` und`body.output`.
  +  **Werkzeugaufruf**: der Werkzeugname von `gen_ai.tool.name` und die Argumente und das Ergebnis von `gen_ai.tool.call.arguments` und `gen_ai.tool.call.result` auf dem Ausführungs-Tool-Span. In der OpenTelemetry Bibliothek bleiben die Werkzeugargumente und Ergebnisse in den Span-Attributen erhalten, auch wenn die Telemetrie aufgeteilt wird.
+  **OpenInference**:
  +  **Benutzereingabe** und **Antwort des Agenten**: anhand des Ereignisdatensatzes der Inferenzspanne rekonstruiert. AgentCore Evaluations liest die Nachrichten von `body.input` und und `body.output` füllt dann den leeren Bereich für den Invoke Agent mit der Benutzeraufforderung und der Agentenantwort wieder auf.
  +  **Werkzeugaufruf**: der Name des Tools aus `tool.name` dem Bereich „Tool ausführen“. Die Werkzeugargumente und das Ergebnis stammen aus dem Ereignisdatensatz dieser Spanne, in `body.input` und`body.output`.

Beispiele finden Sie unter [Beispiel für Spans mit Ereignisdatensätzen](#openai-agents-examples-with).

### Aus Span-Attributen
<a name="openai-agents-extraction-attributes"></a>

Wenn die Telemetrie nicht aufgeteilt wird, verbleibt derselbe Inhalt als Attribute im Bereich. Die Attribute hängen von der Instrumentierungsbibliothek ab:
+  **OpenTelemetry**:
  +  **Benutzeraufforderung** und **Agentenantwort**: von `gen_ai.input.messages` und nach `gen_ai.output.messages` dem Invoke Agent Span.
  +  **Werkzeugaufruf**: der Werkzeugname von `gen_ai.tool.name` und die Argumente und das Ergebnis von `gen_ai.tool.call.arguments` und `gen_ai.tool.call.result` im Bereich des Ausführungswerkzeugs.
+  **OpenInference**:
  +  **Benutzereingabe** und **Antwort des Agenten**: aus den indizierten Nachrichtenattributen im Inferenzbereich (`llm.input_messages. `und`llm.output_messages.`), dann wieder aufgefüllt in den leeren Bereich des Invoke Agents.
  +  **Werkzeugaufruf**: der Werkzeugname von `tool.name` und die Argumente und das Ergebnis von `input.value` und im Bereich des `output.value` Ausführungstools.

Beispiele finden Sie unter [Beispielbereiche ohne Ereignisdatensätze](#openai-agents-examples-without).

## Beispiel für Zeitspannen mit Ereignisdatensätzen
<a name="openai-agents-examples-with"></a>

Wenn die Telemetrie aufgeteilt wird, enthält die Spanne die identifizierenden Attribute und der Inhalt befindet sich in einem korrelierten Ereignisdatensatz. Die folgenden Beispiele stammen von einem Reiseplanungsagenten von OpenAI Agents, der auf Amazon Bedrock Runtime eingesetzt wurde. AgentCore Derselbe Agent wird unter jeder Instrumentierungsbibliothek angezeigt.

**Anmerkung**  
Bei diesen Beispielen handelt es sich nicht um vollständige Datenreihen. Sie zeigen repräsentative Daten aus einer echten Agenteninteraktion, wobei einige Felder weggelassen und lange Werte aus Gründen der Lesbarkeit gekürzt wurden.

### OpenTelemetry
<a name="openai-agents-examples-with-otel"></a>

**Example**  
Das `gen_ai.operation.name` Attribut (`invoke_agent`) identifiziert dies als eine Spanne für den Aufruf-Agenten.  

```
{
  "traceId": "6a01eef11066751d68f90def0da1f80a",
  "spanId": "3a300b0b3fe650e4",
  "name": "invoke_agent openaiOtelTravel",
  "kind": "INTERNAL",
  "scope": {
    "name": "opentelemetry.instrumentation.openai_agents",
    "version": "0.62.1"
  },
  "attributes": {
    "gen_ai.operation.name": "invoke_agent",
    "gen_ai.agent.name": "openaiOtelTravel",
    "gen_ai.system": "openai",
    "gen_ai.provider.name": "openai",
    "gen_ai.request.model": "gpt-4o-mini-2024-07-18",
    "session.id": "sea-nyc-trip-2-turns-openai-otel"
  },
  "status": {
    "code": "OK"
  }
}
```
Der korrelierte Ereignisdatensatz enthält die Konversation. Jede Nachricht `content` ist das OpenAI-Array im Teileformat; die Benutzeraufforderung ist der Text der Benutzernachricht und die Antwort des Agenten ist der Text der Assistentennachricht.  

```
{
  "spanId": "3a300b0b3fe650e4",
  "traceId": "6a01eef11066751d68f90def0da1f80a",
  "scope": {
    "name": "opentelemetry.instrumentation.openai_agents"
  },
  "body": {
    "input": {
      "messages": [
        {
          "role": "user",
          "content": "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"Hey, how can you help me\"}]}]"
        }
      ]
    },
    "output": {
      "messages": [
        {
          "role": "assistant",
          "content": "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"I can assist you with planning your trips ...\"}]}]"
        }
      ]
    }
  }
}
```
Das `gen_ai.operation.name` Attribut (`execute_tool`) identifiziert dies als einen Bereich für das Ausführungstool; es `gen_ai.tool.name` enthält den Namen des Tools. Bei der OpenTelemetry Bibliothek bleiben die Werkzeugargumente und das Ergebnis in den Span-Attributen erhalten, auch wenn die Telemetrie aufgeteilt wird.  

```
{
  "traceId": "6a01eefa5c52f3d86a35038f35f5ba30",
  "spanId": "3cbc4ea5f73fef81",
  "name": "execute_tool search_flights",
  "kind": "INTERNAL",
  "scope": {
    "name": "opentelemetry.instrumentation.openai_agents",
    "version": "0.62.1"
  },
  "attributes": {
    "gen_ai.operation.name": "execute_tool",
    "gen_ai.tool.name": "search_flights",
    "gen_ai.tool.type": "function",
    "gen_ai.tool.call.arguments": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"date\": \"2025-03-15\"}",
    "gen_ai.tool.call.result": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"flights\": [ ... ]}",
    "session.id": "sea-nyc-trip-2-turns-openai-otel"
  },
  "status": {
    "code": "OK"
  }
}
```
Das `gen_ai.operation.name` Attribut (`chat`) identifiziert dies als eine Inferenzspanne. Dieser Bereich enthält die Modellmetadaten und in diesem Zusammenhang die Liste der Tools`gen_ai.tool.definitions`, die dem Agenten zur Verfügung stehen. Die Konversationsnachrichten für den Modellanruf befinden sich im korrelierten Ereignisdatensatz in `body.input` und`body.output`.  

```
{
  "traceId": "6a01eef11066751d68f90def0da1f80a",
  "spanId": "7c1f9a2b4d6e8a03",
  "name": "openai.response",
  "kind": "INTERNAL",
  "scope": {
    "name": "opentelemetry.instrumentation.openai_agents",
    "version": "0.62.1"
  },
  "attributes": {
    "gen_ai.operation.name": "chat",
    "gen_ai.provider.name": "openai",
    "gen_ai.request.model": "gpt-4o-mini-2024-07-18",
    "gen_ai.response.model": "gpt-4o-mini-2024-07-18",
    "gen_ai.usage.input_tokens": 269,
    "gen_ai.usage.output_tokens": 78,
    "gen_ai.tool.definitions": "[{\"type\": \"function\", \"function\": {\"name\": \"search_flights\", \"description\": \"Search for available flights between cities.\", \"parameters\": { ... }}}]",
    "session.id": "sea-nyc-trip-2-turns-openai-otel"
  },
  "status": {
    "code": "OK"
  }
}
```

```
{
  "spanId": "7c1f9a2b4d6e8a03",
  "traceId": "6a01eef11066751d68f90def0da1f80a",
  "scope": {
    "name": "opentelemetry.instrumentation.openai_agents"
  },
  "body": {
    "input": {
      "messages": [
        {
          "role": "user",
          "content": "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"Hey, how can you help me\"}]}]"
        }
      ]
    },
    "output": {
      "messages": [
        {
          "role": "assistant",
          "content": "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"I can assist you with planning your trips ...\"}]}]"
        }
      ]
    }
  }
}
```

### OpenInference
<a name="openai-agents-examples-with-openinference"></a>

In der OpenInference Bibliothek ist der Invoke Agent (`AGENT`) -Bereich ein leerer Container. AgentCore Evaluations rekonstruiert die Benutzereingabe und die Antwort des Agenten anhand des Inference (`LLM`) -Bereichs, dessen Inhalt in einem korrelierten Ereignisdatensatz enthalten ist.

**Example**  
Das `openinference.span.kind` Attribut (`AGENT`) identifiziert dies als Span für den Aufruf des Agenten. Der Span enthält keinen Konversationsinhalt.  

```
{
  "traceId": "6a387ee61078243c1cc455ed45c6c313",
  "spanId": "9a1c7dce81b692cd",
  "name": "openaiOInfTravel",
  "kind": "INTERNAL",
  "scope": {
    "name": "openinference.instrumentation.openai_agents",
    "version": "1.5.0"
  },
  "attributes": {
    "openinference.span.kind": "AGENT",
    "graph.node.id": "openaiOInfTravel",
    "llm.system": "openai",
    "session.id": "sea-nyc-trip-2-turns-openai-oi"
  },
  "status": {
    "code": "OK"
  }
}
```
Das `openinference.span.kind` Attribut (`TOOL`) identifiziert dies als Span für das Ausführungstool; es `tool.name` enthält den Namen des Tools. Die Werkzeugargumente und das Ergebnis befinden sich im korrelierten Ereignisdatensatz.  

```
{
  "traceId": "6a387ef07b8f4f3732fab45d3c0b51ff",
  "spanId": "b4e78cb0a06a6fe2",
  "name": "search_flights",
  "kind": "INTERNAL",
  "scope": {
    "name": "openinference.instrumentation.openai_agents",
    "version": "1.5.0"
  },
  "attributes": {
    "openinference.span.kind": "TOOL",
    "tool.name": "search_flights",
    "input.mime_type": "application/json",
    "output.mime_type": "application/json",
    "session.id": "sea-nyc-trip-2-turns-openai-oi"
  },
  "status": {
    "code": "OK"
  }
}
```

```
{
  "spanId": "b4e78cb0a06a6fe2",
  "traceId": "6a387ef07b8f4f3732fab45d3c0b51ff",
  "scope": {
    "name": "openinference.instrumentation.openai_agents"
  },
  "body": {
    "input": {
      "messages": [
        { "role": "user", "content": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"date\": \"2025-03-15\"}" }
      ]
    },
    "output": {
      "messages": [
        { "role": "assistant", "content": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"flights\": [ ... ]}" }
      ]
    }
  }
}
```
Das `openinference.span.kind` Attribut (`LLM`) identifiziert dies als eine Inferenzspanne. Nachrichtenrollen und Tooldefinitionen befinden sich in den Span-Attributen; der Nachrichteninhalt befindet sich im korrelierten Ereignisdatensatz. ADOT reduziert die Eingaberollen auf`user`, sodass AgentCore Evaluations die letzte Klartext-Eingabemeldung als Benutzeraufforderung verwendet. Die Ausgabenachricht ist das OpenAI Response-Objekt, aus dem AgentCore Evaluations den Antworttext liest.  

```
{
  "traceId": "6a387ee61078243c1cc455ed45c6c313",
  "spanId": "1221a062c7f90a8e",
  "name": "response",
  "kind": "INTERNAL",
  "scope": {
    "name": "openinference.instrumentation.openai_agents",
    "version": "1.5.0"
  },
  "attributes": {
    "openinference.span.kind": "LLM",
    "llm.model_name": "gpt-4o-mini-2024-07-18",
    "llm.input_messages.0.message.role": "system",
    "llm.input_messages.1.message.role": "user",
    "llm.output_messages.0.message.role": "assistant",
    "llm.tools.0.tool.json_schema": "{\"type\": \"function\", \"function\": {\"name\": \"search_flights\", ...}}",
    "session.id": "sea-nyc-trip-2-turns-openai-oi"
  },
  "status": {
    "code": "OK"
  }
}
```

```
{
  "spanId": "1221a062c7f90a8e",
  "traceId": "6a387ee61078243c1cc455ed45c6c313",
  "scope": {
    "name": "openinference.instrumentation.openai_agents"
  },
  "body": {
    "input": {
      "messages": [
        { "role": "user", "content": "[{\"content\": \"Hey, how can you help me\", \"role\": \"user\"}]" },
        { "role": "user", "content": "You are a travel planning assistant. Help users plan trips ..." },
        { "role": "user", "content": "Hey, how can you help me" }
      ]
    },
    "output": {
      "messages": [
        {
          "role": "assistant",
          "content": "{\"id\": \"resp_abc123...\", \"output\": [{\"type\": \"message\", \"content\": [{\"type\": \"output_text\", \"text\": \"I can assist you with planning your trips ...\"}]}]}"
        }
      ]
    }
  }
}
```

## Beispiel: Spans ohne Ereignisdatensätze
<a name="openai-agents-examples-without"></a>

Wenn die Telemetrie nicht aufgeteilt wird, verbleibt derselbe Inhalt in den Span-Attributen und es wird kein separater Ereignisdatensatz erstellt. Die folgenden Beispiele stammen von einem Reiseplanungsagenten von OpenAI Agents. Derselbe Agent wird unter jeder Instrumentenbibliothek angezeigt.

**Anmerkung**  
Bei diesen Beispielen handelt es sich nicht um vollständige Datenreihen. Sie zeigen repräsentative Daten aus einer echten Agenteninteraktion, wobei einige Felder weggelassen und lange Werte aus Gründen der Lesbarkeit gekürzt wurden.

### OpenTelemetry
<a name="openai-agents-examples-without-otel"></a>

**Example**  
Das `gen_ai.input.messages` Attribut enthält die Benutzeraufforderung und das `gen_ai.output.messages` Attribut enthält die Antwort des Agenten. Beide sind OpenAI-Arrays im Teileformat.  

```
{
  "traceId": "6a4de7b85e61747e6b568a1f4768e89d",
  "spanId": "50656fd77904d125",
  "name": "invoke_agent openaiOtelTravel",
  "kind": "INTERNAL",
  "scope": {
    "name": "opentelemetry.instrumentation.openai_agents",
    "version": "0.62.1"
  },
  "attributes": {
    "gen_ai.operation.name": "invoke_agent",
    "gen_ai.agent.name": "openaiOtelTravel",
    "gen_ai.system": "openai",
    "gen_ai.input.messages": "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"Hey, how can you help me\"}]}]",
    "gen_ai.output.messages": "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"I can assist you with planning your trips ...\"}]}]",
    "session.id": "sea-nyc-trip-2-turns-unified"
  },
  "status": {
    "code": "OK"
  }
}
```
Das `gen_ai.tool.call.arguments` Attribut enthält die Werkzeugargumente und das `gen_ai.tool.call.result` Attribut enthält das Werkzeugergebnis.  

```
{
  "traceId": "6a4de7c376913db82e6f0f336a16731d",
  "spanId": "8840e8e23724ebd7",
  "name": "execute_tool search_flights",
  "kind": "INTERNAL",
  "scope": {
    "name": "opentelemetry.instrumentation.openai_agents",
    "version": "0.62.1"
  },
  "attributes": {
    "gen_ai.operation.name": "execute_tool",
    "gen_ai.tool.name": "search_flights",
    "gen_ai.tool.call.arguments": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"date\": \"2025-03-15\"}",
    "gen_ai.tool.call.result": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"flights\": [ ... ]}",
    "session.id": "sea-nyc-trip-2-turns-unified"
  },
  "status": {
    "code": "OK"
  }
}
```
Das `gen_ai.operation.name` Attribut (`chat`) identifiziert dies als eine Inferenzspanne. Die Modellmetadaten und das `gen_ai.tool.definitions` Attribut (die Liste der Tools, die dem Agenten zur Verfügung stehen) bleiben in der Spanne unverändert.  

```
{
  "traceId": "6a4de7b85e61747e6b568a1f4768e89d",
  "spanId": "9b2c1e5f7a3d0846",
  "name": "openai.response",
  "kind": "INTERNAL",
  "scope": {
    "name": "opentelemetry.instrumentation.openai_agents",
    "version": "0.62.1"
  },
  "attributes": {
    "gen_ai.operation.name": "chat",
    "gen_ai.provider.name": "openai",
    "gen_ai.request.model": "gpt-4o-mini-2024-07-18",
    "gen_ai.response.model": "gpt-4o-mini-2024-07-18",
    "gen_ai.usage.input_tokens": 269,
    "gen_ai.usage.output_tokens": 78,
    "gen_ai.tool.definitions": "[{\"type\": \"function\", \"function\": {\"name\": \"search_flights\", \"description\": \"Search for available flights between cities.\", \"parameters\": { ... }}}]",
    "session.id": "sea-nyc-trip-2-turns-unified"
  },
  "status": {
    "code": "OK"
  }
}
```

### OpenInference
<a name="openai-agents-examples-without-openinference"></a>

**Example**  
Das `input.value` Attribut enthält die Werkzeugargumente und das `output.value` Attribut enthält das Werkzeugergebnis.  

```
{
  "traceId": "6a387ef07b8f4f3732fab45d3c0b51ff",
  "spanId": "d5a1c9e70b46f312",
  "name": "search_flights",
  "kind": "INTERNAL",
  "scope": {
    "name": "openinference.instrumentation.openai_agents",
    "version": "1.5.1"
  },
  "attributes": {
    "openinference.span.kind": "TOOL",
    "tool.name": "search_flights",
    "input.value": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"date\": \"2025-03-15\"}",
    "output.value": "{\"origin\": \"SEA\", \"destination\": \"NYC\", \"flights\": [ ... ]}",
    "session.id": "sea-nyc-trip-2-turns-oi"
  },
  "status": {
    "code": "OK"
  }
}
```
Der Nachrichteninhalt befindet sich direkt in den indizierten Attributen. Die `llm.input_messages. ` Attribute enthalten die Systemaufforderung und die Benutzeraufforderung, und die `llm.output_messages.` Attribute enthalten die Agentenantwort. AgentCore Evaluations rekonstruiert die Benutzereingabe und die Agentenantwort aus diesem Bereich und füllt den leeren Bereich „Agent aufrufen“ () wieder auf. `AGENT`  

```
{
  "traceId": "6a387ee61078243c1cc455ed45c6c313",
  "spanId": "c9f0a2b41d773e88",
  "name": "response",
  "kind": "INTERNAL",
  "scope": {
    "name": "openinference.instrumentation.openai_agents",
    "version": "1.5.1"
  },
  "attributes": {
    "openinference.span.kind": "LLM",
    "llm.model_name": "gpt-4o-mini-2024-07-18",
    "llm.input_messages.0.message.role": "system",
    "llm.input_messages.0.message.content": "You are a travel planning assistant ...",
    "llm.input_messages.1.message.role": "user",
    "llm.input_messages.1.message.content": "Hey, how can you help me",
    "llm.output_messages.0.message.role": "assistant",
    "llm.output_messages.0.message.contents.0.message_content.text": "I can assist you with planning your trips ...",
    "session.id": "sea-nyc-trip-2-turns-oi"
  },
  "status": {
    "code": "OK"
  }
}
```