Поделиться через


Наблюдаемость агента

Это важно

Чтобы получить ранний доступ к Microsoft Agent 365, необходимо быть частью программы предварительного просмотра Фронтир. Frontier напрямую подключает вас к последним инновациям ИИ от Microsoft. Получите практический опыт с прорывными функциями, делитесь своими впечатлениями с продуктовыми командами и помогите сформировать будущее Искусственного интеллекта. Предпросмотры Frontier подчиняются существующим условиям предварительного просмотра в рамках ваших клиентских соглашений. Так как эти функции по-прежнему находятся в разработке, их доступность и возможности могут меняться со временем.

Чтобы участвовать в экосистеме Agent 365, необходимо добавить в ваш агент возможности наблюдаемости Agent 365. Наблюдаемость агента 365 основана на OpenTelemetry (OTel) и предоставляет единый фреймворк для сбора данных телеметрии согласованно и безопасно на всех платформах агентных решений. Реализуя этот обязательный компонент, ИТ-администраторы позволяют ИТ-администраторам отслеживать действия агента в Microsoft Admin Center (MAC) и разрешать группам безопасности использовать Defender и Purview для обнаружения соответствия требованиям и угроз.

Ключевые преимущества

  • Сквозная видимость: сбор комплексной телеметрии для каждого вызова агента, включая сеансы, вызовы инструментов и исключения, что обеспечивает полную трассировку на разных платформах.
  • Включение безопасности и соответствия: передача унифицированных журналов аудита в Defender и Purview, что позволяет создавать расширенные сценарии безопасности и отчеты о соответствии для агента.
  • Кроссплатформенная гибкость: Использование стандартов OTel и поддержка различных сред выполнения и платформ, таких как Copilot Studio, Foundry и будущие фреймворки агентов.
  • Эффективность работы для администраторов: обеспечение централизованной наблюдаемости в MAC, сокращение времени устранения неполадок и улучшение управления доступом на основе ролей для ИТ-команд, управляющих агентом.

Installation

Используйте эти команды для установки модулей наблюдаемости для языков, поддерживаемых агентом 365.

pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime

Конфигурация

Переменные среды, необходимые для наблюдения, :

Переменная среды Description
ENABLE_OBSERVABILITY=true Флаг для включения/отключения трассировки. По умолчанию false
ENABLE_A365_OBSERVABILITY_EXPORTER=true True экспорт журналов в нашу службу. В противном случае возвращается к экспортеру консоли
from microsoft_agents_a365.observability.core import config

def token_resolver(agent_id: str, tenant_id: str) -> str | None:
    # Implement secure token retrieval here
    return "Bearer <token>"

config.configure(
    service_name="my-agent-service",
    service_namespace="my.namespace",
    token_resolver=token_resolver,
)

Исключите сопоставитель маркеров для входа в консоль.

Атрибуты багажа

Используется BaggageBuilder для задания контекстной информации, которая проходит через все диапазоны в запросе. Пакет SDK копирует все непустые записи багажа в новые запуски спанов, не перезаписывая существующие атрибуты.

from microsoft_agents_a365.observability.core.middleware.baggage_builder import BaggageBuilder

with (
    BaggageBuilder()
    .tenant_id("tenant-123")
    .agent_id("agent-456")
    .correlation_id("corr-789")
    .build()
):
    # Any spans started in this context will receive these as attributes
    pass

Разрешитель токенов

При использовании экспортера Agent 365 необходимо предоставить функцию разрешения токенов, которая возвращает токен аутентификации. При использовании SDK Agent 365 Observability с платформой размещения агента, можно создавать токены на основе активностей агента с помощью TurnContext.

from microsoft_agents.activity import load_configuration_from_env
from microsoft_agents.authentication.msal import MsalConnectionManager
from microsoft_agents.hosting.aiohttp import CloudAdapter
from microsoft_agents.hosting.core import (
    AgentApplication,
    Authorization,
    MemoryStorage,
    TurnContext,
    TurnState,
)
from microsoft_agents_a365.runtime.environment_utils import (
    get_observability_authentication_scope,
)

