Dela via


Agentobservabilitet

Viktigt

Du måste vara en del av förhandsversionen av Frontier för att få tidig åtkomst till Microsoft Agent 365. Frontier ansluter dig direkt till Microsofts senaste AI-innovationer. Förhandsversioner av Gräns omfattas av de befintliga förhandsversionsvillkoren för dina kundavtal. Eftersom dessa funktioner fortfarande är under utveckling kan deras tillgänglighet och funktioner ändras över tid.

Om du vill delta i Agent 365-ekosystemet måste du lägga till agent 365-observerbarhetsfunktioner i din agent. Agent 365 Observability bygger på OpenTelemetry (OTel) och tillhandahåller ett enhetligt ramverk för att samla in telemetri konsekvent och säkert på alla agentplattformar. Genom att implementera den här komponenten gör du det möjligt för IT-administratörer att övervaka agentens aktivitet i Microsoft Admin Center (MAC) och låta säkerhetsteam använda Defender och Purview för efterlevnad och hotidentifiering.

Viktiga fördelar

  • Synlighet från slutpunkt till slutpunkt: Samla in omfattande telemetri för varje agentanrop, inklusive sessioner, verktygsanrop och undantag, vilket ger dig fullständig spårbarhet mellan plattformar.
  • Aktivera säkerhet och efterlevnad: Mata in enhetliga granskningsloggar i Defender och Purview, vilket möjliggör avancerade säkerhetsscenarier och efterlevnadsrapportering för din agent.
  • Plattformsoberoende flexibilitet: Bygga på OTel-standarder och stödja olika körnings- och plattformar som Copilot Studio, Foundry och framtida agentramverk.
  • Driftseffektivitet för administratörer: Ge centraliserad observerbarhet i MAC, minska felsökningstiden och förbättra styrningen med rollbaserade åtkomstkontroller för IT-team som hanterar din agent.

Installation

Använd dessa kommandon för att installera observerbarhetsmodulerna för de språk som stöds av Agent 365.

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

Configuration

De miljövariabler som krävs för observerbarhet är:

Miljövariabel Description
ENABLE_OBSERVABILITY=true Flagga för att aktivera/inaktivera spårning. Som standard
ENABLE_A365_OBSERVABILITY_EXPORTER=true True exportera loggar till vår tjänst. Annars återgår till konsolexportören
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,
)

Exkludera tokenlösare för att logga till konsolen.

Bildattribut

Använd BaggageBuilder för att ange kontextuell information som flödar genom alla intervall i en begäran. SDK implementerar en SpanProcessor kopia av alla icke-bakåtkomna bagageposter till nystartade intervall utan att skriva över befintliga attribut.

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

Token Resolver

När du använder Agent 365-exportören måste du ange en token-matchningsfunktion som returnerar autentiseringstoken. När du använder Agent 365 Observability SDK med agentvärdramverket kan du generera token med hjälp av TurnContext agentaktiviteter

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

Automatisk instrumentering:

Automatisk instrumentering lyssnar automatiskt på agentiska ramverk (SDK:er) befintliga telemetrisignaler för spårning och vidarebefordrar dem till agent 365-observerbarhetstjänsten. Detta eliminerar behovet av att utvecklare skriver övervakningskod manuellt, förenklar konfigurationen och säkerställer konsekvent prestandaspårning.

Automatisk instrumentering stöds på flera SDK:er och plattformar:

Plattform Ramverk som stöds:
.NÄT Semantisk kernel, OpenAI, Agent Framework
Pytonorm Semantisk kernel, OpenAI, Agent Framework, LangChain
Node.js OpenAI

Obs

Stöd för automatisk instrumentering varierar beroende på plattforms- och SDK-implementering.

Semantic Kernel

Automatisk instrumentering kräver användning av bagagebyggare. Ange agent-ID och klient-ID med .BaggageBuilder

Installera DGSS-paketet

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

Konfigurera observerbarhet

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

Automatisk instrumentering kräver användning av bagagebyggare. Ange agent-ID och klient-ID med .BaggageBuilder

Installera DGSS-paketet

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

Konfigurera observerbarhet.

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

Automatisk instrumentering kräver användning av bagagebyggare. Ange agent-ID och klientorganisations-ID med Hjälp av BaggageBuilder.

Installera DGSS-paketet

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

Konfigurera observerbarhet

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

Automatisk instrumentering kräver användning av bagagebyggare. Ange agent-ID och klient-ID med .BaggageBuilder

Installera DGSS-paketet

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

Konfigurera observerbarhet

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

Manuell instrumentering

Agent 365 observability SDK kan användas för att förstå agentens interna arbete. SDK:et innehåller tre omfång som kan startas: InvokeAgentScope, ExecuteToolScopeoch InferenceScope.

Agentanrop

Det här omfånget bör användas i början av agentprocessen. Med anropa agentomfånget samlar du in egenskaper som den aktuella agenten som anropas, agentanvändardata osv.

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

Verktygskörning

Följande exempel visar hur du instrumenterar agentens verktygskörning med observerbarhetsspårning för att samla in telemetri i övervaknings- och granskningssyfte.

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)

Slutsatsdragning

Följande exempel visar hur du instrumentera AI-modellinferensanrop med observerbarhetsspårning för att samla in tokenanvändning, modellinformation och svarsmetadata.

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

Verifiera lokalt

Ange miljövariabel/ Exporten sträcker sig över (spårningar) till konsolen.

Testa din agent med observerbarhet

När du har implementerat observerbarhet i din agent testar du för att säkerställa att telemetrin fångas in korrekt. Följ testguidenför att konfigurera din miljö och fokusera sedan främst på avsnittet Visa observerbarhetsloggar för att verifiera att implementeringen av observerbarhet fungerar som förväntat.