Compartilhar via


Agentes de observabilidade

Importante

Você precisa fazer parte do programa de prévia Frontier para obter acesso antecipado ao Microsoft Agent 365. A Frontier conecta você diretamente às mais recentes inovações de IA da Microsoft. Prévias da Frontier estão sujeitas aos termos de pré-visualização existentes dos seus contratos com clientes. Como esses recursos ainda estão em desenvolvimento, sua disponibilidade e capacidades podem mudar ao longo do tempo.

Para participar do ecossistema Agent 365, você deve adicionar capacidades de Observabilidade do Agent 365 ao seu agente. A Observabilidade do Agente 365 se baseia no OpenTelemetry (OTel) e fornece uma estrutura unificada para capturar telemetria de forma consistente e segura em todas as plataformas de agentes. Ao implementar esse componente obrigatório, você permite que administradores de TI monitorem a atividade do seu agente no Microsoft Admin Center (MAC) e permite que equipes de segurança usem o Defender e o Purview para conformidade e detecção de ameaças.

Principais benefícios

  • Visibilidade de ponta a ponta: Capture telemetria abrangente para cada invocação de agente, incluindo sessões, chamadas de ferramentas e exceções, garantindo rastreabilidade total entre as plataformas.
  • Segurança e Habilitação de Conformidade: Alimente logs unificados de auditoria no Defender e Purview, possibilitando cenários avançados de segurança e relatórios de conformidade para seu agente.
  • Flexibilidade Multiplataforma: Construa sobre os padrões OTel e suporte runtimes e plataformas diversas como Copilot Studio, Foundry e futuros frameworks de agentes.
  • Eficiência Operacional para Administradores: Fornecer observabilidade centralizada no MAC, reduzindo o tempo de resolução de problemas e melhorando a governança com controles de acesso baseados em funções para equipes de TI que gerenciam seu agente.

Instalação

Use esses comandos para instalar os módulos de observabilidade para as linguagens suportadas pelo Agente 365.

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

Configuração

Use as seguintes configurações para ativar e personalizar a Observabilidade do Agente 365 para seu agente.

As variáveis do ambiente necessárias para a observabilidade são:

Variável de ambiente Description
ENABLE_OBSERVABILITY=true Flag para ativar/desativar o rastreamento. Por padrão: false
ENABLE_A365_OBSERVABILITY_EXPORTER=true True exporta registros para nosso serviço. Caso contrário, isso volta para o exportador do console
from microsoft_agents_a365.observability.core import config

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

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

Exclua o resolvedor de token para logar no console.

Atributos de bagagem

Use BaggageBuilder para definir informações contextuais que fluem por todos os intervalos em uma requisição. O SDK implementa uma SpanProcessor cópia de todas as entradas de bagagem não vazias para os intervalos recém-iniciados sem sobrescrever atributos existentes.

from microsoft_agents_a365.observability.core.middleware.baggage_builder import BaggageBuilder

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

Resolver de Tokens

Ao usar o exportador Agent 365, você deve fornecer uma função de resolução de token que retorne token de autenticação. Ao usar o SDK de Observabilidade do Agente 365 com o framework Agent Hosting, você pode gerar tokens usando as TurnContext atividades do agente do From

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

Instrumentação automática

A auto-instrumentação escuta automaticamente os frameworks agenticos (SDKs), sinais de telemetria existentes para rastreios e os encaminha para o serviço de observabilidade do Agente 365. Isso elimina a necessidade de os desenvolvedores escreverem código de monitoramento manualmente, simplificando a configuração e garantindo um acompanhamento consistente de desempenho.

Auto-instrumentação é suportada por múltiplos SDKs e plataformas:

Plataforma SDKs/Frameworks suportados
.NET Kernel Semântico, OpenAI, Framework de Agentes
Python Kernel Semântico, OpenAI, Framework de Agentes, LangChain
Node.js OpenAI

Observação

O suporte à auto-instrumentação varia conforme a plataforma e a implementação do SDK.

Kernel semântico

A instrumentação automotiva requer o uso de um construtor de bagagens. Defina o ID do agente e o ID do locatário usando BaggageBuilder.

Instalar o pacote

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

Configurar a observabilidade