agents_sdk_config = load_configuration_from_env(environ)

STORAGE = MemoryStorage()
CONNECTION_MANAGER = MsalConnectionManager(**agents_sdk_config)
ADAPTER = CloudAdapter(connection_manager=CONNECTION_MANAGER)
ADAPTER.use(TranscriptLoggerMiddleware(ConsoleTranscriptLogger()))
AUTHORIZATION = Authorization(STORAGE, CONNECTION_MANAGER, **agents_sdk_config)

AGENT_APP = AgentApplication[TurnState](
    storage=STORAGE, adapter=ADAPTER, authorization=AUTHORIZATION, **agents_sdk_config
)

@AGENT_APP.activity("message", auth_handlers=["AGENTIC"])
async def on_message(context: TurnContext, _state: TurnState):
    aau_auth_token = await AGENT_APP.auth.exchange_token(
                        context,
                        scopes=get_observability_authentication_scope(),
                        auth_handler_id="AGENTIC",
                    )
    # cache this auth token and return via token resolver

Автоматическое инструментирование

Автоматическое инструментирование слушает сигналы телеметрии агентских фреймворков (SDK) для трассировок и перенаправляет их в службу наблюдаемости Agent 365. Это устраняет необходимость для разработчиков писать код для мониторинга вручную, упрощает настройку и обеспечивает постоянный мониторинг производительности.

Автоматическое инструментирование поддерживается на нескольких пакетах SDK и платформах:

Platform Поддерживаемые пакеты SDK / Платформы
.NET Семантическое ядро, OpenAI, Agent Framework
Python Семантические ядра, OpenAI, Agent Framework, LangChain
Node.js OpenAI

Замечание

Поддержка автоматического инструментирования зависит от реализации платформы и пакета SDK.

Семантическое ядро

Для автоматического инструментирования требуется использование построителя багажа. Установите идентификатор агента и идентификатор арендатора с помощью BaggageBuilder.

Установите пакет

pip install microsoft-agents-a365-observability-extensions-semantic-kernel

Настройка наблюдаемости

from microsoft_agents_a365.observability.core.config import configure
from microsoft_agents_a365.observability.extensions.semantic_kernel import SemanticKernelInstrumentor

# Configure observability
configure(
    service_name="my-semantic-kernel-agent",
    service_namespace="ai.agents"
)

# Enable auto-instrumentation
instrumentor = SemanticKernelInstrumentor()
instrumentor.instrument()

# Your Semantic Kernel code is now automatically traced

Открытый ИИ

Для автоматического инструментирования требуется использование построителя багажа. Установите идентификатор агента и идентификатор арендатора с помощью BaggageBuilder.

Установите пакет .

pip install microsoft-agents-a365-observability-extensions-openai

Настройка наблюдаемости.

from microsoft_agents_a365.observability.core.config import configure
from microsoft_agents_a365.observability.extensions.openai_agents import OpenAIAgentsTraceInstrumentor

# Configure observability
configure(
    service_name="my-openai-agent",
    service_namespace="ai.agents"
)

# Enable auto-instrumentation
instrumentor = OpenAIAgentsTraceInstrumentor()
instrumentor.instrument()

# Your OpenAI Agents code is now automatically traced

Платформа агента

Для автоматического инструментирования требуется использование построителя багажа. Задайте идентификатор агента и идентификатор клиента с помощью BaggageBuilder.

Установите пакет

pip install microsoft-agents-a365-observability-extensions-agent-framework

Настройка наблюдаемости

from microsoft_agents_a365.observability.core.config import configure
from microsoft_agents_a365.observability.extensions.agentframework.trace_instrumentor import (
    AgentFrameworkInstrumentor,
)

# Configure observability
configure(
    service_name="AgentFrameworkTracingWithAzureOpenAI",
    service_namespace="AgentFrameworkTesting",
)

