Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Para obtener acceso anticipado a Microsoft Agent 365, debe formar parte del programa de versión preliminar Frontier. Frontier le conecta directamente con las últimas innovaciones de inteligencia artificial de Microsoft. Las versiones preliminares de Frontier están sujetas a los términos de vista previa existentes en tus acuerdos con clientes. Dado que estas características siguen en desarrollo, su disponibilidad y funcionalidades pueden cambiar con el tiempo.
Para participar en el ecosistema de Agent 365, añade capacidades de observabilidad de Agent 365 a tu agente. Agent 365 Observability se basa en OpenTelemetry (OTel) y proporciona un marco unificado para capturar telemetría de forma coherente y segura en todas las plataformas de agentes. Al implementar este componente necesario, permite a los administradores de TI supervisar la actividad del agente en Microsoft centro de administración y permitir que los equipos de seguridad usen Defender y Purview para la detección de amenazas y cumplimiento.
Beneficios clave
- Visibilidad de extremo a extremo: Captura una telemetría completa para cada invocación de agente, incluyendo sesiones, llamadas a herramientas y excepciones, dándote trazabilidad total entre plataformas.
- Seguridad y habilitación de cumplimiento: envíe registros de auditoría unificados a Defender y Purview, lo que permite escenarios de seguridad avanzados e informes de cumplimiento para el agente.
- Flexibilidad multiplataforma: Construir sobre los estándares de OTel y admitir diversos entornos de ejecución y plataformas como Copilot Studio, Foundry y futuros marcos de agentes.
- Operational efficiency for admins: Proporcionar observabilidad centralizada en Microsoft 365 admin center, reduciendo el tiempo de solución de problemas y mejorando la gobernanza con controles de acceso basados en rol para los equipos de TI que administran el agente.
Agentes compatibles
Los siguientes tipos de agente admiten la observabilidad del Agente 365:
- Agentes habilitados para Microsoft Agent 365: use el SDK de observabilidad para instrumentar el agente.
- Agentes de motor personalizados: use el SDK de observabilidad para instrumentar el agente.
- Agentes declarativos: la observabilidad se admite de forma predeterminada. No se requiere ninguna implementación del SDK.
Instalación
Use estos comandos para instalar los módulos de observabilidad para los idiomas admitidos por Agent 365.
Instale los paquetes principales de observabilidad y tiempo de ejecución. Todos los agentes que usan la observabilidad del Agente 365 necesitan estos paquetes.
pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime
Si el agente usa el paquete Microsoft Agents Hosting, instale el paquete de integración de hospedaje. Proporciona un middleware que rellena automáticamente el equipaje y los ámbitos desde el TurnContext e incluye el almacenamiento en caché de tokens para el exportador de observabilidad.
pip install microsoft-agents-a365-observability-hosting
Si el agente usa uno de los marcos de inteligencia artificial admitidos, instale la extensión de instrumentación automática correspondiente para capturar automáticamente la telemetría sin código de instrumentación manual. Para obtener más información sobre la configuración, consulte Instrumentación automática.
# 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
Configuración
Utiliza las siguientes configuraciones para habilitar y personalizar la observabilidad del Agente 365 para tu agente.
Establece la ENABLE_A365_OBSERVABILITY_EXPORTER variable de entorno en true para observabilidad. Esta configuración exporta los registros al servicio y requiere que se proporcione un token_resolver. En caso contrario, se utiliza el exportador de consola.
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,
)
El resolutor de tokens está excluido del registro en la consola.
Puede personalizar el comportamiento del exportador pasando una Agent365ExporterOptions instancia a exporter_options. Cuando exporter_options se proporciona, tiene prioridad sobre los token_resolver parámetros y 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,
)
En la tabla siguiente se describen los parámetros opcionales para configure().
| Parámetro | Descripción | Predeterminado |
|---|---|---|
logger_name |
Nombre del registrador de Python usado para la depuración y la salida del registro de consola. | microsoft_agents_a365.observability.core |
exporter_options |
Una instancia Agent365ExporterOptions que configura conjuntamente el resolutor de tokens y la categoría de clúster. |
None |
suppress_invoke_agent_input |
Cuando True, suprime los mensajes de entrada en los segmentos de InvokeAgent. |
False |
En la tabla siguiente se describen las propiedades opcionales de Agent365ExporterOptions.
| Propiedad | Descripción | Predeterminado |
|---|---|---|
use_s2s_endpoint |
Cuando True usa la ruta de acceso del punto de conexión de servicio a servicio. |
False |
max_queue_size |
Tamaño máximo de cola para el procesador por lotes. | 2048 |
scheduled_delay_ms |
Retraso en milisegundos entre lotes de exportación. | 5000 |
exporter_timeout_ms |
Tiempo de espera en milisegundos para la operación de exportación. | 30000 |
max_export_batch_size |
Tamaño máximo del lote para las operaciones de exportación. | 512 |
Atributos de equipaje
Use BaggageBuilder para establecer información contextual que fluye a través de todos los intervalos de una solicitud.
El SDK implementa una SpanProcessor que copia de todas las entradas de equipaje no vacías en intervalos recién iniciados sin sobrescribir los atributos existentes.
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
Para rellenar automáticamente el BaggageBuilder desde el TurnContext, use la herramienta populate del paquete microsoft-agents-a365-observability-hosting. Este asistente extrae automáticamente los detalles del autor de la llamada, el agente, el inquilino, el canal y la conversación de la actividad.
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 para gestión de equipaje
Si el agente usa el paquete de integración de hospedaje, registre el middleware de equipaje para rellenar automáticamente el equipaje para cada solicitud entrante. Este paso quita la necesidad de llamar BaggageBuilder manualmente en cada controlador de actividad.
Regístrese BaggageMiddleware en el conjunto de middleware del adaptador. Extrae automáticamente los detalles de llamada, agente, arrendatario, canal y conversación de cada entrada TurnContext y ajusta la solicitud en un contexto de equipaje.
from microsoft_agents_a365.observability.hosting import BaggageMiddleware
adapter.use(BaggageMiddleware())
Como alternativa, use ObservabilityHostingManager para configurar middleware de contexto junto con otras características de alojamiento:
from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions
options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)
El middleware omite la configuración de la información de contexto para las respuestas asincrónicas (eventos ContinueConversation) para evitar sobrescribir la información de contexto que la solicitud de origen ya ha establecido.
Resolución de token
Al usar el exportador del Agente 365, debe proporcionar una función de resolución de tokens que devuelva un token de autenticación.
Cuando usa el SDK de observabilidad de Agent 365 con el marco de hospedaje del agente, puede generar tokens mediante TurnContext de las actividades del agente.
En el fragmento de código siguiente se muestra cómo se puede generar un token mediante el microsoft_agents.hosting.core SDK. El token de autenticación generado aquí se usa para exportar los intervalos al servicio de ingesta de A365. Los agentes pueden generar un token por sí mismos, por ejemplo, mediante la Biblioteca de autenticación de Microsoft (MSAL), pero deben asegurarse de que el token tiene el ámbito de observabilidad.
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
Para un agente creado con la CLI de A365 que usa un compañero de equipo de IA y el paquete Microsoft Agent 365 Observability Hosting Library, use AgenticTokenCache para gestionar el almacenamiento en caché de tokens automáticamente. Registre el token una vez por agente y arrendatario durante un controlador de actividad y pase cache.get_observability_token como token_resolver en su configuración de observabilidad.
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(),
)
Instrumentación automática
La instrumentación automática escucha automáticamente las señales de telemetría existentes de marcos de agente (SDK) para seguimientos y las reenvía al servicio de observabilidad de Agent 365. Esta función elimina la necesidad de que los desarrolladores escriban código de monitorización manualmente, simplifica la configuración y garantiza un seguimiento consistente del rendimiento.
Múltiples SDKs y plataformas soportan auto-instrumentación:
| Plataforma | SDK y frameworks admitidos |
|---|---|
| .NET | Kernel semántico, OpenAI, Agent Framework |
| Python | Kernel semántico, OpenAI, Agent Framework, LangChain |
| Node.js | OpenAI, LangChain |
Nota
La compatibilidad con la instrumentación automática varía según la plataforma y la implementación del SDK.
Núcleo Semántico
La instrumentación automática requiere el uso del generador de equipaje. Establece el ID del agente y el ID del tenant usando BaggageBuilder.
Instale el paquete .
pip install microsoft-agents-a365-observability-extensions-semantic-kernel
Configure la observabilidad.
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 instrumentación automática requiere el uso del generador de equipaje. Establece el ID del agente y el ID del tenant usando BaggageBuilder.
Instale el paquete .
pip install microsoft-agents-a365-observability-extensions-openai
Configure la observabilidad.
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
Marco de trabajo del agente
La instrumentación automática requiere el uso del generador de equipaje. Establece el ID del agente y el ID del tenant usando BaggageBuilder.
Instale el paquete .
pip install microsoft-agents-a365-observability-extensions-agent-framework
Configure la observabilidad.
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()
Marco de LangChain
La instrumentación automática requiere el uso del constructor de contenedores. Establece el ID del agente y el ID del tenant usando BaggageBuilder.
Instale el paquete .
pip install microsoft-agents-a365-observability-extensions-langchain
Configure la observabilidad.
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
Instrumentación manual
Utiliza el SDK de observabilidad del Agente 365 para entender el funcionamiento interno del agente.
El SDK proporciona ámbitos que puede iniciar: InvokeAgentScope, ExecuteToolScope, InferenceScope, y OutputScope.
Invocación del agente
Use este ámbito al principio del proceso del agente. Al usar el ámbito del agente de invocación, se pueden capturar propiedades como el agente actual que se invoca, los datos de usuario del agente, etc.
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(...)
Ejecución de herramientas
Los siguientes ejemplos muestran cómo agregar el seguimiento de la observabilidad a la ejecución de herramientas de su agente. Este seguimiento captura la telemetría para fines de monitorización y auditoría.
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)
Inferencia
En los ejemplos siguientes se muestra cómo instrumentar llamadas de inferencia del modelo de IA con seguimiento de observabilidad para capturar el uso de tokens, los detalles del modelo y los metadatos de respuesta.
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)
Salida
Utilice este ámbito para escenarios asincrónicos donde InvokeAgentScope, ExecuteToolScope o InferenceScope no puedan capturar datos de salida de forma sincrónica. Comience OutputScope como un intervalo secundario para registrar los mensajes de salida finales después de que finalice el ámbito primario.
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
Validar localmente
Para comprobar que se ha integrado correctamente con el SDK de observabilidad, examine los registros de consola generados por el agente y los registros del SDK de observabilidad.
Establezca la variable de entorno ENABLE_A365_OBSERVABILITY_EXPORTER en false. Esta configuración exporta los tramos (trazas) a la consola.
Para investigar los errores de exportación, habilite el registro detallado estableciendo ENABLE_A365_OBSERVABILITY_EXPORTERtrue en y configurando el registro de depuración en el inicio de la aplicación:
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)
Mensajes de registro clave
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.
Visualización de registros exportados
Para ver la telemetría del agente en Microsoft Purview o Microsoft Defender, asegúrese de que se cumplen los siguientes requisitos:
- Microsoft Purview: la auditoría debe estar activada para su organización. Para obtener instrucciones, consulte Activar o desactivar la auditoría.
-
Microsoft Defender: La búsqueda avanzada debe configurarse para acceder a la tabla
CloudAppEvents. Para obtener más información, consulte la tabla CloudAppEvents en el esquema de búsqueda avanzada.
Validar para la publicación en la tienda
Importante
Para una validación exitosa del almacén, el agente debe implementar las InvokeAgentScope, InferenceScope, y ExecuteToolScope ámbitos. Estos tres ámbitos son necesarios para la publicación.
Antes de publicar, use los registros de consola para validar la integración de observabilidad para el agente mediante la implementación de los ámbitos necesarios invoke agent, execute tool, inference, y output. Luego compara los registros de tu agente con las siguientes listas de atributos para verificar que todos los atributos requeridos estén presentes. Defina los atributos en cada ámbito o mediante el generador de equipaje, e incluya atributos opcionales según considere oportuno.
Para más información sobre los requisitos de publicación en tiendas, consulte las directrices de validación de tiendas.
atributos de InvokeAgentScope
La siguiente lista resume los atributos de telemetría necesarios y opcionales registrados al iniciar 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"
}
atributos de ExecuteToolScope
La siguiente lista resume los atributos de telemetría necesarios y opcionales registrados al iniciar 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"
}
atributos de InferenceScope
La siguiente lista resume los atributos de telemetría necesarios y opcionales registrados al iniciar 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"
}
atributos de OutputScope
La siguiente lista resume los atributos de telemetría necesarios y opcionales registrados al iniciar un OutputScope. Use este ámbito para escenarios asincrónicos en los que el ámbito primario no puede capturar datos de salida de forma sincrónica.
"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"
}
Prueba del agente con observabilidad
Después de implementar la observabilidad en el agente, pruóbelo para asegurarse de que captura la telemetría correctamente. Sigue la guía de pruebas para configurar tu entorno. A continuación, céntrese principalmente en la sección Ver registros de observabilidad para validar que la implementación de observabilidad funciona según lo previsto.
Comprobación:
- Vaya a:
https://admin.cloud.microsoft/#/agents/all - Selecciona tu agente > Actividad
- Verá las sesiones y las llamadas a herramientas
Solución de problemas
Esta sección describe problemas comunes al implementar y utilizar la observabilidad.
Sugerencia
La Guía de Resolución de Problemas del Agente 365 contiene recomendaciones de alto nivel para la solución de problemas, mejores prácticas y enlaces a contenido de solución de problemas para cada parte del ciclo de vida del desarrollo del Agente 365.
Los datos de observabilidad no aparecen
Síntomas:
- El agente está huyendo
- No hay telemetría en el centro de administración
- No se puede ver la actividad de los agentes
Causa principal:
- La observabilidad no está habilitada
- Errores de configuración
- Problemas con el resolutor de tokens
Soluciones: Prueba los siguientes pasos para resolver el problema:
Comprobación de que el exportador de observabilidad está habilitado
Debe habilitar explícitamente el exportador del Agente 365. Cuando está deshabilitado, el SDK vuelve a un exportador de consola y la telemetría no se envía al servicio. Para obtener más información sobre la configuración, consulte Configuración.
Comprobar la configuración del resolutor de tokens
El exportador requiere un solucionador de tokens válido que devuelva un token de portador para cada solicitud de exportación. Si falta el solucionador de tokens o devuelve
null, la exportación se omite silenciosamente. Asegúrate de que tu código implemente correctamente el resolvedor de tokens. Para más información, consulte Resolución de tokens.Comprobar errores en los registros
Habilite el registro detallado y use el
az webapp log tailcomando para buscar registros de errores relacionados con la observabilidad. Para más información sobre cómo habilitar el registro por plataforma, consulte Validar localmente.# Look for observability-related errors az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"Verificar exportación de telemetría
Confirma que la telemetría se ha generado y exportado como se espera.
- Agregue un exportador de consola y compruebe si la telemetría se genera localmente. Para más información sobre cómo usar el exportador de la consola y validar la salida, consulte Validar localmente.
Falta el identificador de inquilino o el identificador del agente: intervalos omitidos
Síntomas: El sistema quita silenciosamente los intervalos y nunca los exporta. Algunos SDK registran un recuento de fragmentos omitidos o un mensaje como "No se encontraron fragmentos con identidad de inquilino/agente". Otros los descartan sin registrarlos.
Resolución:
- Antes de la exportación, el SDK divide los segmentos por las identidades de los inquilinos y de los agentes. El sistema quita intervalos que carecen de un identificador de inquilino o de agente y nunca los envía al servicio.
- Asegúrese
BaggageBuilderde que está configurado con el identificador de inquilino y el identificador del agente antes de crear intervalos. Estos valores se propagan a través del contexto de OpenTelemetry y se adjuntan a todos los intervalos creados dentro del ámbito del equipaje. Para obtener la API específica de la plataforma, consulte Atributos de equipaje. - Confirme que la
TurnContextactividad tiene un destinatario válido con la identidad del agente si usa el middleware de equipaje o activa el asistente de contexto del paquete de integración de hospedaje para rellenar esos identificadores.
Error de resolución de tokens: exportación omitida o no autorizada
Síntomas: El solucionador de tokens devuelve null o produce un error. En función del SDK, la exportación se omite por completo o la solicitud se envía sin un encabezado de autorización y se produce un error con HTTP 401.
Resolución:
- El resolutor de tokens es necesario en la inicialización. Si falta, el exportador genera un error al iniciarse. Asegúrese de que se proporciona un solucionador de tokens y devuelva un token Bearer válido.
- Asegúrese de que se usan el identificador de inquilino y el identificador de agente correctos para
BaggageBuilder, ya que estos valores se pasan al solucionador de tokens. - Para los agentes hospedados Azure, compruebe que la identidad administrada tiene el permiso de API necesario para el ámbito de observabilidad.
HTTP 401 No autorizado
Síntomas: Se produce un error en la exportación con HTTP 401. El exportador no vuelve a intentar este error.
Resolución:
- Compruebe que la audiencia del token coincide con el alcance del endpoint de observabilidad. El ámbito predeterminado es
https://api.powerplatform.com/.defaultpara un agente de tipo agentic. - Asegúrese de que la identidad (identidad administrada o registro de aplicaciones) tiene permisos de observabilidad del Agente 365.
- Compruebe que la resolución de tokens no devuelve un token de usuario delegado, un token para una audiencia incorrecta o un token expirado.
Importante
Los agentes existentes que actualizan a estas versiones de paquete requieren un paso adicional
Este paso solo se aplica si va a actualizar un agente existente. Las nuevas instalaciones del agente no requieren este paso. Si va a actualizar a las siguientes versiones de paquete o versiones más recientes, debe conceder el nuevo Agent365.Observability.OtelWrite permiso a la identidad (identidad administrada o registro de aplicaciones). Sin este permiso, se produce un error en la exportación de telemetría con HTTP 401.
| Plataforma | Versión mínima que requiere este paso |
|---|---|
| .NET | 0.3-beta |
| Node.js. | 0.2.0-preview.1 |
| Python | 0.3.0 |
Para conocer los pasos necesarios, consulte el registro de cambios en el paquete que va a actualizar.
HTTP 403 Prohibido
Síntomas: Se produce un error en la exportación con HTTP 403. El exportador no vuelve a intentar este error.
Resolución:
- Compruebe si el ID de inquilino se agrega a la lista de inquilinos permitidos del Agente 365 para la ingesta de trazas.
- Confirme que la identidad del agente tiene el rol o permiso necesarios para el inquilino de destino.
HTTP 429 / 5xx: errores transitorios
Síntomas: La exportación produce un error con un código de estado HTTP transitorio, como 429 o 5xx.
Resolución:
- Estos errores suelen ser transitorios y se resuelven por sí mismos. Los SDK de Python y JavaScript vuelven a intentarlo automáticamente en códigos de estado HTTP 408, 429 y 5xx hasta tres veces con retroceso exponencial. El SDK de .NET no vuelve a intentarlo automáticamente.
- Si los errores persisten, compruebe el panel de estado del servicio.
- Considere la posibilidad de reducir la frecuencia de exportación aumentando el retraso programado entre lotes o aumentando el tamaño máximo del lote de exportación. Para ver las opciones de configuración por plataforma, consulte la
Agent365ExporterOptionstabla en Configuración.
Tiempo de espera de exportación
Síntomas: Se agota el tiempo de espera de los intentos de exportación.
Resolución:
- Verifique la conectividad de la red al endpoint de observabilidad.
- Los valores predeterminados de tiempo de espera varían según la plataforma. El tiempo de espera de solicitud HTTP predeterminado es de 30 segundos. Algunos SDKs también tienen un tiempo de espera general e independiente del exportador que cubre todo el proceso de exportación, incluidos los reintentos. Para ver las propiedades exactas y los valores predeterminados por plataforma, consulte la
Agent365ExporterOptionstabla en Configuración. - Si se producen tiempos de espera con frecuencia, aumente el valor de tiempo de espera pertinente en las opciones del exportador.
La exportación se realiza correctamente, pero la telemetría no aparece en Defender o Purview
Symptoms: Los registros muestran una exportación correcta, pero la telemetría no está visible en Microsoft Defender o Microsoft Purview.
Resolución:
- Compruebe que cumple los requisitos previos para ver los registros exportados. Para Purview, la auditoría debe estar activada. Para Defender, debe configurar la búsqueda avanzada. Para obtener más información, consulte Visualización de registros exportados.
- La telemetría puede tardar varios minutos en actualizarse después de una exportación correcta. Espere a que aparezcan los datos antes de investigar más.
Para más información sobre las pruebas de observabilidad, consulte: