Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
È necessario far parte del programma di anteprima Frontier per ottenere l'accesso early a Microsoft Agent 365. Frontier ti connette direttamente con le ultime innovazioni di intelligenza artificiale di Microsoft. Le anteprime Frontier sono soggette alle condizioni di anteprima esistenti dei tuoi contratti del cliente. Poiché queste funzionalità sono ancora in fase di sviluppo, la disponibilità e le funzionalità possono cambiare nel tempo.
Per partecipare all'ecosistema Agent 365, aggiungi capacità di osservabilità Agent 365 al tuo agente. Agent 365 Observability si basa su OpenTelemetry (OTel) e fornisce un framework unificato per catturare telemetria in modo coerente e sicuro su tutte le piattaforme agent. Implementando questo componente necessario, si abilitano gli amministratori IT a monitorare l'attività dell'agente nell'interfaccia di amministrazione di Microsoft e consentire ai team di sicurezza di usare Defender e Purview per la conformità e il rilevamento delle minacce.
Vantaggi chiave
- Visibilità end-to-end: acquisisci dati di telemetria completi per ogni chiamata dell'agente, incluse sessioni, chiamate agli strumenti ed eccezioni, offrendo la tracciabilità completa tra le piattaforme.
- Abilitazioni di sicurezza e conformità: inserire log di controllo unificati in Defender e Purview, abilitando scenari di sicurezza avanzati e report di conformità per l'agente.
- Flessibilità multipiattaforma: Basarsi sugli standard OTel e supportare runtime e piattaforme diverse, come Copilot Studio, Foundry e futuri framework di agenti.
- Efficienza operativa per gli amministratori: offrire un'osservabilità centralizzata in interfaccia di amministrazione di Microsoft 365, ridurre i tempi di risoluzione dei problemi e migliorare la governance con i controlli degli accessi in base al ruolo per i team IT che gestiscono l'agente.
Installazione
Usa questi comandi per installare i moduli di osservabilità per le lingue supportate da Agent 365.
Installa i pacchetti principali di osservabilità e runtime. Tutti gli agenti che usano Agent 365 Observability necessitano di questi pacchetti.
pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime
Se l'agente utilizza il pacchetto Microsoft Agents Hosting, è necessario installare il pacchetto di integrazione per l'hosting. Fornisce middleware che popola automaticamente bagagli e ambiti da TurnContexte include la memorizzazione nella cache dei token per l'utilità di esportazione dell'osservabilità.
pip install microsoft-agents-a365-observability-hosting
Se l'agente usa uno dei framework di intelligenza artificiale supportati, installare l'estensione di strumentazione automatica corrispondente per acquisire automaticamente i dati di telemetria senza codice di strumentazione manuale. Per informazioni dettagliate sulla configurazione, vedere Strumentazione automatica.
# 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
Configurazione
Usa le seguenti impostazioni per abilitare e personalizzare l'Osservabilità dell'Agente 365 per il tuo agente.
Imposta la ENABLE_A365_OBSERVABILITY_EXPORTER variabile ambiente a true per l'osservabilità. Questa impostazione esporta i log nel servizio e richiede che venga fornito un oggetto token_resolver . Altrimenti, viene utilizzato l'esportatore della console.
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,
)
Il risolver dei token è escluso dal login alla console.
È possibile personalizzare il comportamento del componente di esportazione passando un'istanza Agent365ExporterOptions a exporter_options. Quando exporter_options viene specificato, ha la precedenza sui token_resolver parametri e 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,
)
Nella tabella seguente vengono descritti i parametri facoltativi per configure().
| Parametro | Descrizione | Default |
|---|---|---|
logger_name |
Nome del logger Python usato per il debug e l'output del log della console. | microsoft_agents_a365.observability.core |
exporter_options |
Agent365ExporterOptions Istanza che configura insieme il sistema di risoluzione dei token e la categoria di cluster. |
None |
suppress_invoke_agent_input |
Quando True, elimina i messaggi di input su InvokeAgent intervalli. |
False |
Nella tabella seguente vengono descritte le proprietà facoltative per Agent365ExporterOptions.
| Proprietà | Descrizione | Default |
|---|---|---|
use_s2s_endpoint |
Quando True, utilizza il percorso dell'endpoint tra servizi. |
False |
max_queue_size |
Dimensione massima della coda per il processore batch. | 2048 |
scheduled_delay_ms |
Ritardo in millisecondi tra batch di esportazione. | 5000 |
exporter_timeout_ms |
Timeout in millisecondi per l'operazione di esportazione. | 30000 |
max_export_batch_size |
Dimensioni massime del batch per le operazioni di esportazione. | 512 |
Attributi di bagaglio
Utilizza BaggageBuilder per impostare informazioni contestuali che passano attraverso tutti gli intervalli di una richiesta.
L'SDK implementa una SpanProcessor copia di tutte le voci di baggage non interrotte in intervalli appena avviati senza sovrascrivere gli attributi esistenti.
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
Per popolare automaticamente il BaggageBuilder dal TurnContext, usare l'helper populate nel pacchetto microsoft-agents-a365-observability-hosting. Questo helper estrae automaticamente il chiamante, l'agente, il tenant, il canale e i dettagli della conversazione dall'attività.
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
Middleware per la gestione dei bagagli
Se l'agente usa il pacchetto di integrazione dell'hosting, registrare il middleware del bagaglio per popolare automaticamente i bagagli per ogni richiesta in ingresso. Questo passaggio rimuove la necessità di chiamare BaggageBuilder manualmente in ogni gestore attività.
Registra BaggageMiddleware nel set di middleware dell'adattatore. Estrae automaticamente il chiamante, l'agente, il tenant, il canale e i dettagli della conversazione da ogni TurnContext in ingresso e esegue il wrapping della richiesta in un ambito di contesto.
from microsoft_agents_a365.observability.hosting import BaggageMiddleware
adapter.use(BaggageMiddleware())
In alternativa, usare ObservabilityHostingManager per configurare il middleware di contesto insieme ad altre funzionalità di hosting.
from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions
options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)
Il middleware ignora la configurazione del bagaglio per risposte asincrone (ContinueConversation eventi) per evitare di sovrascrivere il bagaglio già impostato dalla richiesta di origine.
Sistema di risoluzione dei token
Quando si usa l'utilità di esportazione di Agent 365, è necessario fornire una funzione resolver token che restituisce un token di autenticazione.
Quando si utilizza l'Agent 365 Observability SDK con il framework di hosting dell'agente, è possibile generare token utilizzando il TurnContext dalle attività dell'agente.
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
Per lo scenario di lavoro digitale, se l'agente usa il pacchetto Microsoft Agent 365 Observability Hosting Library, usare AgenticTokenCache per gestire automaticamente la memorizzazione nella cache dei token. Registrare il token una volta per agente e tenant durante un gestore di attività e passare cache.get_observability_token come token_resolver nella configurazione di osservabilità.
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(),
)
Strumentazione automatica
La strumentazione automatica rileva automaticamente i segnali di telemetria esistenti dai framework agentici (SDK) per il tracciamento e li inoltra al servizio di osservabilità di Agent 365. Questa funzione elimina la necessità per gli sviluppatori di scrivere manualmente il codice di monitoraggio, semplifica la configurazione e garantisce un monitoraggio costante delle prestazioni.
Molteplici SDK e piattaforme supportano l'auto-strumentazione:
| Piattaforma | SDK/framework supportati |
|---|---|
| .NET | Kernel semantico, OpenAI, Agent Framework |
| Python | Kernel semantico, OpenAI, Agent Framework, LangChain |
| Node.js | OpenAI, LangChain |
Nota
Il supporto per la strumentazione automatica varia in base all'implementazione della piattaforma e dell'SDK.
Nucleo Semantico
La strumentazione automatica richiede l'uso del generatore di baggage. Imposta l'ID agente e l'ID tenant usando BaggageBuilder.
Installare il pacchetto .
pip install microsoft-agents-a365-observability-extensions-semantic-kernel
Configura l'osservabilità.
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
La strumentazione automatica richiede l'uso del generatore di baggage. Imposta l'ID agente e l'ID tenant usando BaggageBuilder.
Installare il pacchetto .
pip install microsoft-agents-a365-observability-extensions-openai
Configura l'osservabilità.
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
Framework dell'agente
La strumentazione automatica richiede l'uso del generatore di baggage. Imposta l'ID agente e l'ID tenant usando BaggageBuilder.
Installare il pacchetto .
pip install microsoft-agents-a365-observability-extensions-agent-framework
Configura l'osservabilità.
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()
Framework di LangChain
La strumentazione automatica richiede l'uso del generatore di baggage. Imposta l'ID agente e l'ID tenant usando BaggageBuilder.
Installare il pacchetto .
pip install microsoft-agents-a365-observability-extensions-langchain
Configura l'osservabilità.
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
Strumentazione manuale
Usa l'SDK di osservabilità dell'Agent 365 per comprendere il funzionamento interno dell'agente.
L'SDK fornisce ambiti che è possibile avviare: InvokeAgentScope, ExecuteToolScope, InferenceScopee OutputScope.
Invocazione dell'agente
Usa questo ambito all'inizio del processo dell'agente. Utilizzando l'ambito dell'agente invoke, puoi catturare proprietà come l'agente attualmente invocato, i dati utente dell'agente e altro ancora.
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(...)
Esecuzione dello strumento
I seguenti esempi mostrano come aggiungere il tracciamento dell'osservabilità all'esecuzione dello strumento del tuo agente. Questo tracciamento cattura la telemetria a scopo di monitoraggio e audit.
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)
Inferenza
Gli esempi seguenti illustrano come instrumentare le chiamate di inferenza del modello di intelligenza artificiale con il rilevamento dell'osservabilità per acquisire l'utilizzo dei token, i dettagli del modello e i metadati della risposta.
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)
Risultato
Usare questo ambito per scenari asincroni in cui InvokeAgentScope, ExecuteToolScopeo InferenceScope non è in grado di acquisire i dati di output in modo sincrono. Avviare OutputScope come intervallo figlio per registrare i messaggi di output finali al termine dell'ambito padre.
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
Valida localmente
Per verificare che sia stata completata l'integrazione con l'SDK di osservabilità, esaminare i log della console generati dall'agente e dai log dell'SDK di osservabilità.
Impostare la variabile di ambiente ENABLE_A365_OBSERVABILITY_EXPORTER su false. Questa impostazione esporta gli intervalli (tracce) sulla console.
Per analizzare gli errori di esportazione, abilitate la registrazione dettagliata impostando ENABLE_A365_OBSERVABILITY_EXPORTER su true e configurando la registrazione di debug all'avvio dell'applicazione.
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)
Messaggi chiave del log
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.
Visualizzazione dei log esportati
Per visualizzare i dati di telemetria dell'agente in Microsoft Purview o Microsoft Defender, assicurarsi che siano soddisfatti i requisiti seguenti:
- Microsoft Purview: il controllo deve essere attivato per l'organizzazione. Per istruzioni, vedere Attivare o disattivare il controllo.
-
Microsoft Defender: la ricerca avanzata deve essere configurata per accedere alla tabella
CloudAppEvents. Per informazioni dettagliate, vedere la tabella CloudAppEvents nello schema di ricerca avanzata.
Valida per la pubblicazione su piattaforma
Prima della pubblicazione, utilizzare i log della console per convalidare l'integrazione dell'osservabilità per l'agente implementando gli scope necessari invoke agent, execute tool, inference e output. Poi confronta i log del tuo agente con le seguenti liste di attributi per verificare che tutti gli attributi richiesti siano presenti. Acquisisce attributi su ogni ambito o tramite il generatore di baggage e includi attributi opzionali a tua discrezione.
Per maggiori informazioni sui requisiti di pubblicazione dei negozi, consulta le linee guida per la validazione dei negozi.
attributi InvokeAgentScope
L'elenco seguente riassume gli attributi di telemetria richiesti e opzionali registrati quando si avvia un 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"
}
attributi ExecuteToolScope
L'elenco seguente riassume gli attributi di telemetria richiesti e opzionali registrati quando si avvia un 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"
}
attributi InferenceScope
L'elenco seguente riassume gli attributi di telemetria richiesti e opzionali registrati quando si avvia un 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"
}
attributi OutputScope
L'elenco seguente riassume gli attributi di telemetria richiesti e opzionali registrati quando si avvia un OutputScope. Usare questo contesto per scenari asincroni in cui il contesto padre non può acquisire i dati di output in modo sincrono.
"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"
}
Testare l'agente utilizzando funzioni di monitoraggio e analisi
Dopo aver implementato l'osservabilità nell'agente, testarla per assicurarsi che acquisisca correttamente i dati di telemetria. Segui la guida ai test per impostare il tuo ambiente. Concentrarsi quindi principalmente sulla sezione Visualizza log di osservabilità per verificare che l'implementazione dell'osservabilità funzioni come previsto.
Verifica:
- Passa a:
https://admin.cloud.microsoft/#/agents/all - Seleziona il tuo agente > Attività
- Vedi le sessioni e le chiamate agli strumenti
Risoluzione dei problemi
Questa sezione descrive i problemi comuni durante l'implementazione e l'utilizzo dell'osservabilità.
Suggerimento
La Guida alla risoluzione dei problemi dell'Agente 365 contiene raccomandazioni di alto livello, best practice e link a contenuti di risoluzione dei problemi per ogni fase del ciclo di sviluppo dell'Agente 365.
I dati di osservabilità non compaiono
Sintomi:
- L'agente è in corsa
- Niente telemetria nel centro amministrativo
- Non si vede l'attività degli agenti
Causa radice:
- L'osservabilità non è abilitata
- Errori di configurazione
- Problemi di risoluzione dei token
Soluzioni: Prova i seguenti passaggi per risolvere il problema:
Controllare che l'esportatore di osservabilità sia abilitato
È necessario abilitare in modo esplicito l'utilità di esportazione di Agent 365. Se disabilitato, l'SDK passa a un'utilità di esportazione su console e i dati di telemetria non vengono inviati al servizio. Per informazioni dettagliate sulla configurazione, vedere Configurazione.
Controlla la configurazione del token resolver
L'utilità di esportazione richiede un resolver di token valido che restituisce un token Bearer per ogni richiesta di esportazione. Se il resolver del token è mancante o restituisce
null, l'esportazione viene ignorata automaticamente. Assicurati che il tuo codice implementi correttamente il risolver dei token. Per informazioni dettagliate, vedere Sistema di risoluzione dei token.Controlla la presenza di errori nei log
Abilitare la registrazione dettagliata e usare il
az webapp log tailcomando per cercare nei log gli errori correlati all'osservabilità. Per informazioni dettagliate su come abilitare la registrazione per ogni piattaforma, vedere Convalidare localmente.# Look for observability-related errors az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"Verifica l'esportazione della telemetria
Conferma che la telemetria è generata ed esportata come previsto.
- Aggiungere un esportatore della console e verificare se la telemetria viene generata localmente. Per informazioni dettagliate su come usare l'utilità di esportazione della console e convalidare l'output, vedere Convalidare localmente.
ID tenant o ID agente mancanti: intervalli ignorati
Sintomi: Il sistema elimina silenziosamente i segmenti e non li esporta mai. Alcuni SDK registrano un conteggio degli intervalli ignorati o un messaggio, ad esempio "Nessun intervallo con l'identità tenant/agente trovata". Altri li rilasciano senza registrazione.
Risoluzione:
- Prima dell'esportazione, le partizioni SDK si estendono in base all'identità del tenant e dell'agente. Il sistema elimina gli intervalli che mancano di un ID tenant o di un ID agente e non li invia mai al servizio.
- Assicurarsi che
BaggageBuildersia configurato con l'ID tenant e l'ID agente prima di creare intervalli. Questi valori vengono propagati attraverso il contesto OpenTelemetry e si collegano a tutti gli intervalli creati nell'ambito del bagaglio. Per l'API specifica della piattaforma, vedere Attributi del bagaglio. - Verificare che l'attività
TurnContextabbia un destinatario valido con identità agente se si utilizza il baggage middleware o il turn context helper dal pacchetto di integrazione dell'hosting per popolare gli ID.
Errore di risoluzione del token: esportazione ignorata o non autorizzata
Sintomi: Il resolver del token restituisce null o genera un errore. A seconda dell'SDK, l'esportazione viene ignorata completamente o la richiesta viene inviata senza un'intestazione di autorizzazione e ha esito negativo con HTTP 401.
Risoluzione:
- Il sistema di risoluzione dei token è necessario all'inizializzazione. Se manca, l'esportatore genera un errore all'avvio. Verificare che venga fornito un risolutore di token e che restituisca un token Bearer valido.
- Assicurarsi che l'ID tenant e l'ID agente corretti vengano usati per
BaggageBuilder, perché questi valori vengono passati al resolver del token. - Per gli agenti Azure ospitati, verificare che l'identità gestita disponga dell'autorizzazione API necessaria per l'ambito di osservabilità.
HTTP 401 Non autorizzato
Sintomi: L'esportazione non riesce con HTTP 401. L'esportatore non ritenta di risolvere questo errore.
Risoluzione:
- Verificare che il gruppo di destinatari del token corrisponda all'ambito dell'endpoint di osservabilità. L'ambito predefinito è
https://api.powerplatform.com/.defaultper un agente agentico. - Verificare che l'identità (identità gestita o registrazione dell'app) disponga delle autorizzazioni di osservabilità di Agent 365.
- Verificare che il resolver del token non restituisca un token utente delegato, un token per un gruppo di destinatari non corretto o un token scaduto.
Importante
Gli agenti esistenti che si aggiornano a queste versioni del pacchetto richiedono un passaggio aggiuntivo
Questo passaggio si applica solo se si sta aggiornando un agente esistente. Le nuove installazioni di agenti non richiedono questo passaggio. Se si esegue l'aggiornamento alle versioni del pacchetto seguenti o versioni successive, è necessario concedere la nuova Agent365.Observability.OtelWrite autorizzazione all'identità (identità gestita o registrazione dell'app). Senza questa autorizzazione, l'esportazione dei dati di telemetria non riesce con HTTP 401.
| Piattaforma | Versione minima che richiede questo passaggio |
|---|---|
| .NET | 0.3-beta |
| Node.js | 0.2.0-preview.1 |
| Python | 0.3.0 |
Per i passaggi necessari, vedere il registro delle modifiche nel pacchetto in fase di aggiornamento.
HTTP 403 Non consentito
Sintomi: L'esportazione non riesce con HTTP 403. L'utilità di esportazione non riprova in caso di questo errore.
Risoluzione:
- Verificare se l'ID Tenant viene aggiunto all'elenco dei tenant consentiti di Agent 365 per l'inserimento di tracce.
- Verificare che l'identità dell'agente abbia il ruolo o l'autorizzazione necessari per il tenant di destinazione.
HTTP 429/ 5xx - Errori temporanei
Sintomi: L'esportazione non riesce con un codice di stato HTTP temporaneo, ad esempio 429 o 5xx.
Risoluzione:
- Questi errori sono in genere temporanei e risolti autonomamente. Gli SDK Python e JavaScript riprovano automaticamente per i codici di stato HTTP 408, 429 e 5xx fino a tre volte con backoff esponenziale. L'SDK di .NET non riprova automaticamente.
- Se gli errori continuano a verificarsi, controlla il dashboard dello stato del servizio.
- Valutare la possibilità di ridurre la frequenza di esportazione aumentando il ritardo pianificato tra batch o aumentando le dimensioni massime del batch di esportazione. Per le opzioni di configurazione per piattaforma, vedere la
Agent365ExporterOptionstabella in Configurazione.
Il timeout di esportazione
Sintomi: Timeout dei tentativi di esportazione.
Risoluzione:
- Controllare la connettività di rete all'endpoint di osservabilità.
- Le impostazioni predefinite di timeout variano in base alla piattaforma. Il timeout predefinito della richiesta HTTP è di 30 secondi. Alcuni SDK hanno anche un timeout di esportazione complessivo separato che copre tutto il ciclo di esportazione, inclusi i tentativi di ripetizione. Per le proprietà esatte e le impostazioni predefinite per ogni piattaforma, vedere la
Agent365ExporterOptionstabella in Configurazione. - Se i timeout si verificano frequentemente, aumentare il valore di timeout pertinente nelle opzioni di esportazione.
L'esportazione ha esito positivo, ma i dati di telemetria non vengono visualizzati in Defender o Purview
Symptoms: I log mostrano un'esportazione riuscita, ma i dati di telemetria non sono visibili in Microsoft Defender o Microsoft Purview.
Risoluzione:
- Verificare di soddisfare i prerequisiti per la visualizzazione dei log esportati. Per Purview, il controllo deve essere attivato. Per Defender, è necessario configurare la ricerca avanzata. Per altre informazioni, vedere Visualizzazione dei log esportati.
- La compilazione dei dati di telemetria può richiedere alcuni minuti dopo un'esportazione riuscita. Attendere che i dati vengano visualizzati prima di analizzare ulteriormente.
Per altre informazioni sul test dell'osservabilità, vedere: