View a markdown version of this page

Agen OpenAI - Batu Dasar Amazon AgentCore

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Agen OpenAI

Halaman ini menjelaskan cara instrumen agen OpenAI Agents, bagaimana rentang diidentifikasi, dan bagaimana bidang evaluasi diekstraksi. AgentCore Evaluasi mendukung Agen OpenAI yang dibangun di Python dan TypeScript; halaman ini mencakup setiap bahasa secara terpisah, dalam dukungan agen Python dan dukungan TypeScript agen.

Topik

Dukungan agen Python

Agen Python OpenAI Agents memancarkan rentang di bawah nama lingkup opentelemetry.instrumentation.openai_agents (OpenTelemetry) atau openinference.instrumentation.openai_agents (OpenInference).

Instrumentasikan agen Anda

Anda dapat menginstrumenkan agen OpenAI Agents dengan salah satu dari dua pustaka instrumentasi: OpenTelemetry (opentelemetry-instrumentation-openai-agents) atau OpenInference (openinference-instrumentation-openai-agents). Amazon Bedrock AgentCore Evaluations mendukung kedua perpustakaan. Pustaka memancarkan nama cakupan yang berbeda dan menggunakan atribut rentang yang berbeda. Layanan evaluasi mengekstrak nilai yang sama dari masing-masing.

Saat agen Anda berjalan dengan AWS Distro for OpenTelemetry (ADOT), seperti pada Amazon Bedrock AgentCore Runtime, Anda tidak perlu menambahkan kode instrumentasi eksplisit. Menambahkan pustaka instrumentasi ke dependensi proyek Anda sudah cukup. ADOT menemukannya saat startup dan mengaktifkannya secara otomatis.

Tambahkan pustaka instrumentasi untuk jalur yang Anda inginkan ke dependensi Anda. Gunakan versi terbaru yang tersedia kecuali Anda memiliki alasan untuk menyematkan.

contoh
OpenTelemetry

CATATAN: Gunakan versi 0.61.0 atau yang lebih baru. Ini adalah versi paling awal yang diuji dengan layanan evaluasi.

Tambahkan opentelemetry-instrumentation-openai-agents ke dependensi Anda. Nama lingkup yang dipancarkan adalahopentelemetry.instrumentation.openai_agents.

requirements.txt:

opentelemetry-instrumentation-openai-agents>=0.61.0

pyproject.toml:

[project] dependencies = [ "opentelemetry-instrumentation-openai-agents>=0.61.0", ]
OpenInference

CATATAN: Gunakan versi 1.5.0 atau yang lebih baru. Ini adalah versi paling awal yang diuji dengan layanan evaluasi.

Tambahkan openinference-instrumentation-openai-agents ke dependensi Anda. Nama lingkup yang dipancarkan adalahopeninference.instrumentation.openai_agents.

requirements.txt:

openinference-instrumentation-openai-agents>=1.5.0

pyproject.toml:

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

Instrumentasi adalah salah satu langkah dalam mengatur observabilitas. Untuk mengekspor telemetri untuk evaluasi, selesaikan penyiapan lengkap di Menyi apkan observ abilitas.

Bagaimana rentang diidentifikasi

Atribut yang digunakan untuk mengklasifikasikan rentang berbeda antara dua pustaka instrumentasi.

contoh
OpenTelemetry

Pust OpenTelemetry aka instrumentasi mengklasifikasikan rentang menggunakan atribut. gen_ai.operation.name

Jenis rentang Mengidentifikasi atribut

Memanggil agen

gen_ai.operation.name = invoke_agent

Jalankan alat

gen_ai.operation.name = execute_tool

Inferensi

gen_ai.operation.name = chat

catatan

Agen OpenAI juga memancarkan rentang batas belokan internal dengan =. gen_ai.operation.name unknown Layanan evaluasi melewatkan ini.

OpenInference

Pust OpenInference aka instrumentasi mengklasifikasikan rentang menggunakan atribut. openinference.span.kind

Jenis rentang Mengidentifikasi atribut

Memanggil agen

openinference.span.kind= AGENT atau CHAIN

Jalankan alat

openinference.span.kind = TOOL

Inferensi

openinference.span.kind = LLM

catatan

Dengan per OpenInference pustakaan, bent AGENT ang CHAIN dan adalah wadah struktural kosong: mereka tidak membawa konten percakapan. Prompt pengguna dan respons agen direkonstruksi dari rentang inferensi (LLM) dalam jejak yang sama.

Bagaimana bidang evaluasi diekstraksi

OpenAI Agents membuat serial pesan dalam format berbasis bagian, di mana setiap pesan membawa parts array blok konten yang diketik (misalnya,). [{"role": "user", "parts": [{"type": "text", "content": "…​"}]}] Dengan per OpenTelemetry pustakaan, AgentCore Evaluasi mengurai teks dari bagian-bagian ini. Dengan pust OpenInference aka, output model adalah objek Response OpenAI lengkap, dan AgentCore Evaluasi membaca teks respons darioutput[].content[].text.

Lokasi konten ini tergantung pada bagaimana telemetri dikumpulkan. Atribut pengi gen_ai.operation.name dentifikasi (atauopeninference.span.kind) berada pada rentang dalam kedua kasus. Untuk informasi selengkapnya, lihat Peng aturan dan pengiriman telemetri.

Dari catatan acara

Dengan telemetri terpisah, AgentCore Evaluasi membaca konten percakapan dari catatan peristiwa yang berkorelasi dengan setiap rentang. Lokasi input dan output alat berbeda antara dua pustaka:

  • OpenTelemetry:

    • Prompt pengguna dan respons agen: dari catatan peristiwa span agen pemanggilan, di body.input danbody.output.

    • Panggilan alat: nama alat darigen_ai.tool.name, dan argumen serta hasil dari gen_ai.tool.call.arguments dan gen_ai.tool.call.result pada rentang alat eksekusi. Dengan pust OpenTelemetry aka, argumen alat dan hasil tetap pada atribut rentang bahkan dengan telemetri terpisah.

  • OpenInference:

    • Prompt pengguna dan respons agen: direkonstruksi dari catatan peristiwa rentang inferensi. AgentCore Evaluasi membaca pesan dari body.input danbody.output, kemudian mengisi kembali rentang agen pemanggilan kosong dengan prompt pengguna dan respons agen.

    • Panggilan alat: nama alat dari tool.name rentang alat eksekusi. Argumen alat dan hasil berasal dari catatan peristiwa span itu, di body.input danbody.output.

Untuk informasi selengkapnya, lihat Contoh rentang dalam telem etri terpisah.

Dari atribut rentang

Dengan telemetri terpadu, konten yang sama tetap pada rentang sebagai atribut. Atribut tergantung pada pustaka instrumentasi:

  • OpenTelemetry:

    • Prompt pengguna dan respons agen: dari gen_ai.input.messages dan gen_ai.output.messages pada rentang agen pemanggilan.

    • Panggilan alat: nama alat darigen_ai.tool.name, dan argumen serta hasil dari gen_ai.tool.call.arguments dangen_ai.tool.call.result, pada rentang alat eksekusi.

  • OpenInference:

    • Prompt pengguna dan respons agen: dari atribut pesan yang diindeks pada rentang inferensi (llm.input_messages.*danllm.output_messages.*), kemudian diisi ulang ke rentang agen pemanggilan kosong.

    • Panggilan alat: nama alat daritool.name, dan argumen serta hasil dari input.value danoutput.value, pada rentang alat eksekusi.

Untuk informasi selengkapnya, lihat Contoh rentang dalam telem etri terpadu.

Contoh rentang dalam telemetri terpisah

Dengan telemetri terpisah, rentang membawa atribut pengidentifikasi dan konten hidup dalam catatan peristiwa yang berkorelasi. Contoh berikut berasal dari agen perencanaan perjalanan Python OpenAI Agents yang digunakan di Amazon Bedrock Runtime. AgentCore Agen yang sama ditampilkan di bawah setiap perpustakaan instrumentasi.

catatan

Contoh-contoh ini bukan rentang lengkap. Mereka menunjukkan data representatif dari interaksi agen nyata, dengan beberapa bidang dihilangkan dan nilai panjang dipotong untuk keterbacaan.

OpenTelemetry

contoh
Invoke agent span

A gen_ai.operation.name tribut (invoke_agent) mengidentifikasi ini sebagai rentang agen invoke.

{ "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" } }

Catatan peristiwa yang berkorelasi membawa percakapan. Setiap pesan content adalah array format bagian OpenAI; prompt pengguna adalah teks pesan pengguna dan respons agen adalah teks pesan asisten.

{ "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 ...\"}]}]" } ] } } }
Execute tool span

A gen_ai.operation.name tribut (execute_tool) mengidentifikasi ini sebagai rentang alat eksekusi; gen_ai.tool.name memegang nama alat. Dengan pust OpenTelemetry aka, argumen alat dan hasil tetap pada atribut rentang bahkan dengan telemetri terpisah.

{ "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" } }
Inference span

A gen_ai.operation.name tribut (chat) mengidentifikasi ini sebagai rentang inferensi. Rentang ini membawa metadata model dangen_ai.tool.definitions, dalam, daftar alat yang tersedia untuk agen. Pesan percakapan untuk panggilan model langsung dalam catatan peristiwa yang berkorelasi, di body.input danbody.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

Dengan pust OpenInference aka, span invoke agent (AGENT) adalah wadah kosong. AgentCore Evaluasi merekonstruksi prompt pengguna dan respons agen dari rentang inferensi (LLM), yang kontennya berada dalam catatan peristiwa yang berkorelasi.

contoh
Invoke agent span

A openinference.span.kind tribut (AGENT) mengidentifikasi ini sebagai rentang agen invoke. Rentang tidak membawa konten percakapan.

{ "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" } }
Execute tool span

A openinference.span.kind tribut (TOOL) mengidentifikasi ini sebagai rentang alat eksekusi; tool.name memegang nama alat. Argumen alat dan hasil hidup dalam catatan peristiwa yang berkorelasi.

{ "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\": [ ... ]}" } ] } } }
Inference span

A openinference.span.kind tribut (LLM) mengidentifikasi ini sebagai rentang inferensi. Peran pesan dan definisi alat ada pada atribut rentang; konten pesan berada di catatan peristiwa yang berkorelasi. ADOT meratakan peran input keuser, sehingga AgentCore Evaluasi menggunakan pesan input teks biasa terakhir sebagai prompt pengguna. Pesan keluaran adalah objek Response OpenAI, dari mana AgentCore Evaluasi membaca teks respons.

{ "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 ...\"}]}]}" } ] } } }

Contoh rentang dalam telemetri terpadu

Dengan telemetri terpadu, konten yang sama tetap pada atribut rentang dan tidak ada catatan peristiwa terpisah yang dihasilkan. Contoh berikut berasal dari agen perencanaan perjalanan Python OpenAI Agents. Agen yang sama ditampilkan di bawah setiap perpustakaan instrumentasi.

catatan

Contoh-contoh ini bukan rentang lengkap. Mereka menunjukkan data representatif dari interaksi agen nyata, dengan beberapa bidang dihilangkan dan nilai panjang dipotong untuk keterbacaan.

OpenTelemetry

contoh
Invoke agent span

A gen_ai.input.messages tribut menyimpan prompt pengguna, dan gen_ai.output.messages atribut menyimpan respons agen. Keduanya adalah array format bagian OpenAI.

{ "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" } }
Execute tool span

A gen_ai.tool.call.arguments tribut menyimpan argumen alat, dan gen_ai.tool.call.result atribut menyimpan hasil alat.

{ "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" } }
Inference span

A gen_ai.operation.name tribut (chat) mengidentifikasi ini sebagai rentang inferensi. Metadata model dan gen_ai.tool.definitions atribut (daftar alat yang tersedia untuk agen) tetap sebaris pada rentang.

{ "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

contoh
Execute tool span

A input.value tribut menyimpan argumen alat, dan output.value atribut menyimpan hasil alat.

{ "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" } }
Inference span

Konten pesan sebaris pada atribut yang diindeks. A llm.input_messages.* tribut menahan prompt sistem dan prompt pengguna, dan llm.output_messages.* atribut menahan respons agen. AgentCore Evaluasi merekonstruksi prompt pengguna dan respons agen dari rentang ini dan mengisi kembali rentang invoke agent () kosong. 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" } }

TypeScript dukungan agen

Agen TypeScript OpenAI Agents memancarkan tipe rentang yang sama, mengidentifikasi atribut, dan tata letak konten sebagai agen Python, sehingga layanan evaluasi membacanya dengan cara yang sama. Ada dua pustaka TypeScript instrumentasi, masing-masing dengan nama cakupannya sendiri.

Instrumentasikan agen Anda

Tambahkan pustaka instrumentasi untuk konvensi yang Anda inginkan ke TypeScript dependensi Anda. Gunakan versi terbaru yang tersedia kecuali Anda memiliki alasan untuk menyematkan.

contoh
ADOT (OpenTelemetry)

Untuk TypeScript agen di ADOT, tambahkan paket autoinstrumentasi AWS Distro Node (@aws/aws-distro-opentelemetry-node-autoinstrumentation) ke dependensi Anda. Ini termasuk instrumentasi OpenAI Agents bawaan, yang aktif saat startup dan memancarkan nama cakupan. @aws/aws-distro-opentelemetry-instrumentation-openai-agents

package.json:

{ "dependencies": { "@aws/aws-distro-opentelemetry-node-autoinstrumentation": "^0.12.0" } }
OpenInference

Tambahkan @arizeai/openinference-instrumentation-openai-agents ke dependensi Anda. Nama lingkup yang dipancarkan adalah@arizeai/openinference-instrumentation-openai-agents.

package.json:

{ "dependencies": { "@arizeai/openinference-instrumentation-openai-agents": "^0.2.2" } }
catatan

Instrumentasi adalah salah satu langkah dalam mengatur observabilitas. Untuk mengekspor telemetri untuk evaluasi, selesaikan penyiapan lengkap di Menyi apkan observ abilitas.

Bagaimana rentang diidentifikasi

Identifikasi rentang sama dengan agen Python. P ADOT-native OpenTelemetry ustaka (dari paket autoinstrumentasi AWS Distro Node@aws/aws-distro-opentelemetry-node-autoinstrumentation, memancarkan nama cakupan@aws/aws-distro-opentelemetry-instrumentation-openai-agents) setgen_ai.operation.name, dan pustaka OpenInference JS (@arizeai/openinference-instrumentation-openai-agents) set. openinference.span.kind Untuk nilainya, lihat Bagaimana rentang diidentifikasi di bawah dukungan agen Python.

Bagaimana bidang evaluasi diekstraksi

Ekstraksi lapangan membaca atribut yang sama seperti untuk agen Python. Perhatikan bahwa dengan pust ADOT-native TypeScript aka, rentang agen invoke adalah wadah struktural: prompt pengguna dan respons agen direkonstruksi dari rentang inferensi (chat) daripada rentang agen invoke, tidak seperti pust OpenTelemetry aka Python, yang menyimpannya pada rentang agen invoke. Untuk dari mana setiap bidang dibaca, lihat Bagaimana bidang evaluasi diekstraksi di bawah dukungan agen Python.

Contoh rentang dari agen TypeScript

Contoh berikut berasal dari agen perencanaan perjalanan TypeScript OpenAI Agents yang digunakan di Amazon Bedrock AgentCore Runtime dengan telemetri terpadu. Agen yang sama ditampilkan di bawah setiap perpustakaan instrumentasi.

catatan

Contoh-contoh ini bukan rentang lengkap. Mereka menunjukkan data representatif dari interaksi agen nyata, dengan beberapa bidang dihilangkan dan nilai panjang dipotong untuk keterbacaan.

OpenTelemetry

Dengan pust ADOT-native aka (dari paket autoinstrumentasi AWS Distro Node@aws/aws-distro-opentelemetry-node-autoinstrumentation, memancarkan nama cakupan@aws/aws-distro-opentelemetry-instrumentation-openai-agents), rentang agen invoke adalah wadah struktural dan konten percakapan hidup pada rentang inferensi (chat), dalam format bagian dan atribut. gen_ai.input.messages gen_ai.output.messages AgentCore Evaluasi merekonstruksi prompt pengguna dan respons agen dari rentang inferensi.

contoh
Invoke agent span

A gen_ai.operation.name tribut (invoke_agent) mengidentifikasi ini sebagai rentang agen invoke. Rentang membawa nama agen dan daftar alat tetapi tidak ada konten percakapan.

{ "traceId": "6a6bc695459e41aa14a172bb41d3246d", "spanId": "9a1c7dce81b692cd", "name": "invoke_agent openaiAdotTS", "kind": "INTERNAL", "scope": { "name": "@aws/aws-distro-opentelemetry-instrumentation-openai-agents", "version": "0.12.0" }, "attributes": { "gen_ai.operation.name": "invoke_agent", "gen_ai.agent.name": "openaiAdotTS", "gen_ai.provider.name": "openai", "open_ai.agent.tools": "[\"search_flights\", \"book_flight\", \"search_hotels\", \"book_hotel\", \"search_activities\", \"book_activity\"]", "session.id": "sea-nyc-trip-2-turns" }, "status": { "code": "OK" } }
Execute tool span

A gen_ai.operation.name tribut (execute_tool) mengidentifikasi ini sebagai rentang alat eksekusi; gen_ai.tool.name memegang nama alat. gen_ai.tool.call.resultAtribut gen_ai.tool.call.arguments dan menyimpan argumen alat dan hasil.

