Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
LangChain ve LangGraph uygulamalarından OpenTelemetry izlemeleri yaymak ve bunları Azure Uygulaması Insights'a eklemek için langchain-azure-ai tümleştirme paketini kullanın. Bu makalede, AzureAIOpenTelemetryTracer yapılandırın, çalıştırılabilir programa iliştirin ve Azure İzleyici'deki izleri inceleyin.
İzleyici, ajan yürütme, model çağrıları, araç yürütme ve bilgi getirme işlemleri için spans oluşturur. Tamamen yerel, Foundry Aracısı Hizmeti'ni çağıran karma akışlar veya çok aracılı LangGraph çözümleri çalıştıran uygulamalar için kullanabilirsiniz.
Önkoşullar
- Azure aboneliği. Ücretsiz bir tane oluşturun.
- Dökümhane projesi.
- Dağıtılmış Azure OpenAI sohbet modeli (örneğin,
gpt-4.1). - Python 3.10 veya üzeri.
- Azure CLI oturum açtı (
az login) böyleceDefaultAzureCredentialkimlik doğrulaması yapabilir.
Ortamınızı yapılandırma
Gerekli paketleri yükleyin:
pip install -U "langchain-azure-ai[opentelemetry]" azure-identity
Bu makalede kullanılan ortam değişkenlerini ayarlayın:
import os
# Option 1: Project endpoint (recommended)
os.environ["AZURE_AI_PROJECT_ENDPOINT"] = (
"https://<resource>.services.ai.azure.com/api/projects/<project>"
)
# Option 2: Direct OpenAI-compatible endpoint + API key
os.environ["OPENAI_BASE_URL"] = (
"https://<resource>.services.ai.azure.com/openai/v1"
)
os.environ["OPENAI_API_KEY"] = "<your-api-key>"
os.environ["APPLICATION_INSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=0ab1c2d3..."
İletilerden ve araç çağrılarından gelen içeriğin iz sürümüne kaydedilip kaydedilmediğini denetlemek için enable_content_recording öğesini AzureAIOpenTelemetryTracer yapıcısına geçirin.
İçerik kaydı varsayılan olarak etkindir.
Ipucu
oluşturucuda enable_content_recording=False izlerdeki ileti içeriğini ve araç çağrısı bağımsız değişkenlerini gizlemek için ayarlayın AzureAIOpenTelemetryTracer.
İzlemeyi oluşturma
Bir izleyici örneği oluşturun ve iş akışınızda yeniden kullanabilirsiniz.
import os
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.callbacks.tracers import AzureAIOpenTelemetryTracer
tracer = AzureAIOpenTelemetryTracer(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
credential=DefaultAzureCredential(),
name="langchain-tracing-sample",
agent_id="support-bot",
trace_all_langgraph_nodes=True,
)
Bu kod parçacığının yaptığı iş: Foundry proje uç noktanızdan ilişkili Application Insights bağlantı dizesini çözen ve LangGraph düğümleri için izlemeyi etkinleştiren bir izleyici yapılandırır. Aracıları çağırırken agent_id parametresini kullanarak gen_ai.agent.id özniteliğini ayarlayın.
name parametresi OpenTelemetry izleyici adını ayarlar.
İzleme, üretim iş akışları için yaygın denetimleri destekler:
- Belirli bir Application Insights kaynağını hedeflemek için
connection_stringgeçir veyaAPPLICATION_INSIGHTS_CONNECTION_STRINGortam değişkenini yapılandır. -
trace_all_langgraph_nodes=Truevarsayılan olarak tüm düğümleri izlemek için ayarlayın. - Belirli düğümleri dahil etmek veya atlamak için
otel_trace: Trueveyaotel_trace: Falsegibi düğüm meta verilerini kullanın. - İletileriniz özel bir durum şekli altında iç içe geçtiğinde
message_keysvemessage_pathskullanın, örneğinchat_history.
Referans:
Ajanı izleme
İzlemeyi hızla doğrulayabilmeniz için en düşük Düzeyde Bir LangChain aracısı ile başlayın. LangGraph için, derlenmiş grafta with_config ile izleyiciyi ekleyin.
from langchain.agents import create_agent
agent = create_agent(
model="azure_ai:gpt-5.2",
system_prompt="You're an informational agent. Answer questions cheerfully.",
).with_config(
{"callbacks": [tracer]}
)
response = agent.invoke({"messages": "what's your name?"})
response["messages"][-1].pretty_print()
================================== Ai Message ==================================
I’m ChatGPT, your AI assistant.
Bu kod parçacığının yaptığı iş: Basit bir LangGraph aracısı oluşturur, iz sürücüsünü ekler ve aracı bir iletiyle çağırır.
Referans:
LangChain işletilebilirini takip etme
İzlemeyi hızla doğrulayabilmeniz için minimal LangChain akışıyla başlayabilirsiniz.
import os
from azure.identity import DefaultAzureCredential
from langchain_core.prompts import ChatPromptTemplate
from langchain_azure_ai.chat_models import AzureAIChatCompletionsModel
model = AzureAIChatCompletionsModel(
endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
credential=DefaultAzureCredential(),
model=os.environ["AZURE_OPENAI_DEPLOYMENT"],
)
prompt = ChatPromptTemplate.from_template(
"You are concise. Answer in one sentence: {question}"
)
chain = prompt | model
response = chain.invoke(
{"question": "What does OpenTelemetry help me do?"},
config={"callbacks": [tracer]},
)
print(response.content)
OpenTelemetry helps you observe requests, latency, dependencies, and failures across your AI workflow.
Bu kod parçacığının yaptığı iş: Standart bir LangChain işlem hattı çalıştırır ve aracılığıyla AzureAIOpenTelemetryTracerOpenTelemetry'ye sohbet aralıkları gönderir.
Referans:
LangGraph grafiğini izleme
LangGraph için, derlenmiş grafta with_config ile izleyiciyi ekleyin.
Bu kod parçacığı, önceki örneklerden model ve tracer'i yeniden kullanır.
from langgraph.graph import END, START, MessagesState, StateGraph
from langgraph.prebuilt import ToolNode
from langgraph.checkpoint.memory import MemorySaver
from langchain_core.tools import tool
from langchain_azure_ai.utils.agents import pretty_print
@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!"
tool_node = ToolNode([play_song_on_apple, play_song_on_spotify])
model_with_tools = model.bind_tools([play_song_on_apple, play_song_on_spotify])
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_with_tools.invoke(messages)
return {"messages": [response]}
memory = MemorySaver()
workflow = (
StateGraph(MessagesState)
.add_node("agent", call_model)
.add_node("action", tool_node)
.add_edge(START, "agent")
.add_conditional_edges(
"agent",
should_continue,
{
"continue": "action",
"end": END,
},
)
.add_edge("action", "agent")
.compile(checkpointer=memory)
)
Ardından grafiği her zamanki gibi çalıştırabilirsiniz:
from langchain_core.messages import HumanMessage
config = {"configurable": {"thread_id": "1"}, "callbacks": [tracer]}
message = HumanMessage(content="Can you play Taylor Swift's most popular song?")
result = workflow.invoke({"messages": [message]}, config)
pretty_print(result)
================================ Human Message =================================
Can you play Taylor Swift's most popular song?
================================== Ai Message ==================================
Tool Calls:
play_song_on_spotify (call_xxx)
Call ID: call_xxx
Args:
song: Anti-Hero
================================= Tool Message =================================
Name: play_song_on_spotify
Successfully played Anti-Hero on Spotify!
================================== Ai Message ==================================
I played Taylor Swift's popular song "Anti-Hero" on Spotify.
Bu kod parçacığının işlevi: Basit bir LangGraph uygulaması oluşturur, düğümü takip için işaretler ve aynı izlemeye model/araç aralıklarını ekler.
Referans:
İzleme yapısını anlama
Tracer, OpenTelemetry GenAI semantik kurallarına uygun olarak spanler oluşturur.
Her span türü belirli gen_ai.operation.name bir değer kullanır:
| Span türü | gen_ai.operation.name |
Açıklama |
|---|---|---|
| Ajan/zincir çağrısı | invoke_agent |
Her LangGraph düğümü veya zincir adımı. Span adı şeklindedir invoke_agent {gen_ai.agent.name}. |
| Sohbet modeli çağrısı | chat |
LLM tahmin istekleri. Span adı şeklindedir chat {gen_ai.request.model}. |
| Metin tamamlama | text_completion |
Sohbet dışı LLM çağrıları. |
| Araç çalıştırma | execute_tool |
Model tarafından tetiklenen araç çağrıları. Span adı şeklindedir execute_tool {gen_ai.tool.name}. |
| Arayıcı | execute_tool |
Vektör depolarından veya aramadan alma işlemleri. |
Span'lar şu temel öznitelikleri de taşır:
-
gen_ai.agent.name— Aracı veya düğüm adı. -
gen_ai.agent.id— Oluşturucu parametresindenagent_idayarlayın. -
gen_ai.agent.description— Ajanın açıklaması. -
gen_ai.provider.name— Model sağlayıcısı (örneğin,openai,azure.ai.inference). -
gen_ai.request.model— Çıkarım için kullanılan model adı. -
gen_ai.conversation.id— Kullanılabilir olduğunda iş parçacığı veya oturum tanımlayıcısı. -
gen_ai.usage.input_tokens/gen_ai.usage.output_tokens— Model yanıtlarından belirteç sayısı. -
gen_ai.input.messages/gen_ai.output.messages— İleti içeriği (içerik kaydı etkinleştirildiğinde).
İzleyici nasıl çözümlenebilir? gen_ai.agent.name
İzsürücü, aracı adını ilk boş olmayan değerden şu sırayla çözümleyerek belirler:
-
agent_namedüğüm meta verileri içinde. -
langgraph_nodedüğüm meta verilerinde (LangGraph tarafından otomatik olarak ayarlanır). -
agent_typedüğüm meta verileri içinde. -
nameLangChain geri çağırmasından anahtar sözcük bağımsız değişkeni. -
langgraph_path(son öğe) yukarıdakiler genel yer tutucular ise. - Serileştirilmiş zincir kimliği veya sınıf adı.
-
nameoluşturucununAzureAIOpenTelemetryTracerparametresi (geri dönüş varsayılanı).
İzleyici nasıl çözümlenebilir? gen_ai.agent.id
İzleme aracı kimliğini şu kaynaktan çözümler:
-
agent_iddüğüm meta verilerinde (düğüm başına geçersiz kılma). -
agent_idOluşturucu parametresi (tüm yayılma alanları için varsayılan).
Düğüm meta verileriyle öznitelikleri özelleştirme
LangGraph meta verilerini kullanarak her düğüm için agent_name, agent_id ve agent_description ayarlayabilirsiniz. ile gen_ai. başlayan tüm meta veri anahtarları da span özniteliği olarak iletilir.
config = {
"callbacks": [tracer],
"metadata": {
"agent_name": "support-bot",
"agent_id": "support-bot-v2",
"agent_description": "Handles customer support requests",
"thread_id": "session-abc-123",
},
}
result = graph.invoke({"messages": [message]}, config)
LangGraph kullanırken, grafik tanımında düğüm başına meta verileri de ayarlayabilirsiniz:
workflow = StateGraph(MessagesState)
workflow.add_node(
"planner",
planner_fn,
metadata={
"agent_name": "PlannerAgent",
"agent_id": "planner-v1",
"otel_agent_span": True,
},
)
Referans:
Azure İzleyici'de izleri görüntüleme
İzlemeler Azure Uygulaması Insights'a gönderilir ve Azure İzleyici kullanılarak sorgulanabilir:
Azure portalına gidin.
Yapılandırdığınız Azure Uygulaması İçgörüleri'ne gidin.
Sol gezinti çubuğunu kullanarak İncele>Aracılar (Önizleme)'yi seçin.
Ajan, model ve araç yürütmelerini gösteren bir pano görürsünüz. Aracılarınızın genel etkinliğini anlamak için bu görünümü kullanın.
Aracı Çalıştırmaları ile İzlemeleri Görüntüle'yi seçin. Yan panel, ajan çalıştırmalarından oluşturulan tüm izleri gösterir.
İzlemelerden birini seçin. Ayrıntıları görmeniz gerekir.
DökümHane Denetim Düzlemi'nde izleri görüntüleme
LangGraph veya LangChain çözümünüzü dağıttıysanız, görünürlük ve idare elde etmek için bu dağıtımı DökümHane Denetim Düzlemi'ne kaydedebilirsiniz.
Foundry portalında izlemeleri görüntülemek için uygulamanızı Dökümhane Denetim Düzlemi'ne kaydedin.
Şu adımları izleyin:
Foundry Kontrol Düzlemi özel ajan yeteneğini kullanmak için gereksinimleri karşıladığınızdan emin olun:
Foundry kaynağınızda yapılandırılmış bir yapay zeka ağ geçidi. Foundry, aracıları API'ler olarak kaydetmek için Azure API Management kullanır.
Erişilebilir bir uç nokta aracılığıyla dağıttığınız ve kullanıma eklediğiniz bir aracı. Uç nokta genel bir uç nokta veya Foundry kaynağını dağıttığınız ağdan erişilebilen bir uç nokta olabilir.
Projede gözlemlenebilirliğin yapılandırıldığından emin olun.
sınıfını
AzureAIOpenTelemetryTraceryapılandırırken, aracının kaydedilmesini istediğiniz projenin uç noktasını kullandığınızdan emin olun.agent_idöğesini yapılandırdığınızdan emin olun.Foundry portalına gidin.
Araç çubuğunda çalıştır'ı seçin.
Genel Bakış bölmesinde Aracıyı Kaydet'i seçin.
Kayıt sihirbazı görüntülenir. İlk olarak, kaydetmek istediğiniz aracıyla ilgili ayrıntıları tamamlayın.
- Aracı URL'si: Aracınızın çalıştırıldığı ve istekleri aldığı uç nokta (URL).
- Protokol: Aracınızın desteklediği iletişim protokolü.
-
OpenTelemetry Ajansı Kimliği:
AzureAIOpenTelemetryTracersınıfında yapılandırdığınızagent_idparametresi. -
Project:
AzureAIOpenTelemetryTracersınıfında izlemeleri almak için yapılandırdığınız project. -
Aracı adı: Aracının adı (
agent_idile aynı olabilir).
Aracının çalıştığından emin olmak için onu çağırın.
Araç çubuğunda çalıştır'ı seçin.
Sol bölmede Varlıklar'ı seçin.
Oluşturduğunuz aracıyı seçin.
İzlemeler bölümünde, ajanın uç noktasındaki her HTTP çağrısı için bir giriş gösterilir.
Ayrıntıları görmek için bir girdi seçin.
Sorun Giderme
- Hiçbir iz görünmüyorsa,
connection_stringyapılandırılmış veya proje uç noktanızın telemetriyi ortaya koyduğunu doğrulayın. - İleti içeriği kapatılmış olarak görünüyorsa,
enable_content_recording=TrueöğesiniAzureAIOpenTelemetryTraceroluşturucuda ayarlayın. - Bazı LangGraph düğümleri eksikse düğüm meta verilerini
trace_all_langgraph_nodes=Trueayarlayınotel_trace: Trueveya ekleyin.