Näkyvyyden SDK

Tärkeää

Ota havaittavuus käyttöön Agent 365:ssä Microsoft OpenTelemetry Distron avulla. Tämä jakelu tarjoaa yhden havaittavuuden SDK:n Microsoftin laajuisesti. Se tukee esimerkiksi Agent 365:tä, Microsoft Foundryä ja Azure Monitoria. Tässä artikkelissa kuvataan nykyinen lähestymistapa, joka toimii edelleen ilman yhteensopivuusongelmia. Seuraavissa oppaissa on lisätietoja siirroista kielen mukaan:

Muistiinpano

Havaittavuus on yksi lisäävistä ominaisuustasoista Agent 365:n kehitystyön aloittaminen -kohdassa. Se koskee kaikkia agenttityyppejä.

Jos haluat osallistua Agent 365 -ekosysteemiin, lisää Agent 365:n havaittavuusominaisuudet agenttiin. Agent 365:n havaittavuus perustuu OpenTelemetryyn (OTel) ja tarjoaa yhtenäisen kehyksen telemetrian keräämiseksi johdonmukaisesti ja turvallisesti agentin kaikissa ympäristöissä. Kun tämä pakollinen komponentti toteutetaan, IT-järjestelmänvalvojat voivat seurata agentin aktiviteettia Microsoft-hallintakeskuksessa ja suojaustiimit voivat käyttää Defender- ja Purview-ratkaisuja vaatimustenmukaisuutta ja uhkien havaitsemista varten.

Avainedut

  • Kokonaisvaltainen näkyvyys: Tallenna kattava telemetria jokaiselle agentin kutsulle, mukaan lukien istunnot, työkalukutsut ja poikkeukset, jolloin eri ympäristöissä on tarjolla täysi jäljitettävyys.
  • Suojauksen ja vaatimustenmukaisuuden varmistaminen: Toimita yhtenäiset auditointilokit Defenderiin ja Purviewiin, jolloin kehittyneet suojausskenaariot ja vaatimustenmukaisuusraportit voidaan ottaa käyttöön agentille.
  • Joustavuus eri ympäristöissä: Hyödynnä OTel-standardeja ja tue erilaisia suorituspalveluita ja ympäristöjä, kuten Copilot Studio, Foundry ja tulevaisuuden agenttikehykset.
  • Toiminnan tehokkuus järjestelmänvalvojia varten: Tarjoa keskitettyä havaittavuutta Microsoft 365 -hallintakeskuksessa. Se nopeuttaa vianmääritystä ja tehostaa agentteja hallitsevien IT-tiimien hallintoa roolipohjaisten käyttöoikeuksien avulla.

Tuetut agentit

Seuraavat agenttityypit tukevat Agent 365 -havaittavuutta:

Asentaminen

Käytä näitä komentoja havaittavuusmoduulien asentamisessa Agent 365:n tukemille kielille.

Asenna ydinhavaittavuus ja suorituksenaikaiset paketit. Kaikki agentit, jotka käyttävät Agent 365:n havaittavuutta, tarvitsevat nämä paketit.

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

Jos agentti käyttää Microsoftin agenttien isännöinti -pakettia, asenna isännöinnin integrointipaketti. Se sisältää väliohjelmiston, joka täyttää automaattisesti baggage-ominaisuudet ja laajuudet kohteesta TurnContext ja lisää tunnuksen välimuistiin tallennuksen havainnoitavuuden vientitoiminnolle.

pip install microsoft-agents-a365-observability-hosting

Jos agentti käyttää jotakin tuetuista AI-kehyksistä, asenna vastaava automaattinen instrumentointilaajennus, jotta telemetriatiedot kerätään ilman manuaalista instrumentointikoodia. Lisätietoja määritystiedoista on kohdassa Automaattinen instrumentointi.

# 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

Määritys

Käytä seuraavia asetuksia, jos haluat ottaa käyttöön ja mukauttaa Agent 365:n havaittavuuden agentille.

Määritä ENABLE_A365_OBSERVABILITY_EXPORTER-ympäristömuuttuja kohteelle true havaittavuutta varten. Tämä asetus vie lokit palveluun ja vaatii, että token_resolver annetaan. Muussa tapauksessa käytetään konsolin vientitoimintoa.

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

Tunnuksen ratkaisija ei sisälly konsolin lokiinkirjaukseen.

Voit mukauttaa vientitoiminnon toimintaa välittämällä Agent365ExporterOptions-instanssin parametrina kohteelle exporter_options. Kun exporter_options on annettu, se ohittaa token_resolver- ja cluster_category-parametrit.

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

Alla olevassa taulukossa kuvataan kohteen configure() valinnaiset parametrit.

Parametri Description Oletus
logger_name Python-lokitoiminnon nimi, jota käytetään virheenkorjauksessa ja konsolin lokin tuloksessa. microsoft_agents_a365.observability.core
exporter_options Agent365ExporterOptions-instanssi, joka määrittää tunnuksen ratkaisijan ja klusterin luokan yhdessä. None
suppress_invoke_agent_input Kun True, syöteviestit estetään InvokeAgent-aikaväleillä. False

Alla olevassa taulukossa kuvataan kohteen Agent365ExporterOptions valinnaiset ominaisuudet.

Ominaisuus Description Oletus
use_s2s_endpoint Kun True on käytössä, käytetään service-to-service-päätepisteen polkua. False
max_queue_size Eräkäsittelijän jonon maksimikoko. 2048
scheduled_delay_ms Viive millisekunneissa vientierien välillä. 5000
exporter_timeout_ms Vientitoiminnon aikakatkaisuaika (ms). 30000
max_export_batch_size Suurin eräkoko vientitoiminnoille. 512

Baggage-tietojen määritteet

Käytä BaggageBuilder asettaaksesi kontekstuaalista tietoa, joka välittyy kaikkiin pyynnön spanien läpi. SDK toteuttaa SpanProcessor -toiminnon, joka kopioi kaikki ei-tyhjät baggage-merkinnät uusiin spaneihin ilman olemassa olevien attribuuttien ylikirjoittamista.

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

Täyttääksesi BaggageBuilder automaattisesti TurnContext perusteella, käytä populate-aputoimintoa microsoft-agents-a365-observability-hosting-paketissa. Tämä apufunktio poimii automaattisesti kutsujan, agentin, vuokraajan, kanavan ja keskustelun tiedot aktiviteetista.

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

Baggage-väliohjelmisto

Jos agenttisi käyttää hosting-integraatiopakettia, rekisteröi baggage-väliohjelmisto, jotta baggage täytetään automaattisesti jokaiselle saapuvalle pyynnölle. Tämä vaihe poistaa tarpeen kutsua BaggageBuilder manuaalisesti jokaisessa aktiviteetin käsittelijässä.

Rekisteröi BaggageMiddleware sovittimen väliohjelmistosarjaan. Se poimii automaattisesti soittajan, agentin, vuokraajan, kanavan ja keskustelun tiedot jokaisesta saapuvasta TurnContext-pyynnöstä ja käärii pyynnön baggage-kontekstiin.

from microsoft_agents_a365.observability.hosting import BaggageMiddleware

adapter.use(BaggageMiddleware())

Vaihtoehtoisesti voidaan käyttää kohdetta ObservabilityHostingManager baggage-väliohjelmiston ja muiden hosting-ominaisuuksien määritykseen:

from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions

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

Middleware ohittaa baggage-määrityksen asynkronisille vastauksille (ContinueConversation tapahtumille) välttääkseen baggage-tietojen ylikirjoittamisen, jotka alkuperäinen pyyntö on jo asettanut.

Tunnuksen ratkaisija

Kun käytät Agent 365 -vientitoimintoa, määritä tunnuksen ratkaisijafunktio, joka palauttaa todennuksen tunnuksen. Kun käytät Agent 365 Observability SDK:ta agentti Hosting -kehysrakenteen kanssa, voit luoda tunnuksia käyttämällä TurnContext agenttitoiminnoista.

Seuraavassa esimerkissä näytetään, miten tunnus luodaan microsoft_agents.hosting.core SDK:n avulla. Tässä luotua todennustunnusta käytetään aikavälien viemisessä A365:n vastaanottopalveluun. Agentit voivat luoda tunnisteen itse, esimerkiksi käyttämällä Microsoft Authentication Library (MSAL) -ratkaisua. On kuitenkin varmistettava, että tunnuksessa on havaittavuuden laajuus.

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

Agentille, joka on rakennettu A365 CLI:llä ja käyttää tekoälytiimikaveria sekä Microsoft Agent 365:n havaittavuuden isännöintikirjasto -pakettia, käytetään kohdetta AgenticTokenCache tunnuksen välimuistiin tallentamisen käsittelyssä automaattisesti. Rekisteröi tunnus kerran agenttia ja vuokraajaa kohden aktiviteetin käsittelijän aikana ja välitä cache.get_observability_token kohteena token_resolver havaittavuuden määritykseen.

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

Automaattinen instrumentointi

Automaattinen instrumentointi kuuntelee agenttikehysten (SDK) olemassa olevia telemetriasignaaleja jäljityksiä varten ja välittää ne Agent 365:n havaittavuuspalveluun. Tämän ominaisuuden ansiosta kehittäjien ei tarvitse kirjoittaa valvontakoodia käsin. Se myös yksinkertaistaa määrityksiä ja varmistaa johdonmukaisen suorituskyvyn seurannan.

Tärkeää

Automaattinen instrumentointi täyttää vain OTel:n vakiomääritteet. Sinun täytyy lisätä Microsoft-kohtaiset attribuutit BaggageBuilder kautta. Jos haluat nähdä, mitkä määritteet puuttuvat, tarkista konsolin aikavälin tulos tallennettujen lokien perusteella eri joukoissa.

Useat SDK:t ja ympäristöt tukevat automaattista instrumentointia seuraavasti:

Ympäristö Tuetut SDK:t / kehykset
.NET Semantic Kernel, OpenAI, Agent Framework
Python Semantic Kernel, OpenAI, Agent Framework, LangChain
Node.js OpenAI, LangChain

Muistiinpano

Automaattisen instrumentoinnin tuki vaihtelee ympäristön ja SDK-toteutuksen mukaan.

Semantic Kernel

Automaattinen instrumentointi vaatii baggage-luontitoiminnon käyttöä. Määritä agentin tunnus ja vuokraajan tunnus käyttämällä kohdetta BaggageBuilder.

Asenna paketti.

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

Määritä havaittavuus.

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

Automaattinen instrumentointi vaatii baggage-luontitoiminnon käyttöä. Määritä agentin tunnus ja vuokraajan tunnus käyttämällä kohdetta BaggageBuilder.

Asenna paketti.

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

Määritä havaittavuus.

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

Automaattinen instrumentointi vaatii baggage-luontitoiminnon käyttöä. Määritä agentin tunnus ja vuokraajan tunnus käyttämällä kohdetta BaggageBuilder.

Asenna paketti.

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

Määritä havaittavuus.

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

Automaattinen instrumentointi edellyttää baggage-luontitoiminnon käyttämistä. Määritä agentin tunnus ja vuokraajan tunnus käyttämällä kohdetta BaggageBuilder.

Asenna paketti.

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

Määritä havaittavuus.

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

Manuaalinen instrumentointi

Käytä Agent 365:n havaittavuuden SDK:ta saadaksesi lisätietoja agentin sisäisestä toiminnasta. SDK tarjoaa laajuuksia, jotka voi käynnistää: InvokeAgentScope, ExecuteToolScope, InferenceScope ja OutputScope.

