Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Важно
Элементы, помеченные (предварительная версия) в этой статье, в настоящее время находятся в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.
Примечание
Трассировка обычно доступна только для агента быстрого запроса. Рабочие процессы, размещенные и настраиваемые агенты находятся в предварительной версии.
Когда агенты ИИ ведут себя неожиданно в рабочей среде, трассировка позволяет быстро определить первопричину. Трассировка записывает подробные данные телеметрии, включая вызовы LLM, вызовы инструментов и потоки принятия решений агента, чтобы можно было отлаживать проблемы, отслеживать задержку и понимать поведение агента в запросах.
Microsoft Foundry обеспечивает интеграцию трассировки для популярных платформ агентов, требующих минимальных изменений кода. В этой статье описано, как:
- Настройте автоматическую трассировку для Microsoft Agent Framework
- Настройка трассировщика
langchain-azure-aiдля LangChain и LangGraph - Инструментирование пакета SDK для агентов OpenAI с помощью OpenTelemetry
- Убедитесь, что трассировки отображаются на портале Foundry
- Устранение распространенных проблем трассировки
Необходимые условия
- Проект Foundry с отслеживанием, подключенным к Azure Monitor Application Insights.
- Участник или более высокий доступ в ресурсе Application Insights для принятия трассировок.
- Доступ к подключенному ресурсу Application Insights для просмотра трассировок. Для запросов на основе журналов может потребоваться также доступ к связанной рабочей области Log Analytics.
- Python 3.10 или более поздней версии (требуется для всех примеров кода в этой статье).
- Пакет
langchain-azure-aiверсии 0.1.0 или более поздней (требуется для примеров LangChain и LangGraph). - Если вы используете LangChain или LangGraph, вам потребуется среда Python с установленным pip.
Убедитесь, что вы можете просматривать телеметрию
Чтобы просмотреть данные трассировки, убедитесь, что у вашей учетной записи есть доступ к подключенного ресурса Application Insights.
На портале Azure откройте ресурс Application Insights, подключенный к проекту Foundry.
Выберите управление доступом (IAM).
Назначьте соответствующую роль пользователю или группе.
Если вы используете запросы на основе логов, начните с предоставления роли Log Analytics Reader.
Безопасность и конфиденциальность
Трассировка может записывать конфиденциальную информацию (например, входные данные пользователя, выходные данные модели и аргументы и результаты инструментов).
- Включите запись содержимого во время разработки и отладки, чтобы просмотреть полные данные запроса и ответа. Отключите запись содержимого в рабочих средах для защиты конфиденциальных данных. В примерах в этой статье запись содержимого управляется параметрами, такими как
enable_content_recordingиOTEL_RECORD_CONTENT. - Не сохраняйте учетные данные, секреты или токены в запросах или аргументах инструментов.
Дополнительные рекомендации см. в разделе "Безопасность и конфиденциальность".
Примечание
Журнальные данные, хранящиеся в Application Insights, подчиняются настройкам хранения данных вашей рабочей области и планам ценообразования Azure Monitor. Для управления затратами рекомендуется настроить частоту выборки или периоды хранения в рабочей среде. См. сведения о ценах Azure Monitor и Настройке данных и архиве.
Настройка трассировки для фреймворка агента Microsoft
Microsoft Foundry имеет собственные интеграции с обоими Microsoft Agent Framework. Агенты, созданные с помощью любого из фреймворков, автоматически генерируют трассировку, если трассировка включена для проекта Foundry. Дополнительный код или пакеты не требуются.
Чтобы проверить, работает ли трассировка:
- Запустите вашего агента хотя бы один раз.
- На портале Foundry перейдите к наблюдаемости>трассировкам.
- Убедитесь, что новая трассировка отображается с диапазонами для операций агента.
Трассировки обычно отображаются в течение 2–5 минут после выполнения агента. Дополнительные сведения о конфигурации см. в документации для конкретной платформы:
Настройка трассировки для LangChain и LangGraph
Примечание
Интеграция трассировки для LangChain и LangGraph в настоящее время доступна только в Python.
Используйте пакет langchain-azure-ai для создания отрезков, соответствующих стандарту OpenTelemetry, для операций LangChain и LangGraph. Эти трассировки отображаются в представлении Обозреваемость>Трассировки на портале Foundry.
- Семантические соглашения OpenTelemetry для создания искусственного интеллекта
- пакет langchain-azure-ai в PyPI
Пример: агент LangChain версии 1 с трассировкой Azure ИИ
Используйте этот комплексный пример для инструментирования агента LangChain версии 1 (предварительная версия) с помощью трассировщика langchain-azure-ai . Этот трассировщик реализует последние соглашения о семантике OpenTelemetry (OTel), поэтому можно просматривать подробные трассировки в представлении наблюдаемости Foundry.
LangChain версии 1. Установка пакетов
pip install \
langchain-azure-ai \
langchain \
langgraph \
langchain-openai \
azure-identity \
python-dotenv \
rich
LangChain версии 1. Настройка среды
-
APPLICATION_INSIGHTS_CONNECTION_STRING: Строка подключения Azure Monitor Application Insights для трассировки. -
AZURE_OPENAI_ENDPOINT: URL-адрес конечной точки OpenAI Azure. -
AZURE_OPENAI_CHAT_DEPLOYMENT: имя развертывания модели чата. -
AZURE_OPENAI_VERSION: версия API, например2024-08-01-preview. - Пакет SDK обрабатывает учетные данные Azure с помощью
DefaultAzureCredential, который поддерживает переменные среды, управляемое удостоверение и вход в VS Code.
Сохраните эти значения в файле для локальной .env разработки.
LangChain v1: настройка трассировки
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]
LangChain версии 1: настройка модели (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,
)
LangChain версии 1. Определение инструментов и запроса
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}!"
LangChain v1: Использование контекста выполнения и определение инструмента информации о пользователе
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]
LangChain версии 1. Создание агента
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,
)
LangChain версии 1: запуск агента с трассировкой
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()
При включённой настройке langchain-azure-ai, все операции в LangChain версии 1 (вызовы LLM, вызовы инструментов, шаги агентов) генерируют спаны OpenTelemetry, используя последние семантические соглашения. Эти трассировки отображаются в представлении Observability Traces> на портале Foundry и связаны с вашим ресурсом Application Insights.
Совет
После запуска агента подождите несколько минут, пока будут отображаться трассировки. Если трассировки не отображаются, проверьте, правильна ли строка подключения Application Insights, и ознакомьтесь с разделом Устранение распространенных проблем.
Убедитесь в точности трассировок LangChain версии 1.0
После запуска агента:
- Подождите 2–5 минут, чтобы трассировки распространились.
- На портале Foundry перейдите к наблюдаемости>трассировкам.
- Найдите след с заданным именем (например, "Агент сведений о погоде").
- Разверните трассировку, чтобы просмотреть интервалы вызовов LLM, вызовов инструментов и действий агента.
Если трассировки не отображаются, проверьте раздел «Устранение распространенных проблем».
Пример: агент LangGraph для отслеживания с помощью искусственного интеллекта Azure
В этом примере показан простой агент LangGraph, инструментированный с использованием langchain-azure-ai, чтобы отправлять трассировки, совместимые с OpenTelemetry, для шагов графа, вызовов инструментов и вызовов модели.
LangGraph: установка пакетов
pip install \
langchain-azure-ai \
langgraph>=1.0.0 \
langchain>=1.0.0 \
langchain-openai \
azure-identity \
python-dotenv
LangGraph: настройка среды
-
APPLICATION_INSIGHTS_CONNECTION_STRING: Строка подключения Azure Monitor Application Insights для трассировки. -
AZURE_OPENAI_ENDPOINT: URL-адрес конечной точки OpenAI Azure. -
AZURE_OPENAI_CHAT_DEPLOYMENT: имя развертывания модели чата. -
AZURE_OPENAI_VERSION: версия API, например2024-08-01-preview.
Сохраните эти значения в файле для локальной .env разработки.
Настройка трассировщика LangGraph
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",
)
LangGraph: инструменты
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]
LangGraph: настройка модели (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)
Создание рабочего процесса 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)
LangGraph: запуск с помощью трассировки
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()
Когда langchain-azure-ai включен, выполнение LangGraph выдает интервалы, совместимые с OpenTelemetry, для вызовов моделей, инструментов и переходов графа. Эти трассировки будут передаваться в Application Insights и отображаться в представлении наблюдаемости>трассировки на портале Foundry.
Совет
Каждый узел графа и переход ребра создают отдельный диапазон, что упрощает визуализацию потока принятия решений агента.
Проверьте трассировки LangGraph
После запуска агента:
- Подождите 2–5 минут, чтобы трассировки распространились.
- На портале Foundry перейдите к наблюдаемости>трассировкам.
- Найдите трассировку с именем, которое вы указали (например, "Агент музыкального проигрывателя").
- Разверните трассировку, чтобы просмотреть диапазоны для узлов графа, вызовов инструментов и модели.
Если трассировки не отображаются, проверьте раздел «Устранение распространенных проблем».
Пример: настройка LangChain 0.3 с использованием трассировки Azure AI
Эта минимальная настройка показывает, как включить трассировку Azure ИИ в приложении LangChain 0.3 с помощью трассировки langchain-azure-ai и AzureChatOpenAI.
LangChain 0.3: установка пакетов
pip install \
"langchain>=0.3,<0.4" \
langchain-openai \
langchain-azure-ai \
python-dotenv
LangChain 0.3: настройка среды
-
APPLICATION_INSIGHTS_CONNECTION_STRING: Строка подключения Application Insights для сбора трассировочных данных. Чтобы найти это значение, откройте ресурс Application Insights на портале Azure, выберите Overview и скопируйте строку Connection String. -
AZURE_OPENAI_ENDPOINT: URL-адрес конечной точки OpenAI Azure. -
AZURE_OPENAI_CHAT_DEPLOYMENT: имя развертывания модели чата. -
AZURE_OPENAI_VERSION: версия API, например2024-08-01-preview. -
AZURE_OPENAI_API_KEY: ключ API Azure OpenAI.
Примечание
В этом примере для простоты используется проверка подлинности ключа API. Для рабочих нагрузок используйте DefaultAzureCredential с get_bearer_token_provider, как показано в примерах LangChain версии 1 и LangGraph.
LangChain 0.3: трассировка и настройка модели
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,
)
Присоедините callbacks=[azure_tracer] к своим цепочкам, инструментам или агентам, чтобы отслеживать операции LangChain 0.3. После запуска цепочки или агента трассировки отображаются в представлениитрассировки> на портале Foundry в течение 2–5 минут.
Настройка трассировки для пакета SDK для агентов OpenAI
Пакет SDK для агентов OpenAI поддерживает инструментирование OpenTelemetry. Используйте следующий фрагмент кода, чтобы настроить диапазоны трассировки и экспорта для Azure Monitor. Если APPLICATION_INSIGHTS_CONNECTION_STRING этот параметр не задан, экспортер возвращается в консоль для локальной отладки.
Перед запуском примера установите необходимые пакеты:
pip install opentelemetry-sdk opentelemetry-instrumentation-openai-agents azure-monitor-opentelemetry-exporter
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
Проверка трассировок на портале Foundry
- Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry включен. Эти действия относятся к Foundry (new).
- Убедитесь, что трассировка включена для вашего проекта. При необходимости выполните настройку трассировки в Microsoft Foundry.
- Запустите вашего агента хотя бы один раз.
- На портале Foundry перейдите к наблюдаемости>трассировкам.
- Убедитесь, что новая трассировка отображается с диапазонами для операций агента.
Трассировки обычно отображаются в течение 2–5 минут после выполнения агента. Если следы по-прежнему не отображаются после этого, см. статью "Устранение распространенных проблем".
Устранение распространенных проблем
| Проблема | Причина | Разрешение |
|---|---|---|
| Вы не видите трассы в Foundry | Трассировка не активна, нет недавнего трафика или задержка обработки | Подтвердите подключение Application Insights, создайте новый трафик и обновите его через 2–5 минут. |
| Вы не видите диапазоны LangChain или LangGraph | Обратные вызовы трассировки не присоединены к исполнению программы | Убедитесь, что вы передаете трассировщик в callbacks (например, config = {"callbacks": [azure_tracer]}) для выполнения трассировки, которую вы хотите. |
| Области LangChain отображаются, но вызовы инструментов отсутствуют | Инструменты не привязаны к модели или узел инструмента не настроен. | Убедитесь, что инструменты передаются в bind_tools() модель, а узлы инструментов добавляются в граф. |
| Трассировки отображаются, но являются неполными или отсутствующими диапазонами | Запись содержимого отключена или некоторые операции не инструментируются | Включите enable_content_recording=True, чтобы использовать полную телеметрию. Для пользовательских операций добавьте диапазоны вручную с помощью пакета SDK OpenTelemetry. |
| При запросе телеметрии возникают ошибки авторизации | Отсутствуют разрешения RBAC в Application Insights или Log Analytics | Подтвердите доступ в элементе управления доступом (IAM) для подключенных ресурсов. Для запросов журнала назначьте роль читателя Log Analytics. |
| Конфиденциальное содержимое отображается в трассировках | Запись содержимого включена, а запросы, аргументы инструментов или выходные данные включают конфиденциальные данные | Отключите запись содержимого в рабочей среде и скройте конфиденциальные данные перед вводом в телеметрию. |
Дальнейшие действия
- Изучите основные понятия и архитектуру в обзоре трассировки агента.
- Если вы еще не включили трассировку, см. раздел Настройка трассировки в Microsoft Foundry.
- Визуализируйте метрики работоспособности и производительности агента с помощью панели мониторинга агента.
- Изучите более широкие возможности обозримости в области генерирующего ИИ.