Bagikan melalui


Melacak dan mengamati agen AI di Microsoft Foundry (pratinjau) (klasik)

Hanya berlaku untuk:Portal Foundry (klasik). Artikel ini tidak tersedia untuk portal Foundry baru. Pelajari selengkapnya tentang portal baru.

Nota

Tautan dalam artikel ini mungkin membuka konten dalam dokumentasi Microsoft Foundry baru alih-alih dokumentasi Foundry (klasik) yang Anda lihat sekarang.

Penting

Item-item yang ditandai (pratinjau) dalam artikel ini saat ini sedang berada dalam pratinjau publik. Pratinjau ini disediakan tanpa kesepakatan tingkat layanan, dan kami tidak merekomendasikannya untuk penggunaan dalam lingkungan produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Dalam artikel ini, Anda akan mempelajari cara:

  • Memahami konsep pelacakan utama.
  • Lacak dan amati agen AI di Foundry.
  • Jelajahi konvensi semantik baru dengan pengamatan multi-agen.
  • Integrasikan dengan kerangka kerja agen populer.
  • Lihat jejak di portal Foundry dan Azure Monitor.
  • Lihat benang agen di ruang uji coba Agen.

Menentukan penalaran di balik eksekusi agen Anda penting untuk pemecahan masalah dan penelusuran kesalahan. Namun, mungkin sulit bagi agen yang kompleks karena berbagai alasan:

  • Mungkin ada sejumlah besar langkah yang terlibat dalam menghasilkan respons, sehingga sulit untuk melacak semuanya.
  • Urutan langkah-langkah mungkin bervariasi berdasarkan input pengguna.
  • Masukan dan keluaran pada setiap tahap mungkin cukup panjang dan layak untuk diperiksa dengan lebih rinci.
  • Setiap langkah runtime agen mungkin juga melibatkan proses bersarang. Misalnya, agen mungkin memanggil alat, yang menggunakan proses lain, yang kemudian memanggil alat lain. Jika Anda melihat output yang aneh atau salah dari eksekusi agen utama, mungkin sulit untuk menentukan dengan tepat tempat masalah diperkenalkan dalam eksekusi.

Hasil pelacakan menyelesaikan masalah ini dengan memungkinkan Anda melihat input dan output dari setiap primitif yang terlibat dalam eksekusi agen tertentu. Hasilnya ditampilkan dalam urutan primitif dipanggil, sehingga memudahkan untuk memahami dan men-debug perilaku agen AI Anda.

Gambaran umum konsep kunci pelacakan

Berikut adalah ringkasan singkat konsep utama sebelum getting started:

Konsep utama Deskripsi
Tanda-tanda Jejak menangkap perjalanan permintaan atau alur kerja melalui aplikasi Anda dengan merekam peristiwa dan perubahan status, seperti panggilan fungsi, nilai, dan peristiwa sistem. Lihat Jejak OpenTelemetry.
Rentang Span adalah blok penyusun pelacakan, mewakili operasi tunggal dalam pelacakan. Setiap rentang menangkap waktu mulai dan berakhir, atribut, dan dapat ditumpuk untuk menunjukkan hubungan hierarkis. Anda dapat melihat tumpukan panggilan lengkap dan urutan operasi.
Attributes Atribut adalah pasangan kunci-nilai yang dilampirkan ke lintasan dan jangkauan. Mereka menyediakan metadata kontekstual seperti parameter fungsi, nilai pengembalian, atau anotasi kustom. Ini memperkaya data pelacakan, membuatnya lebih informatif dan berguna untuk analisis.
Konvensi semantik OpenTelemetry mendefinisikan konvensi semantik untuk menstandarkan nama dan format untuk melacak atribut data. Konvensi ini memudahkan untuk menafsirkan dan menganalisis data di seluruh alat dan platform. Untuk mempelajari lebih lanjut, lihat Konvensi Semantik OpenTelemetry.
Jalur pengekspor Pengekspor jejak mengirim data pelacakan ke sistem backend untuk penyimpanan dan analisis. Azure AI mendukung ekspor jejak ke Azure Monitor dan platform yang kompatibel dengan OpenTelemetry lainnya, memungkinkan integrasi dengan berbagai alat pengamatan.

Praktik terbaik

  • Gunakan atribut rentang yang konsisten.
  • Mengaitkan ID pelaksanaan evaluasi untuk analisis kualitas dan performa.
  • Menyunting konten sensitif. Hindari menyimpan rahasia dalam atribut.

Memperluas OpenTelemetry dengan pengamatan multi-agen

Microsoft meningkatkan pengamatan multi-agen dengan memperkenalkan konvensi semantik baru ke OpenTelemetry, dikembangkan secara kolaboratif dengan Outshift, mesin inkubasi Cisco. Penambahan ini, dibangun berdasarkan OpenTelemetry dan W3C Trace Context, menetapkan praktik standar untuk pelacakan dan telemetri dalam sistem multi-agen. Mereka memfasilitasi pengelogan metrik utama yang konsisten untuk kualitas, performa, keamanan, dan biaya. Pendekatan sistematis ini memungkinkan visibilitas yang lebih komprehensif ke dalam alur kerja multi-agen, termasuk pemanggilan dan kolaborasi alat. Microsoft mengintegrasikan kemajuan ini ke dalam paket AI Microsoft Foundry, Microsoft Agent Framework, Kernel Semantik, dan Azure untuk LangChain, LangGraph, dan OpenAI Agents SDK. Dengan menggunakan Foundry, pelanggan bisa mendapatkan pengamatan terpadu untuk sistem agenik yang dibangun menggunakan salah satu kerangka kerja ini. Pelajari selengkapnya tentang melacak integrasi.

Tipe Konteks/Rentang Induk Nama/Atribut/Peristiwa Kegunaan
Rentang eksekusi_tugas Menangkap perencanaan tugas dan penyebaran peristiwa, memberikan wawasan tentang bagaimana tugas diurai dan didistribusikan.
Rentang Anak invoke_agent interaksi_agen_ke_agen Melacak komunikasi antar agen.
Rentang Anak invoke_agent agent.state.management Konteks efektif, manajemen memori jangka pendek atau panjang.
Rentang Anak invoke_agent perencanaan_agen Mencatat langkah-langkah perencanaan yang dilakukan secara internal oleh agen.
Rentang Anak invoke_agent orkestrasi agen Perekaman atau pengelolaan orkestrasi antar agen.
Attribute invoke_agent tool_definitions Menjelaskan tujuan atau konfigurasi alat.
Attribute invoke_agent llm_spans Merekam rentang panggilan model.
Attribute menjalankan_alat tool.call.arguments Mencatat argumen yang diteruskan selama pemanggilan alat.
Attribute menjalankan_alat hasil.panggilan.alat Merekam hasil yang dikembalikan oleh alat.
Event Evaluasi (nama, error.type, label) Memungkinkan evaluasi terstruktur performa agen dan pengambilan keputusan.

Menyiapkan pelacakan di Microsoft Foundry SDK

Untuk penyelesaian obrolan atau membangun agen dengan Foundry, instal:

pip install azure-ai-projects azure-identity

Untuk pelacakan instrumen, instal pustaka instrumentasi berikut:

pip install azure-monitor-opentelemetry opentelemetry-sdk

Untuk melihat jejak di Foundry, sambungkan sumber daya Application Insights ke foundry project Anda.

  1. Arahkan ke Pelacakan pada panel navigasi kiri portal Foundry.
  2. Buat sumber daya Application Insights baru jika Anda belum memilikinya.
  3. Sambungkan sumber daya ke project Foundry Anda.

Pelacakan instrumen dalam kode Anda

Untuk melacak konten pesan obrolan, atur AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED variabel lingkungan ke true (tidak peka huruf besar/kecil). Konten ini mungkin berisi data pribadi. Untuk informasi selengkapnya, lihat pustaka klien Azure Core Tracing OpenTelemetry untuk Python.

import os
os.environ["AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED"] = "true" # False by default

Mari kita mulai melengkapi agen kita dengan pelacakan OpenTelemetry dengan memulai dari mengautentikasi dan menghubungkan ke Proyek AI Azure Anda menggunakan AIProjectClient.

from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
project_client = AIProjectClient(
    credential=DefaultAzureCredential(),
    endpoint=os.environ["PROJECT_ENDPOINT"],
)

Selanjutnya, ambil string koneksi dari sumber daya Application Insights yang terhubung ke proyek Anda dan siapkan eksportir OTLP untuk mengirim telemetri ke Azure Monitor.

from azure.monitor.opentelemetry import configure_azure_monitor

connection_string = project_client.telemetry.get_application_insights_connection_string()
configure_azure_monitor(connection_string=connection_string) #enable telemetry collection

Sekarang, lacak kode tempat Anda membuat dan menjalankan agen dan pesan pengguna di Project AI Azure, sehingga Anda dapat melihat langkah-langkah terperinci untuk pemecahan masalah atau pemantauan.

from opentelemetry import trace
tracer = trace.get_tracer(__name__)

with tracer.start_as_current_span("example-tracing"):
    agent = project_client.agents.create_agent(
        model=os.environ["MODEL_DEPLOYMENT_NAME"],
        name="my-assistant",
        instructions="You are a helpful assistant"
    )
    thread = project_client.agents.threads.create()
    message = project_client.agents.messages.create(
        thread_id=thread.id, role="user", content="Tell me a joke"
    )
    run = project_client.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)

Setelah menjalankan agen Anda, Anda dapat mulai melihat trace di portal Foundry.

Jejak log secara lokal

Untuk menghubungkan ke Dasbor Aspire atau backend yang kompatibel dengan OpenTelemetry lainnya, pasang pengekspor Protokol OpenTelemetry (OTLP). Dengan menggunakan pengekspor ini, Anda dapat mencetak jejak ke konsol atau menggunakan penampil lokal seperti Dasbor Aspire.

pip install azure-core-tracing-opentelemetry opentelemetry-exporter-otlp opentelemetry-sdk

Selanjutnya, konfigurasikan pelacakan untuk output konsol:

from azure.core.settings import settings
settings.tracing_implementation = "opentelemetry"

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import SimpleSpanProcessor, ConsoleSpanExporter

# Setup tracing to console
span_exporter = ConsoleSpanExporter()
tracer_provider = TracerProvider()
tracer_provider.add_span_processor(SimpleSpanProcessor(span_exporter))
trace.set_tracer_provider(tracer_provider)

Atau ubah kode sebelumnya, berdasarkan Dasbor Aspire, untuk melacak ke penampil OTLP lokal.

Sekarang aktifkan instrumentasi Agen dan jalankan Agen Anda:

from azure.ai.agents.telemetry import AIAgentsInstrumentor
AIAgentsInstrumentor().instrument()

# Start tracing
tracer = trace.get_tracer(__name__)

with tracer.start_as_current_span("example-tracing"):
    agent = project_client.agents.create_agent(
        model=os.environ["MODEL_DEPLOYMENT_NAME"],
        name="my-assistant",
        instructions="You are a helpful assistant"
    )
    thread = project_client.agents.threads.create()
    message = project_client.agents.messages.create(
        thread_id=thread.id, role="user", content="Tell me a joke"
    )
    run = project_client.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)

Alternatif: AI Toolkit for VS Code

AI Toolkit memberi Anda cara sederhana untuk menelusuri secara lokal di VS Code. Ini menggunakan kolektor lokal yang kompatibel dengan OTLP, membuatnya ideal untuk pengembangan perangkat lunak dan debugging.

Toolkit ini mendukung kerangka kerja AI seperti Foundry Agents Service, OpenAI, Anthropic, dan LangChain melalui OpenTelemetry. Anda dapat melihat jejak secara instan di Visual Studio Code tanpa memerlukan access cloud.

Untuk instruksi penyiapan terperinci dan contoh kode khusus SDK, lihat Melacak di AI Toolkit.

Melacak fungsi kustom

Untuk melacak fungsi kustom Anda, gunakan OpenTelemetry SDK untuk menginstrumentasi kode Anda.

  1. Menyiapkan penyedia pelacak: Menginisialisasi penyedia pelacak untuk mengelola dan membuat span.
  2. Buat span: Bungkus kode yang ingin Anda lacak dengan span. Setiap rentang mewakili unit kerja dan Anda dapat menyarangkan rentang untuk membentuk pohon jejak.
  3. Tambahkan atribut: Perkaya rentang dengan atribut untuk memberikan konteks lebih lanjut untuk data pelacakan.
  4. Mengonfigurasi pengekspor: Mengirim data pelacakan ke backend untuk analisis dan visualisasi.

Berikut adalah contoh pelacakan fungsi kustom:

from opentelemetry import trace
from opentelemetry.trace import SpanKind

# Initialize tracer
tracer = trace.get_tracer(__name__)

def custom_function():
    with tracer.start_as_current_span("custom_function") as span:
        span.set_attribute("custom_attribute", "value")
        # Your function logic here
        print("Executing custom function")

custom_function()

Untuk instruksi terperinci dan penggunaan tingkat lanjut, lihat dokumentasi OpenTelemetry.

Lampirkan umpan balik pengguna ke pelacakan

Untuk melampirkan umpan balik pengguna ke jejak-jejak dan memvisualisasikannya di portal Foundry, lakukan instrumentasi pada aplikasi Anda untuk mengaktifkan pelacakan dan mencatat umpan balik pengguna dengan menggunakan konvensi semantik OpenTelemetry.

Dengan menghubungkan jejak umpan balik dengan jejak permintaan obrolan masing-masing dengan menggunakan ID respons atau ID utas, Anda dapat melihat dan mengelola jejak ini di portal Foundry. Spesifikasi OpenTelemetry memungkinkan data pelacakan standar dan diperkaya, yang dapat Anda analisis di portal Foundry untuk pengoptimalan performa dan wawasan pengalaman pengguna. Pendekatan ini membantu Anda menggunakan kekuatan penuh OpenTelemetry untuk meningkatkan pengamatan dalam aplikasi Anda.

Untuk mencatat umpan balik pengguna, ikuti format ini:

Peristiwa evaluasi umpan balik pengguna diambil hanya jika pengguna memberikan reaksi terhadap respons model GenAI. Jika memungkinkan, indukkan peristiwa ini ke rentang GenAI yang menjelaskan respons tersebut.

Isi peristiwa umpan balik pengguna memiliki struktur berikut:

Bidang Isi Tipe Deskripsi Contoh Tingkat Persyaratan
comment string Detail tambahan tentang umpan balik pengguna "I did not like it" Opt-in

Menggunakan nama layanan dalam data pelacakan

Untuk mengidentifikasi layanan Anda melalui ID unik di Application Insights, gunakan properti Nama layanan OpenTelemetry di data pelacakan Anda. Properti ini berguna jika Anda mencatat data dari beberapa aplikasi ke sumber daya Application Insights yang sama, dan Anda ingin membedakannya.

Misalnya, Anda memiliki dua aplikasi: App-1 dan App-2, dengan pelacakan dikonfigurasi untuk mencatat data ke sumber daya Application Insights yang sama. Mungkin Anda ingin menyiapkan App-1 untuk dievaluasi terus menerus oleh Relevansi dan App-2 untuk dievaluasi terus menerus oleh Relevansi. Anda dapat menggunakan nama layanan untuk memfilter berdasarkan Application di portal Foundry saat memantau aplikasi Anda.

Untuk menyiapkan properti nama layanan, tambahkan langsung di kode aplikasi Anda dengan mengikuti langkah-langkah dalam Menggunakan beberapa penyedia pelacak dengan Sumber Daya yang berbeda. Atau, atur variabel OTEL_SERVICE_NAME lingkungan sebelum menyebarkan aplikasi Anda. Untuk mempelajari selengkapnya tentang bekerja dengan nama layanan, lihat Variabel Lingkungan OTEL dan Konvensi Semantik Sumber Daya Layanan.

Untuk meminta data pelacakan dengan nama layanan tertentu, mintalah properti cloud_roleName.

| where cloud_RoleName == "service_name"

Integrasi

Foundry memudahkan untuk mencatat jejak dengan perubahan minimal dengan menggunakan integrasi pelacakannya dengan Microsoft Agent Framework, Kernel Semantik, LangChain, LangGraph, dan OpenAI Agent SDK.

Agen pelacakan yang dibangun di Microsoft Agent Framework dan Kernel Semantik

Foundry memiliki integrasi asli dengan Microsoft Agent Framework dan Kernel Semantik. Agen yang dibangun di atas kedua kerangka kerja ini mendapatkan pelacakan di luar kotak dalam Observabilitas.

Mengaktifkan pelacakan untuk agen yang dibangun di LangChain dan LangGraph

Nota

Integrasi pelacakan untuk LangChain dan LangGraph yang dijelaskan di sini saat ini hanya tersedia di Python.

Anda dapat mengaktifkan pelacakan untuk LangChain yang mengikuti standar OpenTelemetry sesuai opentelemetry-instrumentation-langchain.

Setelah menginstal paket yang diperlukan, Anda dapat dengan mudah instrumen pelacakan dalam kode Anda.

Nota

Rilis LangChain dan LangGraph "v1" saat ini sedang dalam pengembangan aktif. Antarmuka API dan perilaku pelacakan dapat berubah sebagai bagian dari rilis ini. Lacak pembaruan di halaman catatan rilis LangChain v1.0.

Sampel: Agen LangChain v1 dengan pelacakan AI Azure

Gunakan sampel end-to-end ini untuk mengonfigurasi agen LangChain versi 1 dengan menggunakan pelacak langchain-azure-ai. Ini menerapkan spesifikasi OpenTelemetry (OTel) terbaru sehingga Anda dapat melihat tracing yang kaya di dalam sistem Observability.

Memasang paket
pip install \
  langchain-azure-ai \
  langchain \
  langgraph \
  langchain-openai \
  azure-identity \
  python-dotenv \
  rich
Mengonfigurasi lingkungan
  • APPLICATION_INSIGHTS_CONNECTION_STRING: String koneksi Azure Monitor Application Insights untuk pelacakan.
  • AZURE_OPENAI_ENDPOINT: URL titik akhir OpenAI Azure Anda.
  • AZURE_OPENAI_CHAT_DEPLOYMENT: Nama penyebaran model obrolan.
  • AZURE_OPENAI_VERSION: Versi API, misalnya 2024-08-01-preview.
  • Kredensial Azure diatur melalui DefaultAzureCredential (mendukung variabel lingkungan, identitas terkelola, login VS Code, dan banyak lagi).

Anda dapat menyimpan nilai-nilai ini dalam .env file untuk pengembangan lokal.

Pengaturan pelacak
from dotenv import load_dotenv
import os
from langchain_azure_ai.callbacks.tracers import AzureAIOpenTelemetryTracer

load_dotenv(override=True)

azure_tracer = AzureAIOpenTelemetryTracer(
    connection_string=os.environ.get("APPLICATION_INSIGHTS_CONNECTION_STRING"),
    enable_content_recording=True,
    name="Weather information agent",
    id="weather_info_agent_771929",
)

tracers = [azure_tracer]
Konfigurasi model (Azure OpenAI)
import os
import azure.identity
from langchain_openai import AzureChatOpenAI

token_provider = azure.identity.get_bearer_token_provider(
    azure.identity.DefaultAzureCredential(),
    "https://ai.azure.com/.default",
)

model = AzureChatOpenAI(
    azure_endpoint=os.environ.get("AZURE_OPENAI_ENDPOINT"),
    azure_deployment=os.environ.get("AZURE_OPENAI_CHAT_DEPLOYMENT"),
    openai_api_version=os.environ.get("AZURE_OPENAI_VERSION"),
    azure_ad_token_provider=token_provider,
)
Tentukan alat dan perintah
from dataclasses import dataclass
from langchain_core.tools import tool

system_prompt = """You are an expert weather forecaster, who speaks in puns.

You have access to two tools:

- get_weather_for_location: use this to get the weather for a specific location
- get_user_location: use this to get the user's location

If a user asks you for the weather, make sure you know the location.
If you can tell from the question that they mean wherever they are,
use the get_user_location tool to find their location."""

# Mock user locations keyed by user id (string)
USER_LOCATION = {
    "1": "Florida",
    "2": "SF",
}

@dataclass
class UserContext:
    user_id: str

@tool
def get_weather(city: str) -> str:
    """Get weather for a given city."""
    return f"It's always sunny in {city}!"
Gunakan konteks runtime dan tentukan alat informasi pengguna
from langgraph.runtime import get_runtime
from langchain_core.runnables import RunnableConfig

@tool
def get_user_info(config: RunnableConfig) -> str:
    """Retrieve user information based on user ID."""
    runtime = get_runtime(UserContext)
    user_id = runtime.context.user_id
    return USER_LOCATION[user_id]
Membuat agen
from langchain.agents import create_agent
from langgraph.checkpoint.memory import InMemorySaver
from dataclasses import dataclass

@dataclass
class WeatherResponse:
    conditions: str
    punny_response: str

checkpointer = InMemorySaver()

agent = create_agent(
    model=model,
    prompt=system_prompt,
    tools=[get_user_info, get_weather],
    response_format=WeatherResponse,
    checkpointer=checkpointer,
)
Jalankan agen perangkat lunak dengan pelacakan
from rich import print

def main():
    config = {"configurable": {"thread_id": "1"}, "callbacks": [azure_tracer]}
    context = UserContext(user_id="1")

    r1 = agent.invoke(
        {"messages": [{"role": "user", "content": "what is the weather outside?"}]},
        config=config,
        context=context,
    )
    print(r1.get("structured_response"))

    r2 = agent.invoke(
        {"messages": [{"role": "user", "content": "Thanks"}]},
        config=config,
        context=context,
    )
    print(r2.get("structured_response"))

if __name__ == "__main__":
    main()

Saat Anda mengaktifkan langchain-azure-ai, semua operasi LangChain v1 (panggilan LLM, pemanggilan alat, langkah-langkah agen) dilacak dengan menggunakan konvensi semantik OpenTelemetry terbaru. Mereka muncul di Observability, ditautkan ke sumber daya Application Insights Anda.

Sampel: Agen LangGraph dengan pelacakan AI Azure

Sampel ini menunjukkan agen LangGraph sederhana yang diinstrumentasikan dengan langchain-azure-ai untuk memancarkan jejak yang sesuai dengan OpenTelemetry untuk langkah grafik, panggilan alat, dan pemanggilan model.

Memasang paket
pip install \
  langchain-azure-ai \
  langgraph==1.0.0a4 \
  langchain==1.0.0a10 \
  langchain-openai \
  azure-identity \
  python-dotenv
Mengonfigurasi lingkungan
  • APPLICATION_INSIGHTS_CONNECTION_STRING: Connection string Azure Monitor Application Insights untuk pelacakan.
  • AZURE_OPENAI_ENDPOINT: URL titik akhir Azure OpenAI Anda.
  • AZURE_OPENAI_CHAT_DEPLOYMENT: Nama penyebaran model obrolan.
  • AZURE_OPENAI_VERSION: Versi API, misalnya 2024-08-01-preview.

Anda dapat menyimpan nilai-nilai ini dalam .env file untuk pengembangan lokal.

Pengaturan pelacak
import os
from dotenv import load_dotenv
from langchain_azure_ai.callbacks.tracers import AzureAIOpenTelemetryTracer

load_dotenv(override=True)

azure_tracer = AzureAIOpenTelemetryTracer(
    connection_string=os.environ.get("APPLICATION_INSIGHTS_CONNECTION_STRING"),
    enable_content_recording=os.getenv("OTEL_RECORD_CONTENT", "true").lower() == "true",
    name="Music Player Agent",
)
Tools
from langchain_core.tools import tool

@tool
def play_song_on_spotify(song: str):
    """Play a song on Spotify"""
    # Integrate with Spotify API here.
    return f"Successfully played {song} on Spotify!"

@tool
def play_song_on_apple(song: str):
    """Play a song on Apple Music"""
    # Integrate with Apple Music API here.
    return f"Successfully played {song} on Apple Music!"

tools = [play_song_on_apple, play_song_on_spotify]
Penyiapan model (Azure OpenAI)
import os
import azure.identity
from langchain_openai import AzureChatOpenAI

token_provider = azure.identity.get_bearer_token_provider(
    azure.identity.DefaultAzureCredential(),
    "https://ai.azure.com/.default",
)

model = AzureChatOpenAI(
    azure_endpoint=os.environ.get("AZURE_OPENAI_ENDPOINT"),
    azure_deployment=os.environ.get("AZURE_OPENAI_CHAT_DEPLOYMENT"),
    openai_api_version=os.environ.get("AZURE_OPENAI_VERSION"),
    azure_ad_token_provider=token_provider,
).bind_tools(tools, parallel_tool_calls=False)
Membangun alur kerja LangGraph
from langgraph.graph import END, START, MessagesState, StateGraph
from langgraph.prebuilt import ToolNode
from langgraph.checkpoint.memory import MemorySaver

tool_node = ToolNode(tools)

def should_continue(state: MessagesState):
    messages = state["messages"]
    last_message = messages[-1]
    return "continue" if getattr(last_message, "tool_calls", None) else "end"

def call_model(state: MessagesState):
    messages = state["messages"]
    response = model.invoke(messages)
    return {"messages": [response]}

workflow = StateGraph(MessagesState)
workflow.add_node("agent", call_model)
workflow.add_node("action", tool_node)

workflow.add_edge(START, "agent")
workflow.add_conditional_edges(
    "agent",
    should_continue,
    {
        "continue": "action",
        "end": END,
    },
)
workflow.add_edge("action", "agent")

memory = MemorySaver()
app = workflow.compile(checkpointer=memory)
Jalankan dengan pelacakan
from langchain_core.messages import HumanMessage

config = {"configurable": {"thread_id": "1"}, "callbacks": [azure_tracer]}
input_message = HumanMessage(content="Can you play Taylor Swift's most popular song?")

for event in app.stream({"messages": [input_message]}, config, stream_mode="values"):
    event["messages"][-1].pretty_print()

Dengan mengaktifkan langchain-azure-ai, eksekusi LangGraph Anda memancarkan rentang yang sesuai dengan OpenTelemetry untuk panggilan model, pemanggilan alat, dan transisi grafik. Jejak ini mengalir ke Application Insights dan muncul dalam Observabilitas.

Sampel: Penyiapan LangChain 0.3 dengan pelacakan AI Azure

Penyiapan minimal ini menunjukkan cara mengaktifkan pelacakan AI Azure dalam aplikasi LangChain 0.3 dengan menggunakan tracer langchain-azure-ai dan AzureChatOpenAI.

Memasang paket
pip install \
  "langchain>=0.3,<0.4" \
  langchain-openai \
  langchain-azure-ai \
  python-dotenv
Mengonfigurasi lingkungan
  • APPLICATION_INSIGHTS_CONNECTION_STRING: String koneksi untuk Application Insights dalam pelacakan.
  • AZURE_OPENAI_ENDPOINT: Azure URL titik akhir OpenAI.
  • AZURE_OPENAI_CHAT_DEPLOYMENT: Nama penyebaran model obrolan.
  • AZURE_OPENAI_VERSION: Versi API, misalnya 2024-08-01-preview.
  • AZURE_OPENAI_API_KEY: Kunci API Azure OpenAI.
Pelacak dan penyiapan model
import os
from dotenv import load_dotenv
from langchain_azure_ai.callbacks.tracers import AzureAIOpenTelemetryTracer
from langchain_openai import AzureChatOpenAI

load_dotenv(override=True)

# Tracer: emits spans conforming to updated OTel spec
azure_tracer = AzureAIOpenTelemetryTracer(
    connection_string=os.environ.get("APPLICATION_INSIGHTS_CONNECTION_STRING"),
    enable_content_recording=True,
    name="Trip Planner Orchestrator",
    id="trip_planner_orchestrator_v3",
)
tracers = [azure_tracer]

# Model: Azure OpenAI with callbacks for tracing
llm = AzureChatOpenAI(
    azure_deployment=os.environ.get("AZURE_OPENAI_CHAT_DEPLOYMENT"),
    api_key=os.environ.get("AZURE_OPENAI_API_KEY"),
    azure_endpoint=os.environ.get("AZURE_OPENAI_ENDPOINT"),
    api_version=os.environ.get("AZURE_OPENAI_VERSION"),
    temperature=0.2,
    callbacks=tracers,
)

Lampirkan callbacks=[azure_tracer] ke rantai, alat, atau agen Anda untuk memastikan operasi LangChain 0.3 dilacak dan terlihat dalam Observabilitas.

Mengaktifkan pelacakan untuk agen yang dibangun di OpenAI Agents SDK

Instal paket yang diperlukan:

pip install opentelemetry-sdk opentelemetry-instrumentation-openai-agents azure-monitor-opentelemetry-exporter

Gunakan cuplikan ini untuk mengonfigurasi pelacakan OpenTelemetry untuk OpenAI Agents SDK dan melakukan instrumentasi pada framework tersebut. Ini mengekspor ke Azure Monitor jika APPLICATION_INSIGHTS_CONNECTION_STRING diatur; jika tidak, itu akan kembali ke konsol.

import os
from opentelemetry import trace
from opentelemetry.instrumentation.openai_agents import OpenAIAgentsInstrumentor
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter

# Configure tracer provider + exporter
resource = Resource.create({
    "service.name": os.getenv("OTEL_SERVICE_NAME", "openai-agents-app"),
})
provider = TracerProvider(resource=resource)

conn = os.getenv("APPLICATION_INSIGHTS_CONNECTION_STRING")
if conn:
    from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter
    provider.add_span_processor(
        BatchSpanProcessor(AzureMonitorTraceExporter.from_connection_string(conn))
    )
else:
    provider.add_span_processor(BatchSpanProcessor(ConsoleSpanExporter()))

trace.set_tracer_provider(provider)

# Instrument the OpenAI Agents SDK
OpenAIAgentsInstrumentor().instrument(tracer_provider=trace.get_tracer_provider())

# Example: create a session span around your agent run
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("agent_session[openai.agents]"):
    # ... run your agent here
    pass

Menampilkan jejak di portal Foundry

Di project Anda, buka Tracing untuk memfilter jejak sesuai keinginan Anda.

Dengan memilih jejak, Anda dapat menelusuri setiap rentang dan mengidentifikasi masalah sambil mengamati bagaimana aplikasi Anda merespons. Proses ini membantu Anda men-debug dan menentukan masalah dalam aplikasi Anda.

Lihat jejak di Azure Monitor

Jika Anda mencatat penelusuran menggunakan potongan kode sebelumnya, Anda siap untuk melihat penelusuran Anda di Azure Monitor Application Insights. Anda dapat membuka Application Insights dari Mengelola sumber data dan menggunakan tampilan Detail transaksi end-to-end untuk menyelidiki lebih lanjut.

Untuk informasi selengkapnya tentang cara mengirim jejak Inferensi AI Azure ke Azure Monitor dan membuat sumber daya Azure Monitor, lihat dokumentasi Azure Monitor OpenTelemetry.

Melihat hasil thread di area pengujian Agen Foundry

Area uji coba Agen di portal Foundry memungkinkan Anda melihat hasil untuk utas dan eksekusi yang dihasilkan oleh agen Anda. Untuk melihat hasil utas, pilih Log Utas dalam utas aktif. Anda juga dapat secara opsional memilih Metrik untuk mengaktifkan evaluasi otomatis performa model di beberapa dimensi kualitas AI dan Risiko dan keamanan.

Nota

Seperti yang diuraikan di bawah Kepercayaan dan Pengamatan pada halaman harga, evaluasi di taman bermain ditagih. Hasil tersedia selama 24 jam sebelum kedaluwarsa. Untuk mendapatkan hasil evaluasi, pilih metrik yang Anda inginkan dan mengobrol dengan agen Anda.

  • Evaluasi tidak tersedia di wilayah berikut.
    • australiaeast
    • japaneast
    • southindia
    • uksouth

Cuplikan layar taman bermain agen di portal Foundry.

Setelah memilih Log utas, tinjau:

  • Detail utas
  • Jalankan informasi
  • Langkah-langkah proses yang diurutkan dan pemanggilan alat
  • Input dan output antara pengguna dan agen
  • Metrik evaluasi tertaut (jika diaktifkan)

Cuplikan layar jejak.

Petunjuk / Saran

Jika Anda ingin melihat hasil utas dari utas sebelumnya, pilih Utas saya di layar Agen . Pilih utas, lalu pilih Coba di playground. Cuplikan layar utas. Anda dapat melihat tombol Log utas di bagian atas layar untuk melihat hasil pelacakan.

Nota

Fitur pengamatan seperti Evaluasi Risiko dan Keselamatan ditagih berdasarkan konsumsi seperti yang tercantum di halaman harga Azure.