# Enable auto-instrumentation
AgentFrameworkInstrumentor().instrument()

LangChain Framework

Автоматическое инструментирование требует использования построителя багажа. Установите идентификатор агента и идентификатор арендатора с помощью BaggageBuilder.

Установите пакет .

pip install microsoft-agents-a365-observability-extensions-langchain

Настройка наблюдаемости

from microsoft_agents_a365.observability.core.config import configure
from microsoft_agents_a365.observability.extensions.langchain import CustomLangChainInstrumentor

# Configure observability
configure(
    service_name="my-langchain-agent",
    service_namespace="ai.agents"
)

# Enable auto-instrumentation
CustomLangChainInstrumentor()

# Your LangChain code is now automatically traced

Ручное инструментирование

Пакет SDK для отслеживания агента 365 можно использовать для понимания внутренней работы агента. Пакет SDK предоставляет три области, которые можно запустить: InvokeAgentScope, ExecuteToolScopeи InferenceScope.

Вызов агента

Эта область должна использоваться в начале процесса агента. При области вызова агента вы записываете такие свойства, как текущий вызываемый агент, данные пользователя агента и т. д.

from microsoft_agents_a365.observability.core.invoke_agent_scope import InvokeAgentScope
from microsoft_agents_a365.observability.core.invoke_agent_details import InvokeAgentDetails
from microsoft_agents_a365.observability.core.tenant_details import TenantDetails
from microsoft_agents_a365.observability.core.request import Request

invoke_details = InvokeAgentDetails(
    details=agent_details,        # AgentDetails instance
    endpoint=my_endpoint,         # Optional endpoint (with hostname/port)
    session_id="session-42"
)
tenant_details = TenantDetails(tenant_id="tenant-123")
req = Request(content="User asks a question")

with InvokeAgentScope.start(invoke_details, tenant_details, req):
    # Perform agent invocation logic
    response = call_agent(...)

Запуск утилиты

В следующих примерах показано, как инструментировать выполнение инструмента агента для обеспечения наблюдаемости и сбора телеметрии в целях мониторинга и аудита.

from microsoft_agents_a365.observability.core.execute_tool_scope import ExecuteToolScope
from microsoft_agents_a365.observability.core.tool_call_details import ToolCallDetails

tool_details = ToolCallDetails(
    tool_name="summarize",
    tool_type="function",
    tool_call_id="tc-001",
    arguments="{'text': '...'}",
    description="Summarize provided text",
    endpoint=None  # or endpoint object with hostname/port
)

with ExecuteToolScope.start(tool_details, agent_details, tenant_details):
    result = run_tool(tool_details)

Вывод

В следующих примерах показано, как инструментировать вызовы вывода модели ИИ с отслеживанием наблюдаемости для отслеживания использования маркеров, сведений о модели и метаданных ответа.

from microsoft_agents_a365.observability.core.inference_scope import InferenceScope
from microsoft_agents_a365.observability.core.inference_call_details import InferenceCallDetails
from microsoft_agents_a365.observability.core.request import Request

inference_details = InferenceCallDetails(
    operationName=SomeEnumOrValue("chat"),
    model="gpt-4o-mini",
    providerName="azure-openai",
    inputTokens=123,
    outputTokens=456,
    finishReasons=["stop"],
    responseId="resp-987"
)
req = Request(content="Explain quantum computing simply.")

with InferenceScope.start(inference_details, agent_details, tenant_details, req):
    completion = call_llm(...)

Проверка на локальном уровне

Задайте для переменной ENABLE_A365_OBSERVABILITY_EXPORTER среды значение false. Экспортирует диапазоны (трассировки) в консоль.

Испытайте своего агента с использованием наблюдаемости

После реализации наблюдаемости в агенте проверьте правильность записи телеметрии. Следуйте руководству по тестированию, чтобы настроить среду, а затем сосредоточьтесь главным образом на разделе Просмотр журналов наблюдаемости, чтобы проверить, что ваша реализация наблюдаемости работает должным образом.