Observationsmuligheds-SDK

Vigtigt!

Anvend Microsoft OpenTelemetry Distro for at aktivere observationsmulighed i Agent 365. Denne distribution leverer én samlet observationsmuligheds-SDK til hele Microsofts økosystem, som understøtter Agent 365, Microsoft Foundry, Azure Monitor og meget mere. Den nuværende tilgang, som er beskrevet i denne artikel, fungerer stadig uden ændringer. Du kan finde migrationsvejledninger på forskellige sprog i følgende vejledninger:

Bemærk!

Observationsmulighed er et af de trinvise mulighedsniveauer i Kom i gang med Agent 365-udvikling og gælder for alle agenttyper.

Hvis du vil deltage i Agent 365-økosystemet, skal du føje funktioner for Agent 365-observerbarhed i din agent. Agent 365-observerbarhed bygger på OpenTelemetry (OTel) og giver en samlet struktur til at registrere telemetri på en ensartet og sikker måde på tværs af alle agentplatforme. Ved at implementere denne påkrævede komponent giver du it-administratorer mulighed for at overvåge din agents aktivitet i Microsoft Administration, og du giver sikkerhedsteams tilladelse til at bruge Defender og Purview til overholdelse og trusselsregistrering.

Vigtigste fordele

  • Komplet synlighed: Hent omfattende telemetri for hver agentaktivering, herunder sessioner, værktøjskald og undtagelser, hvilket giver dig fuld sporing på tværs af platforme.
  • Aktivering af sikkerhed og overholdelse af angivne standarder: Indfør samlede overvågningslogge i Defender og Purview, hvilket muliggør avancerede sikkerhedsscenarier og rapportering af overholdelse af angivne standarder for din agent.
  • Fleksibilitet på tværs af platforme: Bygger på OTel-standarder og understøtter forskellige kørsler og platforme, f.eks. Copilot Studio, Foundry og fremtidige agentstrukturer.
  • Driftseffektivitet for administratorer: Angiv central observerbarhed i Microsoft 365 Administration, hvilket reducerer fejlfindingstiden og forbedrer styringen med rollebaserede adgangskontroller for it-teams, der administrerer din agent.

Understøttede agenter

Følgende agenttyper understøtter Agent 365-observationsmulighed:

Installation

Brug disse kommandoer til at installere modulerne for observerbarhed for de sprog, der understøttes af Agent 365.

Installer de primære observationsmuligheds- og runtime-pakker. Alle agenter, der benytter Agent 365-observerbarhed, har brug for disse pakker.

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

Hvis din agent bruger Microsoft Agents Hosting-pakken, skal du installere hosting-integrationspakken. Pakken indeholder middleware, der automatisk udfylder bagage og områder fra TurnContext, og inkluderer token-cachelagring til observationsmuligheds-eksportøren.

pip install microsoft-agents-a365-observability-hosting

Hvis din agent bruger et af de understøttede AI-frameworks, skal du installere den tilsvarende automatiske instrumenteringsudvidelse for automatisk at registrere telemetri uden manuel instrumenteringskode. Få konfigurationsoplysninger i Automatisk instrumentering.

# For Semantic Kernel
pip install microsoft-agents-a365-observability-extensions-semantic-kernel

# For OpenAI Agents SDK
pip install microsoft-agents-a365-observability-extensions-openai

# For Microsoft Agent Framework
pip install microsoft-agents-a365-observability-extensions-agent-framework

# For LangChain
pip install microsoft-agents-a365-observability-extensions-langchain

Konfiguration

Brug følgende indstillinger til at aktivere og tilpasse Agent 365-observerbarhed for din agent.

Sæt miljøvariablen ENABLE_A365_OBSERVABILITY_EXPORTER til true for at få observationsmulighed. Denne indstilling eksporterer logfiler til tjenesten og kræver, at du angiver en token_resolver. Ellers anvendes konsoleksportøren.

from microsoft_agents_a365.observability.core import configure

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

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

Token-løsningsfunktionen kan ikke logføre på konsollen.

Du kan tilpasse eksportørens funktionsmåde ved at videregive en Agent365ExporterOptions-forekomst til exporter_options. Når exporter_options angives, tilsidesætter den parametrene token_resolver og cluster_category.

from microsoft_agents_a365.observability.core import configure, Agent365ExporterOptions

configure(
    service_name="my-agent-service",
    service_namespace="my.namespace",
    exporter_options=Agent365ExporterOptions(
        cluster_category="prod",
        token_resolver=token_resolver,
    ),
    suppress_invoke_agent_input=True,
)

I følgende tabel beskrives de valgfri parametre til configure().

Parameter Beskrivelse Standard
logger_name Navnet på Python-logføringsprogrammet, der bruges til fejlfinding og konsollogfils-output. microsoft_agents_a365.observability.core
exporter_options En Agent365ExporterOptions-forekomst, der konfigurerer token-løsningsfunktionen og klyngekategorien sammen. None
suppress_invoke_agent_input Når True, skjules inputbeskeder i InvokeAgent områder. False

I følgende tabel beskrives de valgfri egenskaber til Agent365ExporterOptions.

Egenskab Beskrivelse Standard
use_s2s_endpoint Hvis True, bruges service-til-service slutpunktstien. False
max_queue_size Maksimal køstørrelse for batchprocessoren. 2048
scheduled_delay_ms Forsinkelse i millisekunder mellem eksportbatches. 5000
exporter_timeout_ms Timeout i millisekunder for eksportoperationen. 30000
max_export_batch_size Maksimal batchstørrelse for eksportoperationer. 512

Bagageattributter

Brug BaggageBuilder til at angive kontekstafhængige oplysninger, der flyder gennem alle områder i en anmodning. SDK'et implementerer en SpanProcessor, der kopierer alle ikke-tomme bagageposter til nystartede spænd uden at overskrive eksisterende attributter.

from microsoft_agents_a365.observability.core import BaggageBuilder

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

Du kan udfylde BaggageBuilder fra TurnContext automatisk ved at bruge populate-hjælperen i microsoft-agents-a365-observability-hosting-pakken. Denne hjælper udtrækker automatisk oplysninger om opkaldende part, agent, lejer, kanal og samtaledetaljer fra aktiviteten.

from microsoft_agents.hosting.core.turn_context import TurnContext
from microsoft_agents_a365.observability.core import BaggageBuilder
from microsoft_agents_a365.observability.hosting.scope_helpers.populate_baggage import populate

builder = BaggageBuilder()
populate(builder, turn_context)

with builder.build():
    # Baggage is auto-populated from the TurnContext activity
    pass

Bagage-middleware

Hvis din agent bruger hosting-integrationspakken, registrer bagage-middleware for automatisk at udfylde bagage for hver indkommende anmodning. Dette trin fjerner behovet for manuelt at kalde BaggageBuilder i hver aktivitets-handler.

Registrer BaggageMiddleware i sættet med adapter-middleware. Det udtrækker automatisk opkalder-, agent-, lejer-, kanal- og samtaleoplysninger fra hver indkommende TurnContext og pakker anmodningen ind i et bagageomfang.

from microsoft_agents_a365.observability.hosting import BaggageMiddleware

adapter.use(BaggageMiddleware())

Alternativt kan du bruge ObservabilityHostingManager til at konfigurere bagage-middleware sammen med andre hostingfunktioner:

from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions

options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)

Middleware springer bagageopsætning over for asynkrone svar (ContinueConversation-begivenheder) for at undgå at overskrive bagage, som den oprindelige anmodning allerede har sat.

Tokenløsningsfunktion

Når du bruger Agent 365-eksportøren, skal du angive en tokenløsningsfunktion, der returnerer en godkendelsestoken. Når du bruger Agent 365-observerbarheds-SDK'et med Agent Hosting-strukturen, kan du generere tokens ved hjælp af TurnContext fra agentaktiviteterne.

Følgende kodeeksempel viser, hvordan du genererer et token ved hjælp af microsoft_agents.hosting.core-SDK. Det godkendelsestoken, der genereres her, bruges til at eksportere områder til A365-indlæsningstjenesten. Agenter kan generere et token selv ved for eksempel ved at bruge Microsoft Authentication Library (MSAL), men de skal sikre, at det pågældende token har et observationsmuligheds-omfang.

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 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

Hvis du har en agent, der er lavet med A365 CLI og bruger en AI-holdkammerat samt pakken Microsoft Agent 365 Observability Hosting Library, skal du bruge AgenticTokenCache til automatisk håndtering af token-cachelagring. Registrer dit token én gang pr. agent og lejer under en aktivitets-handler, og angiv cache.get_observability_token som token_resolver i din observationsmuligheds-konfiguration.

from microsoft_agents_a365.observability.core import configure
from microsoft_agents_a365.observability.hosting.token_cache_helpers import (
    AgenticTokenCache,
    AgenticTokenStruct,
)
from microsoft_agents_a365.runtime import get_observability_authentication_scope

# Create a shared cache instance
token_cache = AgenticTokenCache()

# Use the cache as your token resolver in configure()
configure(
    service_name="my-agent-service",
    service_namespace="my.namespace",
    token_resolver=token_cache.get_observability_token,
)

@AGENT_APP.activity("message", auth_handlers=["AGENTIC"])
async def on_message(context: TurnContext, _state: TurnState):
    token_cache.register_observability(
        agent_id="agent-456",
        tenant_id="tenant-123",
        token_generator=AgenticTokenStruct(
            authorization=AGENT_APP.auth,
            turn_context=context,
        ),
        observability_scopes=get_observability_authentication_scope(),
    )

Automatisk instrumentering

Automatisk instrumentering lytter automatisk til eksisterende telemetrisignaler for agentbaserede strukturer (SDK'er) efter sporinger og videresender dem til tjenesten Agent 365-observerbarhed. Denne funktion fjerner behovet for, at udviklere skal skrive overvågningskoden manuelt, forenkler konfigurationen og sikrer ensartet sporing af ydeevnen.

Vigtigt!

Automatisk instrumentering udfylder kun almindelige OTel-attributter. Du skal tilføje Microsoft-specifikke attributter gennem BaggageBuilder. Du kan se, hvilke attributter der mangler, ved at validere outputtet fra din konsol i forhold til butikslogfiler for det differentierede sæt.

Flere SDK’er og platforme understøtter automatisk instrumentering:

Platform Understøttede SDK'er/strukturer
.NET Semantic Kernel, OpenAI, Agent Framework
Python Semantic Kernel, OpenAI, Agent Framework, LangChain
Node.js OpenAI, LangChain

Bemærk!

Understøttelse af automatisk instrumentering varierer afhængigt af platforms- og SDK-implementering.

Semantisk kerne

Automatisk instrumentering kræver brug af bagagegenerator. Angiv agent-id og lejer-id ved hjælp af BaggageBuilder.

Installere pakken.

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

Konfigurer observerbarhed.

from microsoft_agents_a365.observability.core import configure
from microsoft_agents_a365.observability.extensions.semantickernel.trace_instrumentor 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 brug af bagagegenerator. Angiv agent-id og lejer-id ved hjælp af BaggageBuilder.

Installere pakken.

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

Konfigurer observerbarhed.

from microsoft_agents_a365.observability.core import configure
from microsoft_agents_a365.observability.extensions.openai 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 brug af bagagegenerator. Angiv agent-id og lejer-id ved hjælp af BaggageBuilder.

Installere pakken.

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

Konfigurer observerbarhed.

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

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

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

LangChain Framework

Automatisk instrumentering kræver brug af bagagegenerator. Angiv agent-id og lejer-id ved hjælp af BaggageBuilder.

Installere pakken.

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

Konfigurer observerbarhed.

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

Manuel instrumentering

Brug Agent 365-observerbarheds-SDK'et til at forstå agentens interne arbejde. SDK'et stiller omfang til rådighed, som du kan starte: InvokeAgentScope, ExecuteToolScope, InferenceScope og OutputScope.

Agentaktivering

Brug dette omfang i starten af agentprocessen. Når du bruger området for aktivering af agent, kan du hente egenskaber som den aktuelle agent, der aktiveres, agentbrugerdata og meget mere.

from microsoft_agents_a365.observability.core import (
    InvokeAgentScope,
    InvokeAgentScopeDetails,
    AgentDetails,
    CallerDetails,
    UserDetails,
    Channel,
    Request,
    ServiceEndpoint,
)

agent_details = AgentDetails(
    agent_id="agent-456",
    agent_name="My Agent",
    agent_description="An AI agent powered by Azure OpenAI",
    agentic_user_id="auid-123",
    agentic_user_email="agent@contoso.com",
    agent_blueprint_id="blueprint-789",
    tenant_id="tenant-123",
)

scope_details = InvokeAgentScopeDetails(
    endpoint=ServiceEndpoint(hostname="myagent.contoso.com", port=443),
)

request = Request(
    content="User asks a question",
    session_id="session-42",
    conversation_id="conv-xyz",
    channel=Channel(name="msteams"),
)

caller_details = CallerDetails(
    user_details=UserDetails(
        user_id="user-123",
        user_email="jane.doe@contoso.com",
        user_name="Jane Doe",
    ),
)

with InvokeAgentScope.start(request, scope_details, agent_details, caller_details):
    # Perform agent invocation logic
    response = call_agent(...)

Værktøjsudførelse

De følgende eksempler viser, hvordan du kan tilføje sporing af observationsmulighed i din agents værktøjsudførelse. Denne sporing registrerer telemetri til overvågning og kontrol.

from microsoft_agents_a365.observability.core import (
    ExecuteToolScope,
    ToolCallDetails,
    Request,
    ServiceEndpoint,
)

# Use the same agent_details and request instances from the InvokeAgentScope example above

tool_details = ToolCallDetails(
    tool_name="summarize",
    tool_type="function",
    tool_call_id="tc-001",
    arguments="{'text': '...'}",
    description="Summarize provided text",
    endpoint=ServiceEndpoint(hostname="tools.contoso.com", port=8080),
)

with ExecuteToolScope.start(request, tool_details, agent_details) as scope:
    result = run_tool(tool_details)
    scope.record_response(result)

Inferens

I følgende eksempler kan du se, hvordan du instrumenter inferenskald til AI-modeller med registrering af observerbarhed for at registrere tokenanvendelse, modeldetaljer og svarmetadata.

from microsoft_agents_a365.observability.core import (
    InferenceScope,
    InferenceCallDetails,
    InferenceOperationType,
)

# Use the same agent_details and request instances from the InvokeAgentScope example above

inference_details = InferenceCallDetails(
    operationName=InferenceOperationType.CHAT,
    model="gpt-4o-mini",
    providerName="azure-openai",
    inputTokens=123,
    outputTokens=456,
    finishReasons=["stop"],
)

with InferenceScope.start(request, inference_details, agent_details) as scope:
    completion = call_llm(...)
    scope.record_output_messages([completion.text])
    scope.record_input_tokens(completion.usage.input_tokens)
    scope.record_output_tokens(completion.usage.output_tokens)

Afgang

Brug dette omfang til asynkrone scenarier, hvor InvokeAgentScope, ExecuteToolScope eller InferenceScope ikke kan registrere output synkront. Start OutputScope som et underordnet område for at registrere de endelige outputbeskeder, når det overordnede omfang er afsluttet.

from microsoft_agents_a365.observability.core import (
    OutputScope,
    Response,
    SpanDetails,
)

# Use the same agent_details and request instances from the InvokeAgentScope example above

# Get the parent context from the originating scope
parent_context = invoke_scope.get_context()

response = Response(messages=["Here is your organized inbox with 15 urgent emails."])

with OutputScope.start(
    request,
    response,
    agent_details,
    span_details=SpanDetails(parent_context=parent_context),
):
    # Output messages are recorded automatically from the response
    pass

Valider lokalt

Du kan bekræfte, at du har integreret med observationsmuligheds-SDK'et, ved at undersøge de konsollogfiler, der er genereret af din agent, og logfiler fra observationsmuligheds-SDK'et.

Angiv miljøvariablen ENABLE_A365_OBSERVABILITY_EXPORTER til false. Denne indstilling eksporterer områder (sporinger) til konsollen.

Du kan undersøge eksportfejl ved at aktivere detaljeret logføring. Dette gør du ved at angive ENABLE_A365_OBSERVABILITY_EXPORTER som true og konfigurere fejlsøgnings-logføring i din programstart:

import logging

logging.basicConfig(level=logging.DEBUG)
logging.getLogger("microsoft_agents_a365.observability.core").setLevel(logging.DEBUG)

# Or target only the exporter:
logging.getLogger(
    "microsoft_agents_a365.observability.core.exporters.agent365_exporter"
).setLevel(logging.DEBUG)

Vigtige logbeskeder:

DEBUG  Token resolved for agent {agentId} tenant {tenantId}
DEBUG  Exporting {n} spans to {url}
DEBUG  HTTP 200 - correlation ID: abc-123
ERROR  Token resolution failed: {error}
ERROR  HTTP 401 exporting spans - correlation ID: abc-123
INFO   No spans with tenant/agent identity found; nothing exported.

Visning af eksporterede logfiler

For at kunne se agenttelemetri i Microsoft Purview eller Microsoft Defender, skal følgende krav være opfyldt:

Validering til butiksudgivelse

Vigtigt!

En vellykket butiksvalidering kræver, at din agent skalimplementere InvokeAgentScope-, InferenceScope- og ExecuteToolScope-omfang. Disse tre omfang er nødvendige, hvis du vil publicere.

Før du publicerer, skal du bruge logfiler fra konsollen til at validere din integration af observationsmulighed for agenten ved at implementere de nødvendige invoke agent-, execute tool, inference- og output-omfang. Sammenlign derefter din agents logfiler med følgende attributlister for at bekræfte, at alle nødvendige attributter er til stede. Registrer attributter på hvert omfang eller via bagage-udvikleren, og tilføj valgfrie attributter efter behov.

Få yderligere oplysninger om krav til publicering i butikken i retningslinjer for butiksvalidering.

InvokeAgentScope-attributter

Følgende liste giver et overblik over de obligatoriske og valgfri telemetriattributter, der registreres, når du starter en InvokeAgentScope.

"attributes": {
        "error.type": "Optional",
        "microsoft.a365.agent.blueprint.id": "Required",
        "gen_ai.agent.description": "Optional",
        "gen_ai.agent.id": "Required",
        "gen_ai.agent.name": "Required",
        "microsoft.a365.agent.platform.id": "Optional",
        "microsoft.agent.user.email": "Required",
        "microsoft.agent.user.id": "Required",
        "gen_ai.agent.version": "Optional",
        "microsoft.a365.caller.agent.blueprint.id": "Optional",
        "microsoft.a365.caller.agent.id": "Optional",
        "microsoft.a365.caller.agent.name": "Optional",
        "microsoft.a365.caller.agent.platform.id": "Optional",
        "microsoft.a365.caller.agent.user.email": "Optional",
        "microsoft.a365.caller.agent.user.id": "Optional",
        "microsoft.a365.caller.agent.version": "Optional",
        "client.address": "Required",
        "user.id": "Required",
        "user.name": "Optional",
        "user.email": "Required",
        "microsoft.channel.link": "Optional",
        "microsoft.channel.name": "Required",
        "gen_ai.conversation.id": "Required",
        "microsoft.conversation.item.link": "Optional",
        "gen_ai.input.messages": "Required",
        "gen_ai.operation.name": "Required",
        "gen_ai.output.messages": "Required",
        "server.address": "Required",
        "server.port": "Required",
        "microsoft.session.id": "Optional",
        "microsoft.session.description": "Optional",
        "microsoft.tenant.id": "Required"
    }

ExecuteToolScope-attributter

Følgende liste giver et overblik over de obligatoriske og valgfri telemetriattributter, der registreres, når du starter en ExecuteToolScope.

"attributes": {
        "error.type": "Optional",
        "microsoft.a365.agent.blueprint.id": "Required",
        "gen_ai.agent.description": "Optional",
        "gen_ai.agent.id": "Required",
        "gen_ai.agent.name": "Required",
        "microsoft.a365.agent.platform.id": "Optional",
        "microsoft.agent.user.email": "Required",
        "microsoft.agent.user.id": "Required",
        "gen_ai.agent.version": "Optional",
        "client.address": "Required",
        "user.id": "Required",
        "user.name": "Optional",
        "user.email": "Required",
        "microsoft.channel.link": "Optional",
        "microsoft.channel.name": "Required",
        "gen_ai.conversation.id": "Required",
        "microsoft.conversation.item.link": "Optional",
        "gen_ai.operation.name": "Required",
        "gen_ai.tool.call.arguments": "Required",
        "gen_ai.tool.call.id": "Required",
        "gen_ai.tool.call.result": "Required",
        "gen_ai.tool.description": "Optional",
        "gen_ai.tool.name": "Required",
        "gen_ai.tool.type": "Required",
        "server.address": "Optional",
        "server.port": "Optional",
        "microsoft.session.id": "Optional",
        "microsoft.session.description": "Optional",
        "microsoft.tenant.id": "Required"
    }

InferenceScope-attributter

Følgende liste giver et overblik over de obligatoriske og valgfri telemetriattributter, der registreres, når du starter en InferenceScope.

"attributes": {
        "error.type": "Optional",
        "microsoft.a365.agent.blueprint.id": "Required",
        "gen_ai.agent.description": "Optional",
        "gen_ai.agent.id": "Required",
        "gen_ai.agent.name": "Required",
        "microsoft.a365.agent.platform.id": "Optional",
        "microsoft.a365.agent.thought.process": "Optional",
        "microsoft.agent.user.email": "Required",
        "microsoft.agent.user.id": "Required",
        "gen_ai.agent.version": "Optional",
        "client.address": "Required",
        "user.id": "Required",
        "user.name": "Optional",
        "user.email": "Required",
        "microsoft.channel.link": "Optional",
        "microsoft.channel.name": "Required",
        "gen_ai.conversation.id": "Required",
        "microsoft.conversation.item.link": "Optional",
        "gen_ai.input.messages": "Required",
        "gen_ai.operation.name": "Required",
        "gen_ai.output.messages": "Required",
        "gen_ai.provider.name": "Required",
        "gen_ai.request.model": "Required",
        "gen_ai.response.finish_reasons": "Optional",
        "gen_ai.usage.input_tokens": "Optional",
        "gen_ai.usage.output_tokens": "Optional",
        "server.address": "Optional",
        "server.port": "Optional",
        "microsoft.session.description": "Optional",
        "microsoft.session.id": "Optional",
        "microsoft.tenant.id": "Required"
    }

OutputScope-attributter

Følgende liste giver et overblik over de obligatoriske og valgfri telemetriattributter, der registreres, når du starter en OutputScope. Brug dette omfang til asynkrone scenarier, hvor det overordnede omfang ikke kan registrere outputdata synkront.

"attributes": {
        "microsoft.a365.agent.blueprint.id": "Required",
        "gen_ai.agent.description": "Optional",
        "gen_ai.agent.id": "Required",
        "gen_ai.agent.name": "Required",
        "microsoft.a365.agent.platform.id": "Optional",
        "microsoft.agent.user.email": "Required",
        "microsoft.agent.user.id": "Required",
        "gen_ai.agent.version": "Optional",
        "client.address": "Required",
        "user.id": "Required",
        "user.name": "Optional",
        "user.email": "Required",
        "microsoft.channel.link": "Optional",
        "microsoft.channel.name": "Required",
        "gen_ai.conversation.id": "Required",
        "microsoft.conversation.item.link": "Optional",
        "gen_ai.operation.name": "Required",
        "gen_ai.output.messages": "Required",
        "microsoft.session.id": "Optional",
        "microsoft.session.description": "Optional",
        "microsoft.tenant.id": "Required"
    }

Test din agent med observerbarhed

Når du har implementeret observerbarhed i din agent, skal du teste for at sikre, at telemetri registreres korrekt. Følg testguiden for at indstille dit miljø. Fokuser derefter primært på sektionen Vis observerbarhedslogfiler for at kontrollere, at din implementering af observationsmuligheden fungerer som forventet.

Bekræftelse:

  • Gå til: https://admin.cloud.microsoft/#/agents/all
  • Vælg din agent > Aktivitet
  • Du ser sessioner og værktøjskald

Fejlfinding

Denne sektion beskriver typiske problemer i forbindelse med implementering og brug af observationsmulighed.

Problem Beskrivelse
Observabilitetsdata vises ikke Der vises ingen telemetri, fordi eksport ikke er aktiveret, konfigurationen er forkert, eller token-løsningen mislykkes.
Manglende lejer-id eller agent-id - spænd sprunget over Områder droppes før eksport, når identitetsattributter, der kræves til partitionering, mangler.
Fejl ved token-løsning - eksporten springes over eller er uautoriseret Eksportanmodninger mislykkes eller springes over, når løsningsfunktionen ikke returnerer et token eller støder på en undtagelse.
HTTP 401 Uautoriseret Godkendelse lykkes syntaktisk, men dit token er ugyldigt og kan ikke indlæses på grund af omfang, type eller udløb.
HTTP 403 Ikke tilladt Adgang nægtes, fordi lejeren ikke har licens, eller fordi der mangler tilladelser til observationsmulighed.
HTTP 403 Ikke tilladt - agent-ID uoverensstemmelse Anmodningen afvises, når agentidentiteten i URL'en ikke matcher den identitet, som dit token repræsenterer.
HTTP 429 eller 5xx-fejl – midlertidige fejl Midlertidig begrænsning eller fejl på serveren afbryder eksporten og kan kræve nye justeringsforsøg.
Eksport-timeout Telemetri-batches overstiger konfigurerede timeout-vinduer på grund af netværksforsinkelse eller slutpunktets evne til at svare.
Eksport lykkes, men telemetri vises ikke i Defender eller Purview Indtagelsen fuldføres, men downstream-synligheden forsinkes eller blokeres af produktforudsætninger.

Tip

Agent 365 Fejlfindingsguide indeholder overordnede anbefalinger til fejlfinding, bedste praksis og links til fejlfindingsindhold for hver fase af udviklingslivscyklussen for Agent 365.

Observabilitetsdata vises ikke

Symptomer:

  • Agenten kører
  • Ingen telemetri i Administration
  • Agentaktivitet er ikke synlig

Rodårsag:

  • Observationsmuligheden er ikke aktiveret
  • Konfigurationsfejl
  • Token-resolver-problemer

Løsninger: Prøv følgende trin for at løse problemet:

  • Bekræft, at observationsmuligheds-eksportøren er aktiveret

    Du skal eksplicit aktivere Agent 365-eksportøren. Når eksportøren er deaktiveret, bruger SDK'en i stedet en konsoleksportør, og telemetri sendes ikke til tjenesten. Få oplysninger om konfiguration i Konfiguration.

  • Kontrollér konfigurationen af token-resolver

    Eksportøren kræver en gyldig token-resolver, der returnerer et Bearer-token for hver eksportanmodning. Hvis token-resolveren mangler eller returnerer null, springes eksporten lydløst over. Sørg for, at din kode implementerer token-løsningsfunktionen korrekt. Få flere oplysninger i Token-løsningsfunktion.

  • Se efter, om der er fejl i logfilerne

    Aktivér detaljeret logføring, og brug az webapp log tail-kommandoen til at søge i logfiler og se, om der er fejl i observationsmuligheden. Få flere oplysninger om, hvordan du aktiverer logføring pr. platform, i Valider lokalt.

    # Look for observability-related errors
    az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"
    
  • Bekræft telemetrieksport

    Bekræft at telemetri genereres og eksporteres som forventet.

    • Tilføj en konsoleksportør, og kontrollér, om telemetri genereres lokalt. Få yderligere oplysninger om, hvordan du bruger konsoleksportøren og validerer output, i Valider lokalt.

Manglende lejer-id eller agent-id - spænd sprunget over

Symptomer: Systemet dropper uovervåget spænd og eksporterer dem aldrig. Nogle SDK'er logfører antallet af udeladte områder eller viser en besked i stil med "Ingen områder med lejer-/agentidentitet fundet." Andre dropper dem uden at logføre det.

Løsning:

  • Før eksporten opdeler SDK'en områder efter lejer- og agentidentitet. Områder, der enten mangler et lejer- eller agent-id, droppes af systemet og sendes aldrig til tjenesten.
  • Sørg for at BaggageBuilder er indstillet med lejer-id og agent-id, før du opretter spænd. Disse værdier overføres gennem OpenTelemetry-konteksten og knyttes til alle spænd, der oprettes inden for bagageområdet. For det platformspecifikke API, se Bagageattributter.
  • Bekræft, at TurnContext-aktiviteten har en gyldig modtager med agentidentitet, hvis du anvender bagage-middleware eller konteksthjælperen fra hosting-integrationspakken til at udfylde disse id'er.

Fejl ved token-fortolkning - eksporten springes over eller er uautoriseret

Symptomer: Token-resolveren returnerer null eller en fejl. Afhængigt af SDK'et springes eksporten enten helt over, eller også sendes anmodningen uden godkendelsesheader og mislykkes med HTTP 401.

Løsning:

  • Token-løsningsfunktionen er påkrævet ved initialiseringen. Hvis den mangler, udløser eksportøren en fejl ved opstart. Kontroller at der er en token-resolver til rådighed og returnerer et gyldigt Bearer-token.
  • Sørg for, at det korrekte lejer- og agent-id bruges til BaggageBuilder, da disse værdier sendes til token-løsningsfunktionen.
  • For Azure-hostede agenter, kontrollér, at Administreret id har den nødvendige API-tilladelse til observabilitetsomfang.

HTTP 401 Uautoriseret

Symptomer: Eksporten mislykkes med HTTP 401. Eksportøren forsøger ikke denne fejl igen.

Løsning:

  • Kontrollér, at token målgruppe matcher observabilitetsslutpunktets omfang.
  • Kontrollér, at token-resolveren ikke returnerer et stedfortræderbruger-token, et token til en forkert målgruppe eller et udløbet token.

HTTP 403 Ikke tilladt

Symptomer: Eksporten mislykkes med HTTP 403. Eksportøren forsøger ikke denne fejl igen.

Rodårsag: En HTTP 403-fejl kan have forskellige årsager. Gennemgå følgende løsninger i den angivne rækkefølge.

Løsning:

  • Manglende licens — Kontroller, at din lejer har én af de følgende licenser tildelt i Microsoft 365 Administration:

    • Test - Microsoft 365 E7
    • Microsoft 365 E7
    • Microsoft Agent 365 Frontier
  • Manglende Agent365.Observability.OtelWrite-tilladelse – hvis du for nylig har opgraderet dine observationsmulighedspakker, skal du give denne tilladelse. Se den vigtige bemærkning i næste afsnit.

Vigtigt!

Eksisterende agenter, der opgraderer til disse pakkeversioner, kræver et ekstra trin

Dette trin gælder kun, hvis du opgraderer en eksisterende agent. Nye agentinstallationer kræver ikke dette trin. Hvis du opgraderer til følgende pakkeversioner eller nyere, skal du tildele den nye Agent365.Observability.OtelWrite-tilladelse til din identitet (Administreret id eller app-registrering). Uden denne tilladelse mislykkes telemetrieksporten med HTTP 403.

Platform Minimumsversion, der kræver dette trin
.NET 0.3-beta
Node.js 0.2.0-preview.1
Python 0.3.0

Giv tilladelsen ved at vælge en af følgende muligheder.

Mulighed A – Agent 365 CLI (kræver en Global Administrator-konto – kør dette i agentprojektmappen med a365.config.json, eller brug --agent-name)

a365 setup permissions bot

Eller uden en config-fil:

a365 setup permissions bot --agent-name "<agent-name>"

Denne kommando tildeler alle manglende tilladelser på blueprintet, herunder observationsmuligheds-omfang.

Mulighed B – Entra Portal (kræver ingen konfigurationsfiler – kræver Global Administrator-adgang til blueprint-appens registrering)

  1. Gå til Entra Portal>App-registreringer>, vælg din Blueprint-app.
  2. Gå til API-tilladelser>Tilføj en tilladelse>API'er, som min organisation bruger>, søg efter 9b975845-388f-4429-889e-eab1ef63949c.
  3. Vælg Delegerede tilladelser>, tjek Agent365.Observability.OtelWrite>Tilføj tilladelser.
  4. Gentag trin 2–3, og vælg denne gang Applikationstilladelser>, afkryds Agent365.Observability.OtelWrite>Tilføj tilladelser.
  5. Klik på Giv administratorsamtykke og bekræft.

Både Agent365.Observability.OtelWrite (delegeret) og Agent365.Observability.OtelWrite (applikation) skal have statussen Granted.

HTTP 403 Ikke tilladt – agent-ID uoverensstemmelse

Symptomer: Eksporten fejler med HTTP 403 og en serverbesked, der ligner 403 Forbidden med agent-ID-mismatch fejl ved kald til Agent 365-sporslutpunkter.

Rodårsag: Denne fejl opstår, når du bruger blueprint-klient-id i stedet for agent-instansens klient-id ved konfiguration af agentdetaljerne. Agent-id'et i eksport-URL'en stemmer ikke overens med den identitet, der er autoriseret af tokenet, så sporslutpunktet afviser anmodningen.

Løsning:

  • Kontroller om lejer-ID'et er tilføjet på listen over tilladte lejere i Agent 365.
  • Konfigurer agentdetaljerne med agentinstansens klient-ID (ikke Blueprint-klient-ID'et).
  • Verificér den genererede eksport-URL - den bliver logget, hvis du aktiverer din logger. Kontrollér, at agent-ID'et i URL'en stemmer overens med agentinstansens klient-ID.
  • Se, hvordan du aktiverer diagnosticeringslogføring pr. SDK, i Valider lokalt.

HTTP 429 eller 5xx-fejl – midlertidige fejl

Symptomer: Eksport fejler med en forbigående HTTP-statuskode som 429 eller 5xx.

Løsning:

  • Disse fejl er som regel forbigående og løser sig selv. Python- og JavaScript-SDK'erne prøver automatisk igen ved HTTP-statuskoderne 408, 429 og 5xx op til tre gange med eksponentiel backoff. .NET SDK'en prøver ikke automatisk igen.
  • Hvis fejlene fortsætter, kontrollér dashboardet med Service Health.
  • Overvej at reducere eksportfrekvensen ved at øge det planlagte tidsinterval mellem batchene eller øge batchstørrelsen for eksport. Se konfigurationsmuligheder pr. platform i Agent365ExporterOptions-tabellen i Konfiguration.

Eksport-timeout

Symptomer: Eksportforsøg går i timeout.

Løsning:

  • Kontroller netværksforbindelsen til observabilitetsslutpunktet.
  • Timeout-standarder varierer fra platform til platform. Standard-timeout i HTTP-anmodninger er 30 sekunder. Nogle SDK'er har også en separat samlet eksportør-timeout, der dækker hele eksportcyklussen inklusive genforsøg. Få oplysninger om de præcise egenskaber og standardindstillinger pr. platform i Agent365ExporterOptions-tabellen i Konfiguration.
  • Hvis der ofte opstår timeout, skal du øge den relevante timeoutværdi i dine eksportørindstillinger.

Eksport lykkes, men telemetri vises ikke i Defender eller Purview

Symptomer: Logfilerne viser, at eksporten lykkedes, men telemetrien vises ikke i Microsoft Defender eller Microsoft Purview.

Løsning:

  • Sørg for, at du opfylder forudsætningerne for at se eksporterede logfiler. Kontrol skal være slået til, hvis du bruger Purview. Hvis du bruger Defender, skal du konfigurere avanceret jagt. Få flere oplysninger i Visning af eksporterede logfiler.
  • Der kan gå flere minutter, før telemetri bliver synlig efter en vellykket eksport. Vent på, at dataene dukker op, før du undersøger nærmere.

Læs mere om test af observationsmuligheden her: