Partilhar via


Observabilidade do agente

Importante

É necessário fazer parte do programa de pré-visualização Frontier para obter acesso antecipado ao Microsoft Agent 365. A Frontier liga-o diretamente às mais recentes inovações de IA da Microsoft. As pré-visualizações da Frontier estão sujeitas aos termos de pré-visualização existentes dos seus contratos com clientes. Como estas funcionalidades ainda estão em desenvolvimento, a sua disponibilidade e capacidades podem mudar ao longo do tempo.

Para participar no ecossistema Agent 365, deve adicionar capacidades de Observabilidade Agent 365 ao seu agente. A Observabilidade do Agente 365 baseia-se no OpenTelemetry (OTel) e fornece uma estrutura unificada para capturar telemetria de forma consistente e segura em todas as plataformas de agentes. Ao implementar este componente obrigatório, permite que os administradores de TI monitorizem a atividade do seu agente no Microsoft Admin Center (MAC) e permite que as equipas de segurança utilizem o Defender e o Purview para conformidade e deteção de ameaças.

Principais benefícios

  • Visibilidade de Ponta a Ponta: Capture telemetria abrangente para cada invocação de agente, incluindo sessões, chamadas de ferramentas e exceções, garantindo-lhe total rastreabilidade entre plataformas.
  • Segurança e Compatibilidade: Alimente registos de auditoria unificados para o Defender e Purview, permitindo cenários avançados de segurança e relatórios de conformidade para o seu agente.
  • Flexibilidade Multiplataforma: Construir sobre os padrões OTel e suportar runtimes e plataformas diversificadas como Copilot Studio, Foundry e futuros frameworks de agentes.
  • Eficiência Operacional para Administradores: Fornecer observabilidade centralizada no MAC, reduzindo o tempo de resolução de problemas e melhorando a governação com controlos de acesso baseados em funções para equipas de TI que gerem o seu agente.

Instalação

Use estes comandos para instalar os módulos de observabilidade para as linguagens suportadas pelo Agente 365.

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

Configuração

As variáveis de ambiente necessárias para a observabilidade são:

Variável de Ambiente Descrição
ENABLE_OBSERVABILITY=true Flag para ativar/desativar o rastreio. Por predefinição
ENABLE_A365_OBSERVABILITY_EXPORTER=true True Exporte os registos para o nosso serviço. Caso contrário, recorre ao exportador da consola
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,
)

Excluir o resolvedor de tokens para iniciar sessão na consola.

Atributos de imagem

Use BaggageBuilder para definir informação contextual que atravessa todos os intervalos de um pedido. O SDK implementa uma SpanProcessor cópia todas as entradas de bagagem não vazias para os novos intervalos iniciados sem sobrescrever atributos existentes.

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

Resolver de Tokens

Ao usar o exportador Agent 365, deve fornecer uma função de resolução de token que devolve o token de autenticação. Ao usar o SDK de Observabilidade Agent 365 com o framework de Hospedagem de Agentes, pode gerar tokens usando as TurnContext atividades do agente from

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

Instrumentação Automática:

A auto-instrumentação escuta automaticamente os quadros agentivos (SDKs), sinais de telemetria existentes para rastreios e encaminha-os para o serviço de observabilidade do Agente 365. Isto elimina a necessidade de os programadores escreverem código de monitorização manualmente, simplificando a configuração e garantindo um acompanhamento consistente do desempenho.

A auto-instrumentação é suportada em múltiplos SDKs e plataformas:

Plataforma Estruturas suportadas:
.NET Estrutura de Agente de Kernel Semântico
Python Semântic Kernel, OpenAI, Agent Framework, LangChain
Node.js OpenAI

Nota

O suporte à auto-instrumentação varia consoante a plataforma e a implementação do SDK.

Kernel Semântico

A instrumentação automóvel requer o uso de um construtor de bagagem. Defina o ID do agente e o ID do inquilino usando BaggageBuilder.

Desinstalar um pacote

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

Configurar a observabilidade

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

OpenAI

A instrumentação automóvel requer o uso de um construtor de bagagem. Defina o ID do agente e o ID do inquilino usando BaggageBuilder.

Desinstalar um pacote

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

Configurar a observabilidade.

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

Agent Framework

A instrumentação automóvel requer o uso de um construtor de bagagem. Define o ID do agente e o ID do tenant usando o BaggageBuilder.

Desinstalar um pacote

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

Configurar a observabilidade

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

A instrumentação automática requer o uso de um construtor de bagagem. Defina o ID do agente e o ID do inquilino usando BaggageBuilder.

Desinstalar um pacote

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

Configurar a observabilidade

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

Instrumentação Manual

O SDK de observabilidade do Agente 365 pode ser usado para compreender o funcionamento interno do agente. O SDK fornece três escopos que podem ser iniciados: InvokeAgentScope, ExecuteToolScope, e InferenceScope.

Invocação do Agente

Este âmbito deve ser utilizado no início do processo do seu agente. Com o âmbito do agente Invoke, capturas propriedades como o agente atual que está a ser invocado, dados do utilizador do agente, etc.

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(...)

Execução de Ferramentas

Os exemplos seguintes demonstram como instrumentar a execução da ferramenta do seu agente com rastreamento de observabilidade para captar telemetria para fins de monitorização e auditoria.

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)

Inferência

Os exemplos seguintes mostram como instrumentar chamadas de inferência de modelos de IA com rastreamento de observabilidade para capturar o uso de tokens, detalhes do modelo e metadados de resposta.

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(...)

Validar localmente

Defina a variável de ambiente/ Isto exporta os rastreios (samps) para a consola.

Teste o seu agente com a observabilidade

Depois de implementar a observabilidade no seu agente, teste para garantir que a telemetria está a ser captada corretamente. Siga o guia de testes para configurar o seu ambiente e depois concentre-se principalmente na secção Visualizar registos de observabilidade para validar que a implementação da observabilidade está a funcionar como esperado.