from microsoft_agents_a365.observability.core.config import configure
from microsoft_agents_a365.observability.extensions.semantic_kernel 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

A instrumentação automotiva requer o uso de um construtor de bagagens. Defina o ID do agente e o ID do locatário usando BaggageBuilder.

Instale o pacote.

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

Configurar a observabilidade

from microsoft_agents_a365.observability.core.config import configure
from microsoft_agents_a365.observability.extensions.openai_agents 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

Estrutura do Agente

A instrumentação automotiva requer o uso de um construtor de bagagens. Defina o ID do agente e o ID do tenant usando o BaggageBuilder.

Instalar o pacote

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

Configurar a observabilidade

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

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

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

Estrutura LangChain

A auto-instrumentação requer o uso do bagbage builder. Defina o ID do agente e o ID do locatário usando BaggageBuilder.

Instale o pacote.

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

Configurar a observabilidade

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

Instrumentação manual

O SDK de observabilidade do agente 365 pode ser usado para entender o funcionamento interno do agente. O SDK fornece três escopos que podem ser iniciados: InvokeAgentScope, ExecuteToolScope, e InferenceScope.

Invocação do Agente

Esse escopo deve ser usado no início do processo do seu agente. Com o escopo do agente invocado, você captura propriedades como o agente atual que está sendo invocado, dados do usuário do agente, etc.

from microsoft_agents_a365.observability.core.invoke_agent_scope import InvokeAgentScope
from microsoft_agents_a365.observability.core.invoke_agent_details import InvokeAgentDetails
from microsoft_agents_a365.observability.core.tenant_details import TenantDetails
from microsoft_agents_a365.observability.core.request import Request

invoke_details = InvokeAgentDetails(
    details=agent_details,        # AgentDetails instance
    endpoint=my_endpoint,         # Optional endpoint (with hostname/port)
    session_id="session-42"
)
tenant_details = TenantDetails(tenant_id="tenant-123")
req = Request(content="User asks a question")

with InvokeAgentScope.start(invoke_details, tenant_details, req):
    # Perform agent invocation logic
    response = call_agent(...)

Parar execução

Os exemplos a seguir demonstram como instrumentar a execução da ferramenta do seu agente com rastreamento de observabilidade para capturar telemetria para fins de monitoramento e auditoria.

from microsoft_agents_a365.observability.core.execute_tool_scope import ExecuteToolScope
from microsoft_agents_a365.observability.core.tool_call_details import ToolCallDetails

tool_details = ToolCallDetails(
    tool_name="summarize",
    tool_type="function",
    tool_call_id="tc-001",
    arguments="{'text': '...'}",
    description="Summarize provided text",
    endpoint=None  # or endpoint object with hostname/port
)

with ExecuteToolScope.start(tool_details, agent_details, tenant_details):
    result = run_tool(tool_details)

Inferência

Os exemplos a seguir mostram como instrumentar chamadas de inferência de modelos de IA com rastreamento de observabilidade para capturar o uso de tokens, detalhes do modelo e metadados de resposta.

from microsoft_agents_a365.observability.core.inference_scope import InferenceScope
from microsoft_agents_a365.observability.core.inference_call_details import InferenceCallDetails
from microsoft_agents_a365.observability.core.request import Request

inference_details = InferenceCallDetails(
    operationName=SomeEnumOrValue("chat"),
    model="gpt-4o-mini",
    providerName="azure-openai",
    inputTokens=123,
    outputTokens=456,
    finishReasons=["stop"],
    responseId="resp-987"
)
req = Request(content="Explain quantum computing simply.")

with InferenceScope.start(inference_details, agent_details, tenant_details, req):
    completion = call_llm(...)

Validar localmente

Para verificar se você integrou com sucesso com o SDK de observabilidade, examine os logs do console gerados pelo seu agente.

Defina a variável de ambiente ENABLE_A365_OBSERVABILITY_EXPORTER como false. Isso exporta os spans (traces) para o console.

Registros de exemplo

Os troncos podem parecer um pouco diferentes dependendo da plataforma.

Log do console Invoke agent span

Este exemplo ilustra um típico intervalo de agente de invocação impresso pelo exportador do console quando a validação local está habilitada.

    {
    "name": "invoke_agent Azure OpenAI Agent",
    "context": {
        "trace_id": "0x4bd8f606688c3f3347d69c1b6539c957",
        "span_id": "0x0766d68605234692",
        "trace_state": "[]"
    },
    "kind": "SpanKind.CLIENT",
    "parent_id": null,
    "start_time": "2025-11-24T16:16:54.017403Z",
    "end_time": "2025-11-24T16:17:09.373357Z",
    "status": {
        "status_code": "UNSET"
    },
    "attributes": {
        "operation.source": "SDK",
        "correlation.id": "aaaa0000-bb11-2222-33cc-444444dddddd",
        "gen_ai.conversation.item.link": "http://localhost:56150/_connector",
        "gen_ai.agent.upn": "Delivery Agent",
        "gen_ai.agent.user.id": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "gen_ai.caller.id": "bbbbbbbb-cccc-dddd-2222-333333333333",
        "gen_ai.caller.name": "Alex Wilber",
        "gen_ai.caller.upn": "Sample UPN",
        "gen_ai.channel.name": "msteams",
        "gen_ai.system": "az.ai.agent365",
        "gen_ai.operation.name": "invoke_agent",
        "gen_ai.agent.id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "gen_ai.agent.name": "Azure OpenAI Agent",
        "gen_ai.agent.description": "An AI agent powered by Azure OpenAI",
        "gen_ai.agent.applicationid": "00001111-aaaa-2222-bbbb-3333cccc4444",
        "gen_ai.conversation.id": "__PERSONAL_CHAT_ID__",
        "tenant.id": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
        "session.id": "__PERSONAL_CHAT_ID__",
        "gen_ai.execution.type": "HumanToAgent",
        "gen_ai.input.messages": "[\"hi, what can you do\"]",
        "gen_ai.output.messages": "[\"Hi! I can assist you with a variety of tasks, including answering questions, providing information on a wide range of topics, helping with problem-solving, offering writing assistance, and more. Just let me know what you need help with!\"]"
    },
    "events": [],
    "links": [],
    "resource": {
        "attributes": {
            "telemetry.sdk.language": "python",
            "telemetry.sdk.name": "opentelemetry",
            "telemetry.sdk.version": "1.38.0",
            "service.namespace": "MyAgentTesting",
            "service.name": "MyAgentTracing"
        },
        "schema_url": ""
    }}

Log do console para a ferramenta de execução

Este exemplo mostra um intervalo típico de ferramenta de execução emitido pelo exportador do console durante a validação local.

{
    "name": "execute_tool get_weather",
    "context": {
        "trace_id": "0xa9a1be6323bd52476d6a28b8893c6aa8",
        "span_id": "0x1dec90d34ecc0823",
        "trace_state": "[]"
    },
    "kind": "SpanKind.INTERNAL",
    "parent_id": "0x2e727b4c133cbd50",
    "start_time": "2025-11-24T18:47:55.960305Z",
    "end_time": "2025-11-24T18:47:55.962306Z",
    "status": {
        "status_code": "UNSET"
    },
    "attributes": {
        "operation.source": "SDK",
        "correlation.id": "aaaa0000-bb11-2222-33cc-444444dddddd",
        "gen_ai.conversation.item.link": "http://localhost:56150/_connector",
        "gen_ai.agent.upn": "Delivery Agent",
        "gen_ai.agent.user.id": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "gen_ai.execution.type": "HumanToAgent",
        "gen_ai.channel.name": "msteams",
        "gen_ai.system": "az.ai.agent365",
        "gen_ai.operation.name": "execute_tool",
        "gen_ai.agent.id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "gen_ai.agent.name": "Azure OpenAI Agent",
        "gen_ai.agent.description": "An AI agent powered by Azure OpenAI",
        "gen_ai.agent.applicationid": "00001111-aaaa-2222-bbbb-3333cccc4444",
        "gen_ai.conversation.id": "__PERSONAL_CHAT_ID__",
        "tenant.id": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
        "gen_ai.tool.name": "get_weather",
        "gen_ai.tool.arguments": "current location",
        "gen_ai.tool.type": "function",
        "gen_ai.tool.call.id": "bbbbbbbb-1111-2222-3333-cccccccccccc",
        "gen_ai.tool.description": "Executing get_weather tool"
    },
    "events": [],
    "links": [],
    "resource": {
        "attributes": {
            "telemetry.sdk.language": "python",
            "telemetry.sdk.name": "opentelemetry",
            "telemetry.sdk.version": "1.38.0",
            "service.namespace": "MyAgentTesting",
            "service.name": "MyAgentTracing"
        },
        "schema_url": ""
    }
}

Intervalo de inferência logarítmica do console

Este exemplo demonstra uma saída típica de intervalo de inferência do exportador de console usado para validação local.

{
    "name": "Chat gpt-4o-mini",
    "context": {
        "trace_id": "0xceb86559a6f7c2c16a45ec6e0b201ae1",
        "span_id": "0x475beec8c1c4fa56",
        "trace_state": "[]"
    },
    "kind": "SpanKind.CLIENT",
    "parent_id": "0x959a854f18fa2c22",
    "start_time": "2025-11-24T18:04:07.061703Z",
    "end_time": "2025-11-24T18:04:09.506951Z",
    "status": {
        "status_code": "UNSET"
    },
    "attributes": {
        "operation.source": "SDK",
        "correlation.id": "aaaa0000-bb11-2222-33cc-444444dddddd",
        "gen_ai.conversation.item.link": "http://localhost:56150/_connector",
        "gen_ai.agent.upn": "Delivery Agent",
        "gen_ai.agent.user.id": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "gen_ai.execution.type": "HumanToAgent",
        "gen_ai.channel.name": "msteams",
        "gen_ai.system": "az.ai.agent365",
        "gen_ai.agent.id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "gen_ai.agent.name": "Azure OpenAI Agent",
        "gen_ai.agent.description": "An AI agent powered by Azure OpenAI",
        "gen_ai.agent.applicationid": "00001111-aaaa-2222-bbbb-3333cccc4444",
        "gen_ai.conversation.id": "__PERSONAL_CHAT_ID__",
        "tenant.id": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
        "gen_ai.input.messages": "hi, what can you do",
        "gen_ai.operation.name": "Chat",
        "gen_ai.request.model": "gpt-4o-mini",
        "gen_ai.provider.name": "Azure OpenAI",
        "gen_ai.output.messages": "\"Hello! I can help answer questions, provide information, assist with problem-solving, offer writing suggestions, and more. Just let me know what you need!\"",
        "gen_ai.usage.input_tokens": "33",
        "gen_ai.usage.output_tokens": "32",
        "gen_ai.response.finish_reasons": "[\"stop\"]"
    },
    "events": [],
    "links": [],
    "resource": {
        "attributes": {
            "telemetry.sdk.language": "python",
            "telemetry.sdk.name": "opentelemetry",
            "telemetry.sdk.version": "1.38.0",
            "service.namespace": "MyAgentTesting",
            "service.name": "MyAgentTracing"
        },
        "schema_url": ""
    }
}

Requisitos de observabilidade

Administradores de TI usam os dados que você define no seu código para monitorar a atividade do seu agente. Dados incompletos significam que os benefícios da observabilidade não são totalmente realizados. Os agentes devem fornecer os dados necessários para receber todos os benefícios esperados. Um processo de validação verificará a existência desses dados.

Dentro da telemetria, existem conceitos de escopo ou contexto. Cada operação que seu agente realiza existe dentro de um escopo diferente. Os dados devem ser incluídos nos BaggageScope atributos criados usando bagagem, ou dentro dos escopos individuais conforme descrito em Instrumentação Manual.

Para validar sua implementação, siga as instruções para validar localmente e gerar logs de console para sua instrumentação. Depois, revise a seção [Validar para atributos exigidos](#validate-para-atributos requeridos) para identificar quais atributos são necessários e quais são opcionais. Todos os atributos exigidos devem ser definidos para passar com sucesso na validação.

Revise as propriedades e valores de parâmetros necessários descritos para essas classes:

  • Propriedades definidas usando a classe BaggageBuilder podem ser definidas ou sobrescrevidas pelas propriedades dos respectivos escopos.

  • Defina as propriedades na tabela a seguir usando o método InvokeAgentScope.start.

    Dados Description
    invoke_agent_details.details.agent_id O identificador exclusivo para o agente de IA
    invoke_agent_details.details.agent_name O nome legível pelo ser humano do agente de IA
    invoke_agent_details.details.agent_auid A ID do usuário do agente (AUID)
    invoke_agent_details.details.agent_upn O nome da entidade de usuário do agente (UPN)
    invoke_agent_details.details.agent_blueprint_id A ID do blueprint/aplicativo do agente
    invoke_agent_details.details.tenant_id A ID do locatário do agente
    invoke_agent_details.details.conversation_id O identificador da conversa ou sessão
    invoke_agent_details.endpoint O ponto de extremidade para a invocação do agente
    tenant_details.tenant_id O identificador exclusivo para o locatário
    request.content O conteúdo da carga útil enviado ao agente para invocação
    request.execution_type Tipo de invocação indicando a origem da solicitação (por exemplo, HumanToAgent ou AgentToAgent)
    caller_details.caller_id O identificador exclusivo para o chamador
    caller_details.caller_upn O UPN (nome da entidade de usuário) do chamador
    caller_details.caller_user_id A ID do usuário do chamador
    caller_details.tenant_id A ID do locatário do chamador
  • Defina as propriedades na tabela seguinte usando o método ExecuteToolScope.start.

    Dados Description
    details.tool_name O nome da ferramenta que está sendo executada
    details.arguments Argumentos/parâmetros da ferramenta
    details.tool_call_id O identificador exclusivo para a chamada de ferramenta
    details.tool_type O tipo da ferramenta que está sendo executada
    details.endpoint Se uma chamada de ferramenta externa for feita
    agent_details.agent_id O identificador exclusivo para o agente de IA
    agent_details.agent_name O nome legível pelo ser humano do agente de IA
    agent_details.agent_auid O ID de usuário do agente
    agent_details.agent_upn O nome da entidade de usuário do agente (UPN)
    agent_details.agent_blueprint_id A ID do blueprint/aplicativo do agente
    agent_details.tenant_id ID de inquilino do corretor.
    agent_details.conversation_id O ID da conversa para a invocação do agente.
    tenant_details.tenant_id ID de inquilino do corretor.
  • Defina as propriedades na tabela a seguir usando o método InferenceScope.start.

    Dados Description
    details.operationName O nome/tipo da operação para a inferência
    details.model O nome/identificador do modelo
    details.providerName Nome do provedor
    agent_details.agent_id O identificador exclusivo para o agente de IA
    agent_details.agent_name O nome legível pelo ser humano do agente de IA
    agent_details.agent_auid A ID do usuário do agente (AUID)
    agent_details.agent_upn O nome da entidade de usuário do agente (UPN)
    agent_details.agent_blueprint_id A ID do blueprint/aplicativo do agente
    agent_details.tenant_id O identificador exclusivo para o locatário
    agent_details.conversation_id O identificador da conversa ou sessão
    tenant_details.tenant_id O identificador exclusivo para o locatário
    request.content O conteúdo da carga útil enviado ao agente para inferência
    request.execution_type Tipo de invocação indicando a origem da solicitação (por exemplo, HumanToAgent ou AgentToAgent)
    request.source_metadata Represente as informações do canal

Validar para publicação em lojas

Use logs de console para validar sua integração de observabilidade para o agente antes de publicar, implementando o invoke agent, a ferramenta de execução e os escopos de inferência necessários. Depois, compare os registros do seu agente com as seguintes listas de atributos para verificar se todos os atributos necessários estão presentes; Capture atributos em cada mira ou pelo construtor de bagagem, e inclua atributos opcionais a seu critério.

Para mais informações sobre os requisitos de publicação em loja, consulte as diretrizes de validação da loja.

Atributos InvokeAgentScope

A lista a seguir resume os atributos de telemetria necessários e opcionais registrados quando você inicia um InvokeAgentScope.

"attributes": {
        "correlation.id": "Optional",
        "gen_ai.agent.applicationid": "Required",
        "gen_ai.agent.description": "Optional",
        "gen_ai.agent.id": "Required",
        "gen_ai.agent.name": "Required",
        "gen_ai.agent.thought.process": "Optional",
        "gen_ai.agent.upn": "Required",
        "gen_ai.agent.user.id": "Required",
        "gen_ai.caller.agent.applicationid": "Required (if execution type is agent to agent)",
        "gen_ai.caller.agent.id": "Required (if execution type is agent to agent)",
        "gen_ai.caller.agent.name": "Required (if execution type is agent to agent)",
        "gen_ai.caller.client.ip": "Required",
        "gen_ai.caller.id": "Required",
        "gen_ai.caller.name": "Optional",
        "gen_ai.caller.upn": "Required",
        "gen_ai.channel.link": "Optional",
        "gen_ai.channel.name": "Required",
        "gen_ai.conversation.id": "Required",
        "gen_ai.conversation.item.link": "Optional",
        "gen_ai.execution.type": "Required",
        "gen_ai.input.messages": "Required",
        "gen_ai.operation.name": "Required (Set by the SDK)",
        "gen_ai.output.messages": "Required",
        "gen_ai.system": "Optional",
        "hiring.manager.id": "Optional",
        "operation.source": "Required (SDK sets a default value)",
        "server.address": "Required",
        "server.port": "Required",
        "session.id": "Optional",
        "session.description": "Optional",
        "tenant.id": "Required"
    },

Atributos ExecuteToolScope

A lista a seguir resume os atributos de telemetria necessários e opcionais registrados quando você inicia um ExecuteToolScope.

"attributes": {
        "correlation.id": "Optional",
        "gen_ai.agent.applicationid": "Required",
        "gen_ai.agent.description": "Optional",
        "gen_ai.agent.id": "Required",
        "gen_ai.agent.name": "Required",
        "gen_ai.agent.upn": "Required",
        "gen_ai.agent.user.id": "Required",
        "gen_ai.caller.client.ip": "Required",
        "gen_ai.channel.name": "Required",
        "gen_ai.conversation.id": "Required",
        "gen_ai.conversation.item.link": "Optional",
        "gen_ai.execution.type": "HumanToAgent",
        "gen_ai.operation.name": "Required (Set by the SDK)",
        "gen_ai.system": "Optional",
        "gen_ai.tool.arguments": "Required",
        "gen_ai.tool.call.id": "Required",
        "gen_ai.tool.description": "Optional",
        "gen_ai.tool.name": "Required",
        "gen_ai.tool.type": "Required",
        "operation.source": "Required (SDK sets a default value)",
        "server.address": "Required (if tool call is external)",
        "server.port": "Required (if tool call is external)",
        "session.id": "Optional",
        "session.description": "Optional",
        "tenant.id": "Required"
    },

Atributos InferenceScope

A lista a seguir resume os atributos de telemetria necessários e opcionais registrados quando você inicia um InferenceScope.

"attributes": {
        "correlation.id": "Optional",
        "gen_ai.agent.applicationid": "Required",
        "gen_ai.agent.description": "Optional",
        "gen_ai.agent.id": "Required",
        "gen_ai.agent.name": "Required",
        "gen_ai.agent.thought.process": "Optional",
        "gen_ai.agent.upn": "Required",
        "gen_ai.agent.user.id": "Required",
        "gen_ai.caller.client.ip": "Required",
        "gen_ai.channel.link": "Optional",
        "gen_ai.channel.name": "Required",
        "gen_ai.conversation.id": "Required",
        "gen_ai.conversation.item.link": "Optional",
        "gen_ai.execution.type": "Required",
        "gen_ai.input.messages": "Required",
        "gen_ai.operation.name": "Chat",
        "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",
        "hiring.manager.id": "Optional",
        "operation.source": "Required (SDK sets a default value)",
        "session.description": "Optional",
        "session.id": "Optional",
        "tenant.id": "Required"
    }

Teste seu agente com observabilidade

Depois de implementar a observabilidade no seu agente, teste para garantir que a telemetria está sendo capturada corretamente. Siga o guia de testes para configurar seu ambiente e então foque principalmente na seção Visualizar logs de observabilidade para validar que sua implementação de observabilidade está funcionando como esperado.