Agentin kutsuminen

Käytä tätä laajuutta agenttiprosessin alussa. Käyttämällä käynnistä agentti -laajuutta voit tallentaa ominaisuuksia, kuten nykyisen käynnistettävän agentin ja agentin käyttäjätiedot.

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

Työkalun suoritus

Seuraavat esimerkit osoittavat, miten havaittavuuden seuranta lisätään agentin työkalun suoritukseen. Tämä seuranta kerää telemetriatietoja valvonta- ja auditointitarkoituksiin.

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)

Päättely

Seuraavat esimerkit osoittavat, miten tekoälymallin liittymäkutsut instrumentoidaan havaittavuuden jäljityksellä tunnusten käytön, mallitietojen ja vastauksen metatietojen tallentamiseksi.

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)

Tulos

Käytä tätä laajuutta asynkronisissa skenaarioissa, joissa InvokeAgentScope, ExecuteToolScope tai InferenceScope ei pysty tallentamaan tulostietoja synkronisesti. Käynnistä OutputScope aliaikavälinä, jotta voit tallentaa lopulliset tulosviestit pääelementin laajuuden päätyttyä.

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

Validoi paikallisesti

Varmista, että integrointi havaittavuuden SDK:n kanssa onnistui, tarkastelemalla agentin tuottamia konsolilokeja ja havaittavuus-SDK:n lokitietoja.

Määritä ympäristömuuttujan ENABLE_A365_OBSERVABILITY_EXPORTER arvoksi false. Tämä asetus vie aikavälit (jäljet) konsoliin.

Jos haluat tutkia viennin virheitä, ota käyttöön yksityiskohtainen lokiinkirjaus asettamalla kohdan ENABLE_A365_OBSERVABILITY_EXPORTER arvoksi true ja määrittämällä virheenkorjauksen lokiinkirjaus sovelluksen käynnistyksessä seuraavasti:

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)

Keskeiset lokiviestit:

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.

Vietyjen lokien tarkasteleminen

Jotta voit tarkastella agentin telemetriaa Microsoft Purviewissa tai Microsoft Defenderissä, varmista että seuraavat vaatimukset täyttyvät:

Myymälän julkaisun vahvistaminen

Tärkeää

Jotta myymälän vahvistaminen onnistuu, agentin on otettava käyttöön laajuudet InvokeAgentScope, InferenceScope ja ExecuteToolScope. Nämä kolme laajuutta ovat välttämättömiä julkaisussa.

Käytä ennen julkaisua konsolin lokeja vahvistaaksesi havaittavuuden integroinnin agentin kanssa toteuttamalla vaaditut laajuudet invoke agent, execute tool, inference ja output. Vertaa agentin lokeja seuraaviin määriteluetteloihin varmistaaksesi, että kaikki vaaditut määritteet löytyvät. Tallenna määritteet jokaisessa laajuudessa tai käyttämällä baggage-luontitoimintoa. Lisää valinnaiset määritteet oman harkintasi mukaan.

Lisätietoja myymälän julkaisuvaatimuksista on kohdassa Myymälän vahvistuksen ohjeet.

InvokeAgentScope-määritteet

Seuraavassa luettelossa on yhteenveto pakollisista ja valinnaisista telemetriamääritteistä, jotka tallennetaan, kun InvokeAgentScope käynnistetään.

"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-määritteet

Seuraavassa luettelossa on yhteenveto pakollisista ja valinnaisista telemetriamääritteistä, jotka tallennetaan, kun ExecuteToolScope käynnistetään.

"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-määritteet

Seuraavassa luettelossa on yhteenveto pakollisista ja valinnaisista telemetriamääritteistä, jotka tallennetaan, kun InferenceScope käynnistetään.

"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-määritteet

Seuraavassa luettelossa on yhteenveto pakollisista ja valinnaisista telemetriamääritteistä, jotka tallennetaan, kun OutputScope käynnistetään. Käytä tätä laajuutta asynkronisissa skenaarioissa, kun pääelementin laajuus ei voi tallentaa tulostietoja synkronisesti.

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

Havainnointeja sisältävien agenttien testaus

Kun olet ottanut käyttöön havaittavuuden agentissa, testaa sitä varmistaaksesi, että se tallentaa telemetrian oikein. Määritä ympäristö testausoppaan tietojen avulla. Keskity sen jälkeen ensisijaisesti Havaittavuuslokien tarkastelu -osaan varmistaaksesi, että havaittavuuden toteutus toimii odotetusti.

Vahvistus:

  • Siirry osoitteeseen https://admin.cloud.microsoft/#/agents/all
  • Valitse agentti > Aktiviteetti
  • Näet istuntoja ja työkalukutsuja

Vianmääritys

Tässä osassa kuvataan yleisiä ongelmia havaittavuuden toteuttamisessa ja käytössä.

Ongelma Description
Havainnointidata ei näy Telemetriaa ei näy, koska vienti ei ole käytössä, määritys on virheellinen tai tunnuksen resoluutio epäonnistuu.
Puuttuva vuokraaja-ID tai agentti-ID – spanit ohitetaan Aikavälit pudotetaan ennen vientiä, kun osiointiin vaaditut käyttäjätietojen määritteet puuttuvat.
Token-resoluutiovirhe – vienti jätetty väliin tai ei valtuutusta Vientipyynnöt epäonnistuvat tai ne ohitetaan, kun tunnuksen ratkaisija ei palauta tunnusta tai se löytää poikkeukseen.
HTTP 401 Ei sallittu Tunnistautuminen onnistuu syntaktisesti, mutta tunnus on virheellinen käyttöä varten laajuuden, tyypin tai vanhentumisen vuoksi.
HTTP 403 Käyttö estetty Pääsy evätään vuokraajan käyttöoikeuden tai havaittavuuden oikeuksien puuttumisen vuoksi.
HTTP 403 Estetty – agentti-ID ei vastaa Pyyntö hylätään, mikäli URL-osoitteen agentin käyttäjätiedot eivät vastaa tunnuksen esittämiä käyttäjätietoja.
HTTP 429- tai 5xx-virheet – tilapäiset virheet Tilapäiset rajoitukset tai virheet palvelussa keskeyttävät viennin ja saattavat edellyttää uudelleenyrittämisen asetusten säätämistä.
Viennin aikakatkaisu Telemetriaerät ylittävät määritetyt aikakatkaisuikkunat verkon viiveen tai päätepisteen reagoinnin vuoksi.
Vienti onnistuu, mutta telemetriaa ei näy Defenderissä tai Purviewissa Käsittely on valmis, mutta näkyvyys tulevissa toiminnoissa viivästyy tai estyy tuotteen edellytysten vuoksi.

Vinkki

Agent 365:n vianmääritysopas sisältää yleisluontoisia vianmääritykseen liittyviä suosituksia, parhaita käytäntöjä sekä linkkejä vianmääritykseen liittyvään sisältöön Agent 365:n kehityksen elinkaaren kaikissa vaiheissa.

Havainnointidata ei näy

Oireet:

  • Agentti on käynnissä
  • Telemetria puuttuu hallintokeskuksesta
  • Agentin toimintaa ei näy

Juurisyy:

  • Havaittavuutta ei ole otettu käyttöön
  • Määritysvirheet
  • Token resolverin ongelmat

Ratkaisut: Kokeile seuraavia vaiheita ongelman ratkaisemiseksi:

  • Varmista, että havaittavuuden vientitoiminto on käytössä

    Agent 365 exportteri täytyy ottaa käyttöön erikseen. Kun se on poistettu käytöstä, SDK siirtyy käyttämään konsolin vientitoimintoa, eikä telemetriaa lähetetä palveluun. Lisätietoja määrityksen tiedoista on kohdassa Määritys.

  • Tarkista token-ratkaisijan konfiguraatio

    Exportteri vaatii kelvollisen token-ratkaisijan, joka palauttaa Bearer-tokenin jokaista vientipyyntöä kohden. Jos token-ratkaisijaa ei ole tai se palauttaa null, vienti jätetään huomiotta ilman ilmoitusta. Varmista, että koodi implementoi tunnuksen ratkaisijan oikein. Lisätietoja on kohdassa Tunnuksen ratkaisija.

  • Tarkista lokin virheet

    Ota käyttöön yksityiskohtainen lokiinkirjaus ja käytä az webapp log tail komentoa etsiäksesi lokeista havaittavuuteen liittyviä virheitä. Lisätietoja lokiinkirjauksen käyttöönotosta ympäristöä kohti on kohdassa Paikallinen vahvistaminen.

    # Look for observability-related errors
    az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"
    
  • Varmista telemetrian vienti

    Varmista, että telemetria on luotu ja viety odotetulla tavalla.

    • Lisää konsolin vientitoiminto ja tarkista, että telemetriaa luodaan paikallisesti. Lisätietoja konsolin vientitoiminnon käytöstä ja tuloksen vahvistuksesta on kohdassa Paikallinen vahvistaminen.

Puuttuva vuokraaja-ID tai agentti-ID — spanit sivuutetaan

Oireet: Järjestelmä pudottaa huomaamattomasti spanit eikä koskaan vie niitä. Jotkin SDK:t kirjaavat lokiin ohitettujen aikavälien määrän tai viestin, kuten Aikavälejä, joilla on vuokraajan tai agentin käyttäjätiedot, ei löytynyt. Muut pudottavat ne ilman lokiinkirjausta.

Ratkaisu:

  • Ennen vientiä SDK jakaa spanit vuokraajan ja agentin käyttäjätietojen mukaan. Järjestelmä pudottaa aikavälit, joilta puuttuu joko vuokraajan tai agentin tunnus, eikä koskaan lähetä niitä palveluun.
  • Varmista, että BaggageBuilder on asetettu vuokralaisen ja agentin tunnuksella ennen spanien luomista. Nämä arvot siirtyvät OpenTelemetry-kontekstin mukana ja liitetään kaikkiin baggage-kontekstin sisällä luotuihin span-objekteihin. Katso alustakohtaista API:a kohdasta Baggage attributes.
  • Varmista, että kohteen TurnContext aktiviteetilla on kelvollinen vastaanottaja agentin käyttäjätiedoilla, jos käytät baggage-väliohjelmistoa tai käännät kontekstin avustajan isännöinnin integrointipaketista näiden tunnusten täyttämiseksi.

Token-resoluutiovirhe — vienti ohitettu tai valtuuttamaton

Oireet: Token resolver palauttaa null tai heittää virheen. SDK:n mukaan vienti joko ohitetaan kokonaan tai pyyntö lähetetään ilman valtuutusotsikkoa, ja se epäonnistuu HTTP 401 -virheen kanssa.

Ratkaisu:

  • Tunnuksen ratkaisija tarvitaan alustuksen yhteydessä. Jos se puuttuu, exportteri antaa virheilmoituksen käynnistyksessä. Varmista, että token-ratkaisija on käytössä ja palauttaa kelvollisen Bearer-tokenin.
  • Varmista, että kohteessa BaggageBuilder käytetään oikeaa vuokraajan ja agentin tunnusta, koska nämä arvot välitetään tunnuksen ratkaisijalle.
  • Azure-isännöidyille agenteille varmista, että Managed Identityllä on tarvittavat API-oikeudet havaittavuuden vastuualuetta varten.

HTTP 401 Ei sallittu

Oireet: Vienti epäonnistuu HTTP 401 -virheen vuoksi. Vientiohjelma ei tee uudelleenyritystä tämän virheen sattuessa.

Ratkaisu:

  • Varmista, että tokenin audience vastaa observability endpointin scopea.
  • Tarkista, ettei token resolver palauta edustajakäyttäjä-tokenia, väärälle audience-arvolle tarkoitettua tokenia tai vanhentunutta tokenia.

HTTP 403 Käyttö estetty

Oireet: Vienti epäonnistuu HTTP 403 -virheen vuoksi. Vientiohjelma ei tee uudelleenyritystä tämän virheen sattuessa.

Juurisyy: HTTP 403 -virhe voi johtua useista eri syistä. Tarkista seuraavat ratkaisut järjestyksessä.

Ratkaisu:

  • Puuttuva lisenssi — Varmista, että vuokraajallasi on jokin seuraavista lisensseistä määritettynä Microsoft 365 -hallintakeskuksessa:

    • Test - Microsoft 365 E7
    • Microsoft 365 E7
    • Microsoft Agent 365 Frontier
  • Puuttuva kohteen Agent365.Observability.OtelWrite oikeus – Jos olet äskettäin päivittänyt havaittavuuspaketit, tämä oikeus on myönnettävä. Katso tärkeä huomautus seuraavasta osasta.

Tärkeää

Nykyisten agenttien päivitys näihin pakettiversioihin vaatii ylimääräisen vaiheen

Tämä vaihe vaaditaan vain, kun päivität olemassa olevaa agenttia. Uusien agenttien asennukset eivät vaadi tätä vaihetta. Jos päivität seuraaviin tai uudempiin pakettiversioihin, uusi kohteen Agent365.Observability.OtelWrite oikeus on myönnettävä käyttäjätiedoille (hallitut käyttäjätiedot tai sovelluksen rekisteröinti). Ilman tätä käyttöoikeutta telemetrian vienti epäonnistuu HTTP 403 -virheellä.

Ympäristö Minimiversio, joka vaatii tämän vaiheen
.NET 0.3-beta
Node.js 0.2.0-preview.1
Python 0.3.0

Myönnä käyttöoikeudet käyttämällä jotakin alla olevista vaihtoehdoista.

Vaihtoehto A – Agent 365 CLI (vaatii yleisen järjestelmänvalvojan roolin. Suoritetaan agentin projektihakemistosta, joka sisältää tiedoston a365.config.json, tai käytetään kohdetta --agent-name)

a365 setup permissions bot

Tai ilman konfiguraatiotiedostoa:

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

Tämä komento myöntää suunnitelman kaikki puuttuvat oikeudet, mukaan lukien havaittavuuden laajuudet.

Vaihtoehto B – Entra-portaali (ei määritystiedostoja, edellyttää yleisen järjestelmänvalvojan käyttöoikeuden suunnitelman sovelluksen rekisteröimistä varten)

  1. Siirry Entra-portaali>Sovellusten rekisteröinnit> -osioon ja valitse Blueprint-sovelluksesi.
  2. Siirry API-oikeudet>Lisää käyttöoikeus>Organisaation käytössä olevat API:t> etsi 9b975845-388f-4429-889e-eab1ef63949c.
  3. Valitse Delegoidut oikeudet>, tarkista Agent365.Observability.OtelWrite>Lisää käyttöoikeudet.
  4. Toista vaiheet 2–3. Valitse tällä kertaa Sovelluksen käyttöoikeudet> valitse Agent365.Observability.OtelWrite>Lisää käyttöoikeudet.
  5. Klikkaa Myönnä ylläpitäjän suostumus ja vahvista.

Sekä kohteen Agent365.Observability.OtelWrite (delegoitu) että kohteen Agent365.Observability.OtelWrite (sovellus) tulee olla tilassa Granted.

HTTP 403 Kielletty — agentin ID ei täsmää

Oireet: Vienti epäonnistuu HTTP 403 -virheellä ja palvelinviestillä, joka muistuttaa 403 Forbidden ja sisältää agent-ID-mismatch epäonnistumisia Agent 365:n jälkien päätepisteiden kutsumisessa.

Syy: Tämä virhe tapahtuu, kun käytät blueprintin asiakas-ID:täagentin instanssin asiakas-ID:n sijasta, kun asetat agentin tiedot. Agentin ID eksportin URL:ssa ei täsmää tokenin hyväksymän identiteetin kanssa, joten traces-päätepiste hylkää pyynnön.

Ratkaisu:

  • Varmista, että tenant ID on lisätty Agent 365:n sallittujen vuokraajien listalle.
  • Aseta agentin tiedot agentin instanssin asiakas-ID :llä (ei blueprint-asiakas-ID:llä).
  • Tarkista generoitu vienti-URL – se kirjataan, jos otat loggerin käyttöön. Vahvista, että agentti-ID URL-osoitteessa vastaa agentin instanssin client ID:tä.
  • Ota diagnostiikkalokit käyttöön SDK-kohtaisesti Paikallinen vahvistaminen -kohdan tietojen avulla.

HTTP 429- tai 5xx-virheet – tilapäiset virheet

Oireet: Vienti epäonnistuu ohimenevällä HTTP-tilakoodilla, kuten 429 tai 5xx.

Ratkaisu:

  • Nämä virheet ovat yleensä ohimeneviä ja ratkeavat itsestään. Python ja JavaScript SDK:t suorittavat automaattisen uudelleenyrityksen HTTP 408-, 429- ja 5xx-tilakoodeilla enintään kolme kertaa eksponentiaalisella viiveellä. .NET SDK ei yritä uudelleen automaattisesti.
  • Jos virheet jatkuvat, tarkista palvelun tilannepaneeli.
  • Harkitse vientien harventamista lisäämällä aikataulutettua viivettä erien välillä tai kasvattamalla vientierän enimmäiskokoa. Katso ympäristökohtaiset määritysvaihtoehdot Agent365ExporterOptions-taulukosta Määritys-kohdassa.

Viennin aikakatkaisu

Oireet: Vientiyritykset menevät aikakatkaisuun.

Ratkaisu:

  • Tarkista verkkoyhteys observability-endpointiin.
  • Aikakatkaisun oletusarvot vaihtelevat ympäristön mukaan. HTTP-pyynnön oletusaikakatkaisu on 30 sekuntia. Joillakin SDK:illa on myös erillinen vientitoiminnon yleinen aikakatkaisu, joka kattaa koko vientisyklin, mukaan lukien uudelleenyritykset. Tarkat ominaisuudet ja oletusasetukset ympäristökohtaisesti Agent365ExporterOptions-taulukosta Määritys-kohdassa.
  • Jos aikakatkaisuja esiintyy usein, kasvata sopivaa aikakatkaisuarvoa vientitoiminnon asetuksissa.

Vienti onnistuu, mutta telemetriaa ei näy Defenderissä tai Purviewissa

Oireet: Lokit osoittavat onnistuneen viennin, mutta telemetria ei ole näkyvissä Microsoft Defenderissä tai Microsoft Purview'ssa.

Ratkaisu:

  • Varmista, että vietyjen lokien katselun edellytykset täytetään. Purview'ssa auditointi on otettava käyttöön. Defenderissä on määritettävä edistynyt uhkien etsintä. Lisätietoja on kohdassa Vietyjen lokien tarkasteleminen.
  • Telemetrian päivittyminen voi kestää useita minuutteja onnistuneen viennin jälkeen. Odota, että tiedot tulevat näkyviin, ennen kuin jatkat tutkimista.

Lisätietoja havaittavuuden testaamisesta on kohdassa: