Partager via


Observabilité de l’assistant

Important

Vous devez faire partie du programme Frontier en version préliminaire pour obtenir un accès anticipé à Microsoft Agent 365. Frontier vous connecte directement aux dernières innovations d’IA de Microsoft. Les versions préliminaires Frontier sont soumises aux conditions existantes de vos contrats clients qui régissent les versions préliminaires. Comme ces fonctionnalités sont encore en cours de développement, leur disponibilité et leurs capacités peuvent évoluer au fil du temps.

Pour participer à l’écosystème Agent 365, vous devez ajouter des fonctionnalités d’observabilité Agent 365 à votre assistant. L’observabilité d’Agent 365 s’appuie sur OpenTelemetry (OTel) et fournit une infrastructure unifiée pour capturer de manière cohérente et sécurisée les données de télémétrie sur toutes les plateformes d’assistant. En implémentant ce composant requis, vous allez autoriser les administrateurs informatiques à surveiller l’activité de votre assistant dans le Centre d’administration Microsoft (MAC) et autoriser les équipes de sécurité à utiliser Defender et Purview pour la conformité et la détection des menaces.

Principaux avantages

  • Visibilité de bout en bout : capturez des données de télémétrie complètes pour chaque appel d’assistant, y compris les sessions, les appels d’outils et les exceptions, ce qui vous donne une traçabilité complète entre les plateformes.
  • Activation de la sécurité & de la conformité : alimentez les journaux d’audit unifiés dans Defender et Purview, en actionnant des scénarios de sécurité avancée et les rapports de conformité pour votre assistant.
  • Flexibilité inter-plateformes : créez des normes OTel et prenez en charge différents environnements d’exécution et diverses plateformes comme Copilot Studio, Foundry et les futurs frameworks d’assistant.
  • Efficacité opérationnelle pour les administrateurs : fournissez une observabilité centralisée dans MAC, ce qui réduit le temps de résolution des problèmes et améliore la gouvernance avec des contrôles d’accès en fonction du rôle pour les équipes informatiques qui gèrent votre assistant.

Installation

Utilisez ces commandes pour installer les modules d’observabilité pour les langues prises en charge par Agent 365.

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

Configuration

Utilisez les paramètres suivants pour activer et personnaliser l’observabilité de l’Agent 365 pour votre agent.

Les variables d’environnement requises pour l’observabilité sont les suivantes :

Variable d’environnement Description
ENABLE_OBSERVABILITY=true Indicateur pour activer/désactiver le suivi. Par défaut false
ENABLE_A365_OBSERVABILITY_EXPORTER=true True Exporte les journaux vers notre service. Sinon, revient à l’exportateur de 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,
)

Exclure le programme de résolution de jetons pour se connecter à la console.

Attributs de bagage

Permet BaggageBuilder de définir des informations contextuelles qui transitent par toutes les étendues d’une requête. Le kit de développement logiciel (SDK) implémente une SpanProcessor et copie de toutes les entrées de bagages sans avoir à remplacer les attributs existants.

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

Programme de résolution de jetons

Lorsque vous utilisez l’exportateur Agent 365, vous devez fournir une fonction de programme de résolution de jeton qui renvoie le jeton d’authentification. Lorsque vous utilisez le kit de développement logiciel (SDK) de l’observabilité d’Agent 365 avec l’infrastructure d’hébergement de l’assistant, vous pouvez générer des jetons à l’aide TurnContext des activités de l’assistant

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

Auto-instrumentation

L’instrumentation automatique écoute automatiquement les signaux de télémétrie existants des frameworks agentiques (SDK) pour les traces et les transfère au service d’observabilité Agent 365. Cela élimine la nécessité pour les développeurs d’écrire manuellement du code de surveillance, de simplifier la configuration et de garantir un suivi des performances cohérent.

L’instrumentation automatique est prise en charge sur plusieurs kits de développement logiciel et plateformes :

Plateforme Kits de développement logiciel (SDK) / Frameworks pris en charge
.NET Noyau sémantique, OpenAI, cadre d’agents
Python Noyau sémantique, OpenAI, Agent Framework, LangChain
Node.js OpenAI

Note

La prise en charge de l’instrumentation automatique varie selon l’implémentation de la plateforme et du SDK.

Noyau sémantique

L’instrumentation automatique nécessite l’utilisation du générateur de bagages. Définissez l’identifiant de l’assistant et l’identifiant de locataire à l’aide de BaggageBuilder.

Installer le package

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

Configurer l’observabilité

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

L’instrumentation automatique nécessite l’utilisation du générateur de bagages. Définissez l’identifiant de l’assistant et l’identifiant de locataire à l’aide de BaggageBuilder.

Installez le package .

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

Configurez l’observabilité.

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

Cadre d’agent

L’instrumentation automatique nécessite l’utilisation du générateur de bagages. Définissez l’identifiant de l’assistant et l’identifiant de locataire à l’aide de BaggageBuilder.

Installer le package

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

Configurer l’observabilité

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

Cadre LangChain

L’instrumentation automatique nécessite l’utilisation du générateur de bagages. Définissez l’identifiant de l’assistant et l’identifiant de locataire à l’aide de BaggageBuilder.

Installez le package .

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

Configurer l’observabilité

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

Instrumentation manuelle

Le kit de développement logiciel (SDK) d’observabilité d’Agent 365 peut être utilisé pour comprendre le fonctionnement interne de l’assistant. Le kit de développement logiciel (SDK) fournit trois étendues qui peuvent être démarrées : InvokeAgentScope, ExecuteToolScope et InferenceScope.

Appel de l’assistant

Cette étendue doit être utilisée au début du processus de votre assistant. Avec l’étendue de l’assistant Invoke, capturez des propriétés telles que l’assistant actuel appelé, les données utilisateur de l’assistant, 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(...)

Exécution de l’outil

Les exemples suivants montrent comment instrumenter l’exécution de l’outil de votre assistant avec le suivi de l’observabilité pour capturer les données de télémétrie à des fins de surveillance et d’audit.

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)

Inférence

Les exemples suivants montrent comment instrumenter les appels d’inférence de modèle IA avec le suivi de l’observabilité pour capturer l’utilisation des jetons, les détails du modèle et les métadonnées de réponse.

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

Valider localement

Pour vérifier que vous avez réussi à intégrer avec le SDK d’observabilité, examinez les journaux de la console générés par votre agent.

Définissez la variable d’environnement ENABLE_A365_OBSERVABILITY_EXPORTER sur false. Ces exportations s’étendent (traces) à la console.

Exemples de journaux

Les grumes peuvent avoir un aspect légèrement différent selon la plateforme.

Journal Invoke Agent span

Cet exemple illustre un span typique d’agent d’invokation imprimé par l’exportateur de la console lorsque la validation locale est activée.

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

Journal console pour l’outil d’exécution

Cet exemple montre une span typique d’outil d’exécution émis par l’exportateur de la console lors de la validation locale.

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

Plage d’inférence des logarthiques de console

Cet exemple démontre une sortie typique de span d’inférence provenant de l’exportateur de console utilisé pour la validation locale.

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

Exigences d’observabilité

Les administrateurs informatiques utilisent les données que vous saisissez dans votre code pour surveiller l’activité de votre agent. Des données incomplètes signifient que les bénéfices de l’observabilité ne sont pas pleinement réalisés. Les agents doivent fournir les données requises pour recevoir tous les bénéfices attendus. Un processus de validation vérifiera l’existence de ces données.

En télémétrie, il existe des concepts de portée ou de contexte. Chaque opération effectuée par votre agent existe dans un champ d’action différent. Les données doivent être incluses dans les BaggageScope attributs créés en utilisant les bagages, ou dans les champs individuels décrits dans l’Instrumentation Manuelle.

Pour valider votre implémentation, suivez les instructions pour valider localement afin de générer des journaux de console pour votre instrumentation. Ensuite, consultez la section [Valider pour les attributs requis](#validate-pour-attributs rejoués) pour identifier quels attributs sont requis et lesquels sont optionnels. Tous les attributs requis doivent être définis pour réussir la validation.

Examinez les propriétés et valeurs de paramètre requises décrites pour ces classes :

  • Les propriétés définies à l’aide de la classe BaggageBuilder peuvent être définies ou remplacées par les propriétés des champs respectifs.

  • Définissez les propriétés dans le tableau suivant en utilisant la méthode InvokeAgentScope.start.

    Data Description
    invoke_agent_details.details.agent_id Identificateur unique de l’agent IA
    invoke_agent_details.details.agent_name Nom lisible par l’homme de l’agent IA
    invoke_agent_details.details.agent_auid ID utilisateur de l’agent (AUID)
    invoke_agent_details.details.agent_upn Nom d’utilisateur principal de l’agent (UPN)
    invoke_agent_details.details.agent_blueprint_id Id du blueprint/de l’application de l’agent
    invoke_agent_details.details.tenant_id ID de locataire de l’agent
    invoke_agent_details.details.conversation_id Identificateur de la conversation ou de la session
    invoke_agent_details.endpoint Point de terminaison de l’appel de l’agent
    tenant_details.tenant_id Identificateur unique du locataire
    request.content Le contenu de la charge utile envoyé à l’agent pour invocation
    request.execution_type Type d’invocation indiquant l’origine de la requête (par exemple, HumanToAgent ou AgentToAgent)
    caller_details.caller_id Identificateur unique de l’appelant
    caller_details.caller_upn Nom d’utilisateur principal (UPN) de l’appelant
    caller_details.caller_user_id ID utilisateur de l’appelant
    caller_details.tenant_id ID de locataire de l’appelant
  • Définissez les propriétés dans la table suivante en utilisant la méthode ExecuteToolScope.start.

    Data Description
    details.tool_name Nom de l’outil en cours d’exécution
    details.arguments Arguments/paramètres de l’outil
    details.tool_call_id Identificateur unique de l’appel d’outil
    details.tool_type Type de l’outil en cours d’exécution
    details.endpoint Si un appel d’outil externe est effectué
    agent_details.agent_id Identificateur unique de l’agent IA
    agent_details.agent_name Nom lisible par l’homme de l’agent IA
    agent_details.agent_auid L’identifiant utilisateur de l’agent
    agent_details.agent_upn Nom d’utilisateur principal de l’agent (UPN)
    agent_details.agent_blueprint_id Id du blueprint/de l’application de l’agent
    agent_details.tenant_id Identifiant locataire pour l’agent.
    agent_details.conversation_id L’identifiant de conversation pour l’invocation de l’agent.
    tenant_details.tenant_id Identifiant locataire pour l’agent.
  • Définissez les propriétés dans la table suivante en utilisant la méthode InferenceScope.start.

    Data Description
    details.operationName Nom/type de l’opération pour l’inférence
    details.model Nom/identificateur du modèle
    details.providerName Le nom du fournisseur
    agent_details.agent_id Identificateur unique de l’agent IA
    agent_details.agent_name Nom lisible par l’homme de l’agent IA
    agent_details.agent_auid ID utilisateur de l’agent (AUID)
    agent_details.agent_upn Nom d’utilisateur principal de l’agent (UPN)
    agent_details.agent_blueprint_id Id du blueprint/de l’application de l’agent
    agent_details.tenant_id Identificateur unique du locataire
    agent_details.conversation_id Identificateur de la conversation ou de la session
    tenant_details.tenant_id Identificateur unique du locataire
    request.content Le contenu de la charge utile envoyé à l’agent pour inférence
    request.execution_type Type d’invocation indiquant l’origine de la requête (par exemple, HumanToAgent ou AgentToAgent)
    request.source_metadata Représenter les informations du canal

Validation pour l’édition en magasin

Utilisez les journaux de la console pour valider votre intégration d’observabilité pour l’agent avant de publier en implémentant les champs d’invoke agent, d’outil d’exécution et d’inférence requis. Ensuite, comparez les journaux de votre agent avec les listes d’attributs suivantes pour vérifier que tous les attributs requis sont présents ; Capturez les attributs sur chaque oscilloscope ou via le Baggage Builder, et incluez des attributs optionnels à votre convenance.

Pour plus d’informations sur les exigences de publication en magasin, consultez les directives de validation des magasins.

Attributs InvokeAgentScope

La liste suivante résume les attributs de télémétrie requis et optionnels enregistrés lorsque vous commencez un InvokeAgentScopefichier .

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

Attributs ExecuteToolScope

La liste suivante résume les attributs de télémétrie requis et optionnels enregistrés lorsque vous commencez un ExecuteToolScopefichier .

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

Attributs InferenceScope

La liste suivante résume les attributs de télémétrie requis et optionnels enregistrés lorsque vous commencez un InferenceScopefichier .

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

Tester votre assistant avec l’observabilité

Après avoir implémenté l’observabilité dans votre agent, testez que la télémétrie est bien capturée. Suivez le guide de test pour configurer votre environnement, puis concentrez-vous principalement sur la section Afficher les journaux d’observabilité pour valider que votre implémentation d’observabilité fonctionne comme prévu.