{ "traceId": "6a6bc695459e41aa14a172bb41d3246d", "spanId": "3cbc4ea5f73fef81", "name": "execute_tool search_flights", "kind": "INTERNAL", "scope": { "name": "@aws/aws-distro-opentelemetry-instrumentation-openai-agents", "version": "0.12.0" }, "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" }, "status": { "code": "OK" } }
Inference span

A gen_ai.operation.name tribut (chat) mengidentifikasi ini sebagai rentang inferensi. gen_ai.output.messagesAtribut gen_ai.input.messages and menahan percakapan dalam format bagian, gen_ai.system_instructions menahan prompt sistem, dan mencant gen_ai.tool.definitions umkan alat yang tersedia untuk agen.

{ "traceId": "6a6bc695459e41aa14a172bb41d3246d", "spanId": "7c1f9a2b4d6e8a03", "name": "chat gpt-4o-mini-2024-07-18", "kind": "INTERNAL", "scope": { "name": "@aws/aws-distro-opentelemetry-instrumentation-openai-agents", "version": "0.12.0" }, "attributes": { "gen_ai.operation.name": "chat", "gen_ai.provider.name": "openai", "gen_ai.response.model": "gpt-4o-mini-2024-07-18", "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 ...\"}]}]", "gen_ai.system_instructions": "[{\"type\": \"text\", \"content\": \"You are a travel planning assistant ...\"}]", "gen_ai.tool.definitions": "[{\"type\": \"function\", \"name\": \"search_flights\", \"description\": \"Search for available flights between cities.\", ...}]", "gen_ai.usage.input_tokens": 422, "gen_ai.usage.output_tokens": 82, "session.id": "sea-nyc-trip-2-turns" }, "status": { "code": "OK" } }

OpenInference

Dengan pust OpenInference aka JS, bentangan invoke agent (AGENT) dan turn (CHAIN) adalah wadah kosong. AgentCore Evaluasi merekonstruksi prompt pengguna dan respons agen dari rentang inferensi (LLM), yang pesannya ada di atribut dan diindeksllm.input_messages.*. llm.output_messages.*

contoh
Invoke agent span

A openinference.span.kind tribut (AGENT) mengidentifikasi ini sebagai rentang agen invoke. Rentang tidak membawa konten percakapan.

{ "traceId": "6a6bc695459e41aa14a172bb41d3246d", "spanId": "9a1c7dce81b692cd", "name": "openaiAgentsOInf", "kind": "INTERNAL", "scope": { "name": "@arizeai/openinference-instrumentation-openai-agents", "version": "0.2.2" }, "attributes": { "openinference.span.kind": "AGENT", "graph.node.id": "openaiAgentsOInf", "llm.system": "openai", "session.id": "sea-nyc-trip-2-turns" }, "status": { "code": "OK" } }
Execute tool span

A openinference.span.kind tribut (TOOL) mengidentifikasi ini sebagai rentang alat eksekusi; tool.name memegang nama alat. output.valueAtribut input.value dan menyimpan argumen alat dan hasil.

{ "traceId": "6a6bc695459e41aa14a172bb41d3246d", "spanId": "b4e78cb0a06a6fe2", "name": "search_flights", "kind": "INTERNAL", "scope": { "name": "@arizeai/openinference-instrumentation-openai-agents", "version": "0.2.2" }, "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" }, "status": { "code": "OK" } }
Inference span

A openinference.span.kind tribut (LLM) mengidentifikasi ini sebagai rentang inferensi. A llm.input_messages.* tribut menahan prompt sistem dan prompt pengguna, llm.output_messages.* atribut menahan respons agen, dan llm.tools.*.tool.json_schema atribut menyimpan definisi alat. AgentCore Evaluasi merekonstruksi prompt pengguna dan respons agen dari rentang ini dan mengisi kembali rentang invoke agent () kosong. AGENT

{ "traceId": "6a6bc695459e41aa14a172bb41d3246d", "spanId": "1221a062c7f90a8e", "name": "response", "kind": "INTERNAL", "scope": { "name": "@arizeai/openinference-instrumentation-openai-agents", "version": "0.2.2" }, "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 travel planning by ...", "llm.tools.0.tool.json_schema": "{\"type\": \"function\", \"function\": {\"name\": \"search_flights\", ...}}", "session.id": "sea-nyc-trip-2-turns" }, "status": { "code": "OK" } }