Observabilidad del agente

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:

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:

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 tail comando 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 BaggageBuilder de 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 TurnContext actividad 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/.default para 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 Agent365ExporterOptions tabla 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 Agent365ExporterOptions tabla 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: