Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Untuk mengaktifkan observabilitas di Agent 365, gunakan Microsoft OpenTelemetry Distro. Distribusi ini menyediakan SDK observabilitas tunggal di seluruh Microsoft, mendukung Agent 365, Microsoft Foundry, Azure Monitor, dan banyak lagi. Pendekatan yang ada seperti dijelaskan dalam artikel ini tetap berfungsi tanpa perubahan yang memutus kompatibilitas. Untuk panduan migrasi berdasarkan bahasa, lihat panduan berikut.
- Panduan migrasi Python
- Panduan migrasi JavaScript/TypeScript
- Panduan migrasi .NET Untuk model data yang mendasarinya, identitas dan autentikasi, cakupan dan persetujuan, serta batasan—yang berlaku untuk setiap jalur integrasi—lihat Konsep observabilitas Agent 365.
Catatan
Observabilitas adalah salah satu tingkat kemampuan bertahap dalam Memulai pengembangan Agent 365 dan berlaku untuk semua jenis agen.
Untuk berpartisipasi dalam ekosistem Agent 365, integrasikan kemampuan Observabilitas Agent 365 ke dalam agen Anda. Observabilitas Agent 365 didasarkan pada OpenTelemetry (OTel) dan menyediakan kerangka kerja terpadu untuk mengambil telemetri secara konsisten dan aman di semua platform agen. Dengan mengimplementasikan komponen yang diperlukan ini, Anda memungkinkan admin TI memantau aktivitas agen Anda di Microsoft admin center dan memungkinkan tim keamanan menggunakan Defender dan Purview untuk kepatuhan dan deteksi ancaman.
Manfaat utama
- Visibilitas menyeluruh dari awal hingga akhir: Tangkap telemetri komprehensif untuk setiap eksekusi agen, termasuk sesi, pemanggilan alat, dan pengecualian, sehingga memberikan ketertelusuran penuh di seluruh platform.
- Kemampuan keamanan dan kepatuhan: Mengumpankan log audit terpadu ke Defender dan Purview, memungkinkan skenario keamanan tingkat lanjut dan pelaporan kepatuhan untuk agen Anda.
- Fleksibilitas lintas platform: Manfaatkan standar OTel dan dukung berbagai runtime serta platform seperti Copilot Studio, Foundry, dan kerangka kerja agen masa depan.
- Efisiensi operasional untuk admin: Sediakan observabilitas terpusat di pusat admin Microsoft 365, sehingga waktu pemecahan masalah berkurang dan tata kelola meningkat dengan kontrol akses berbasis peran untuk tim TI yang mengelola agen Anda.
Agen yang didukung
Jenis agen berikut ini mendukung observabilitas Agent 365:
- Agen berkemampuan Microsoft Agent 365: Gunakan SDK observabilitas untuk menginstrumentasi agen Anda.
- Agen engine kustom: Gunakan SDK observabilitas untuk menginstrumentasi agen Anda.
- Agen deklaratif: Observabilitas didukung secara bawaan. Tidak diperlukan implementasi SDK.
Penginstalan
Gunakan perintah-perintah ini untuk menginstal modul observabilitas untuk bahasa yang didukung oleh Agent 365.
Instal paket observabilitas inti dan runtime. Semua agen yang menggunakan Observabilitas Agent 365 memerlukan paket-paket ini.
pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime
Jika agen Anda menggunakan paket Microsoft/agents-hosting, instal paket integrasi hosting. Paket ini menyediakan middleware yang secara otomatis mengisi atribut baggage dan ruang lingkup dari TurnContext, serta mencakup caching token untuk eksportir observabilitas.
pip install microsoft-agents-a365-observability-hosting
Jika agen Anda menggunakan salah satu framework AI yang didukung, pasang ekstensi auto-instrumentasi yang sesuai untuk secara otomatis menangkap telemetri tanpa kode instrumentasi manual. Untuk detail konfigurasi, lihat Auto-instrumentation.
# 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
Konfigurasi
Gunakan pengaturan berikut untuk mengaktifkan dan menyesuaikan Observabilitas Agent 365 untuk agen Anda.
Atur ENABLE_A365_OBSERVABILITY_EXPORTER variabel lingkungan ke true untuk observabilitas. Pengaturan ini mengekspor log ke layanan dan mengharuskan token_resolver disediakan. Jika tidak, eksportir konsol digunakan.
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,
)
Token resolver dikecualikan dari logging ke konsol.
Anda dapat menyesuaikan perilaku eksportir dengan meneruskan sebuah instans Agent365ExporterOptions ke exporter_options. Ketika exporter_options disediakan, itu lebih diutamakan daripada parameter token_resolver dan 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,
)
Tabel berikut menjelaskan parameter opsional untuk configure().
| Parameter | Deskripsi | Default |
|---|---|---|
logger_name |
Nama logger Python yang digunakan untuk debugging dan output log konsol. | microsoft_agents_a365.observability.core |
exporter_options |
Sebuah instans Agent365ExporterOptions yang mengonfigurasi pemecah token dan kategori kluster bersama-sama. |
None |
suppress_invoke_agent_input |
Saat True, menekan pesan input pada InvokeAgent rentang. |
False |
Tabel berikut menjelaskan properti opsional untuk Agent365ExporterOptions.
| Properti | Deskripsi | Default |
|---|---|---|
use_s2s_endpoint |
Ketika True, menggunakan jalur titik akhir layanan ke layanan. |
False |
max_queue_size |
Ukuran maksimum antrean untuk prosesor batch. | 2048 |
scheduled_delay_ms |
Penundaan dalam milidetik antara batch ekspor. | 5000 |
exporter_timeout_ms |
Batas waktu dalam milidetik untuk operasi ekspor. | 30000 |
max_export_batch_size |
Ukuran batch maksimum untuk operasi ekspor. | 512 |
Atribut bagasi
Gunakan BaggageBuilder untuk menetapkan informasi kontekstual yang mengalir melalui semua rentang dalam permintaan.
SDK menerapkan SpanProcessor yang menyalin semua entri bagasi yang tidak kosong ke setiap rentang yang baru dimulai tanpa menimpa atribut yang sudah ada.
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
Untuk mengisi BaggageBuilder secara otomatis dari TurnContext, gunakan helper populate dalam paket microsoft-agents-a365-observability-hosting. Fungsi helper ini secara otomatis mengekstrak detail pemanggil, agen, penyewa, saluran, dan percakapan dari aktivitas.
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 bagasi
Jika agen Anda menggunakan paket integrasi hosting, daftarkan middleware bagasi untuk secara otomatis mengisi bagasi pada setiap permintaan yang masuk. Langkah ini menghilangkan kebutuhan untuk memanggil BaggageBuilder secara manual di setiap handler aktivitas.
Daftarkan BaggageMiddleware pada set middleware adaptor. Ini secara otomatis mengekstrak detail pemanggil, agen, penyewa, saluran, dan percakapan dari setiap TurnContext yang masuk, serta mengemas permintaan dalam lingkup baggage.
from microsoft_agents_a365.observability.hosting import BaggageMiddleware
adapter.use(BaggageMiddleware())
Sebagai alternatif, gunakan ObservabilityHostingManager untuk mengonfigurasi middleware Baggage bersama dengan fitur hosting lainnya:
from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions
options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)
Middleware melewatkan pengaturan bagasi untuk balasan asinkron (peristiwa ContinueConversation) untuk menghindari penimpaan bagasi yang sudah ditetapkan oleh permintaan asal.
Penyelesai token
Saat Anda menggunakan pengekspor Agent 365, Anda harus menyediakan fungsi penyelesai token yang mengembalikan token autentikasi.
Saat Anda menggunakan Agent 365 Observability SDK dengan kerangka kerja Agent Hosting, Anda dapat menghasilkan token dengan memanfaatkan TurnContext yang berasal dari aktivitas agen.
Cuplikan berikut menunjukkan cara menghasilkan token dengan memanfaatkan microsoft_agents.hosting.core SDK. Token autentikasi yang dihasilkan di sini digunakan untuk mengekspor span ke layanan penyerapan A365. Agen dapat menghasilkan token sendiri, misalnya dengan menggunakan Pustaka Autentikasi Microsoft (MSAL), tetapi agen ini perlu memastikan token memiliki cakupan observabilitas.
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
Untuk agen yang dibuat dengan A365 CLI yang menggunakan rekan tim AI dan paket Microsoft Agent 365 Observability Hosting Library, gunakan AgenticTokenCache untuk menangani penyimpanan cache token secara otomatis. Daftarkan token sekali untuk setiap agen dan penyewa melalui penangan aktivitas, dan teruskan cache.get_observability_token sebagai token_resolver dalam konfigurasi observabilitas Anda.
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(),
)
Instrumentasi otomatis
Instrumentasi otomatis secara otomatis mendengarkan sinyal telemetri dari kerangka kerja agentik (SDK) yang ada untuk pelacakan dan meneruskannya ke layanan observabilitas Agent 365. Fitur ini menghilangkan kebutuhan bagi pengembang untuk menulis kode pemantauan secara manual, menyederhanakan penyiapan, dan memastikan pelacakan performa yang konsisten.
Penting
Instrumentasi otomatis hanya mengisi atribut OTel standar. Anda harus menambahkan atribut khusus Microsoft melalui BaggageBuilder. Untuk melihat atribut mana yang hilang, validasi output span konsol Anda terhadap log penyimpanan untuk set diff.
Beberapa SDK dan platform mendukung instrumentasi otomatis:
| Platform | SDK/Kerangka Kerja yang Didukung |
|---|---|
| .NET | Kernel Semantik, OpenAI, Agent Framework |
| Python | Kernel Semantik, OpenAI, Agent Framework, LangChain |
| Node.js | OpenAI, LangChain |
Catatan
Dukungan untuk instrumentasi otomatis bervariasi menurut platform dan implementasi SDK.
Kernel Semantik
Instrumentasi otomatis memerlukan penggunaan baggage builder. Atur ID agen dan ID penyewa dengan menggunakan BaggageBuilder.
Instal paket.
pip install microsoft-agents-a365-observability-extensions-semantic-kernel
Konfigurasikan observabilitas.
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
Instrumentasi otomatis memerlukan penggunaan baggage builder. Atur ID agen dan ID penyewa dengan menggunakan BaggageBuilder.
Instal paket.
pip install microsoft-agents-a365-observability-extensions-openai
Konfigurasikan observabilitas.
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
Agent Framework
Instrumentasi otomatis memerlukan penggunaan baggage builder. Atur ID agen dan ID penyewa dengan menggunakan BaggageBuilder.
Instal paket.
pip install microsoft-agents-a365-observability-extensions-agent-framework
Konfigurasikan observabilitas.
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()
Kerangka Kerja LangChain
Instrumentasi otomatis membutuhkan penggunaan baggage builder. Atur ID agen dan ID penyewa dengan menggunakan BaggageBuilder.
Instal paket.
pip install microsoft-agents-a365-observability-extensions-langchain
Konfigurasikan observabilitas.
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
Instrumentasi Manual
Gunakan Agent 365 Observability SDK untuk memahami cara kerja internal agen.
SDK ini menyediakan cakupan yang dapat Anda mulai: InvokeAgentScope, ExecuteToolScope, InferenceScope, dan OutputScope.
Pemanggilan agen
Gunakan cakupan ini di awal proses agen Anda. Dengan menggunakan cakupan pemanggilan agen, Anda dapat mengambil properti seperti agen saat ini yang dipanggil, data pengguna agen, dan lainnya.
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(...)
Eksekusi alat
Contoh berikut menunjukkan cara menambahkan pelacakan observabilitas ke eksekusi alat agen Anda. Pelacakan ini mengambil telemetri untuk tujuan pemantauan dan audit.
from microsoft_agents_a365.observability.core import (
ExecuteToolScope,
ToolCallDetails,
Request,
ServiceEndpoint,
)
# Use the same agent_details and request instances from the InvokeAgentScope example above
tool_details = ToolCallDetails(
tool_name="summarize",
tool_type="function",
tool_call_id="tc-001",
arguments="{'text': '...'}",
description="Summarize provided text",
endpoint=ServiceEndpoint(hostname="tools.contoso.com", port=8080),
)
with ExecuteToolScope.start(request, tool_details, agent_details) as scope:
result = run_tool(tool_details)
scope.record_response(result)
Inferensi
Contoh berikut menunjukkan cara menginstrumentasikan panggilan inferensi model AI dengan pelacakan observabilitas untuk mengambil penggunaan token, detail model, dan metadata respons.
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)
Output
Gunakan cakupan ini untuk skenario asinkron di mana InvokeAgentScope, ExecuteToolScope, atau InferenceScope tidak dapat mengambil data output secara sinkron. Mulai OutputScope sebagai rentang turunan untuk merekam pesan ouput akhir setelah cakupan induk selesai.
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
Validasi secara lokal
Untuk memverifikasi bahwa Anda berhasil terintegrasi dengan SDK observabilitas, periksa log konsol yang dihasilkan oleh agen Anda dan log dari SDK observabilitas.
Atur variabel lingkungan ENABLE_A365_OBSERVABILITY_EXPORTER ke false. Pengaturan ini mengekspor span (jejak) ke konsol.
Untuk menyelidiki kegagalan ekspor, aktifkan pengelogan verbose dengan mengatur ENABLE_A365_OBSERVABILITY_EXPORTER ke true dan mengonfigurasi pengelogan debug di awal aplikasi Anda:
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)
Pesan log kunci:
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.
Melihat log yang diekspor
Untuk melihat telemetri agen di Microsoft Purview atau Microsoft Defender, pastikan persyaratan berikut terpenuhi:
- Microsoft Purview: Auditing harus diaktifkan untuk organisasi Anda. Untuk petunjuk, lihat Mengaktifkan atau menonaktifkan audit.
-
Microsoft Defender: Perburuan tingkat lanjut harus dikonfigurasi untuk mengakses tabel
CloudAppEvents. Untuk informasi selengkapnya, lihat tabel CloudAppEvents di skema perburuan tingkat lanjut.
Validasi untuk publikasi di toko
Penting
Untuk validasi toko yang sukses, agen Anda harus mengimplementasikan cakupan InvokeAgentScope, InferenceScope, dan ExecuteToolScope. Ketiga cakupan ini diperlukan untuk publikasi di toko.
Sebelum menerbitkan, gunakan log konsol untuk memvalidasi integrasi observabilitas Anda untuk agen dengan mengimplementasikan cakupan invoke agent, execute tool, inference, dan output yang diperlukan. Kemudian bandingkan log agen Anda dengan daftar atribut berikut untuk memastikan semua atribut yang diperlukan tersedia. Catat atribut pada setiap cakupan atau melalui baggage builder, dan sertakan atribut opsional sesuai pertimbangan Anda.
Untuk informasi selengkapnya tentang persyaratan penerbitan toko, lihat pedoman validasi toko.
InvokeAgentScope atribut
Daftar berikut ini merangkum atribut telemetri wajib dan opsional yang direkam saat Anda memulai 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"
}
ExecuteToolScope atribut
Daftar berikut ini merangkum atribut telemetri wajib dan opsional yang direkam saat Anda memulai 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"
}
InferenceScope atribut
Daftar berikut ini merangkum atribut telemetri wajib dan opsional yang direkam saat Anda memulai 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"
}
OutputScope atribut
Daftar berikut ini merangkum atribut telemetri wajib dan opsional yang direkam saat Anda memulai OutputScope. Gunakan cakupan ini untuk skenario asinkron di mana cakupan induk tidak dapat mengambil data output secara sinkron.
"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"
}
Menguji agen dengan observabilitas
Setelah Anda menerapkan observabilitas di agen Anda, uji untuk memastikan bahwa agen tersebut mengambil telemetri dengan benar. Ikuti panduan pengujian untuk menyiapkan lingkungan Anda. Kemudian, fokuskan terutama pada bagian Lihat log observabilitas untuk memvalidasi bahwa implementasi observabilitas Anda berfungsi seperti yang diharapkan.
Verifikasi:
- Buka:
https://admin.cloud.microsoft/#/agents/all - Pilih agen Anda > Aktivitas
- Anda melihat sesi dan panggilan alat
Pemecahan masalah
Bagian ini menjelaskan masalah umum saat menerapkan dan menggunakan observabilitas.
| Masalah | Deskripsi |
|---|---|
| Data observabilitas tidak muncul | Tidak ada telemetri yang terlihat karena ekspor tidak diaktifkan, konfigurasi salah, atau resolusi token gagal. |
| ID penyewa atau ID agen tidak ada - rentang dilewati | Span dibuang sebelum diekspor ketika atribut identitas yang diperlukan untuk partisi hilang. |
| Kegagalan resolusi token - ekspor dilewati atau tidak diizinkan | Permintaan ekspor gagal atau dilewatkan saat resolver tidak mengembalikan token atau mengalami pengecualian. |
| HTTP 401 Tidak Sah | Autentikasi berhasil secara sintaksis tetapi token tidak valid untuk penyerapan karena cakupan, jenis, atau kedaluwarsa. |
| HTTP 403 Forbidden | Akses ditolak karena kesenjangan lisensi penyewa atau izin observabilitas yang hilang. |
| HTTP 403 Forbidden - Ketidakcocokan ID Agen | Permintaan ditolak ketika identitas agen di URL tidak cocok dengan identitas yang diwakili oleh token. |
| Kesalahan HTTP 429 atau 5xx - Kesalahan sementara | Pembatasan sementara atau kegagalan sisi layanan dapat menyebabkan ekspor terhenti dan mungkin memerlukan penyesuaian percobaan ulang. |
| Batas waktu ekspor | Batch telemetri melebihi jendela batas waktu yang dikonfigurasi karena latensi jaringan atau responsivitas titik akhir. |
| Ekspor berhasil tetapi telemetri tidak muncul di Defender atau Purview | Penyerapan selesai, tetapi visibilitas hilir tertunda atau diblokir oleh prasyarat produk. |
Kiat
Panduan Pemecahan Masalah Agent 365 berisi rekomendasi pemecahan masalah tingkat tinggi, praktik terbaik, dan tautan ke konten pemecahan masalah untuk setiap bagian dari siklus hidup pengembangan Agent 365.
Data observabilitas tidak muncul
Gejala:
- Agen sedang berjalan
- Tidak ada telemetri di pusat admin
- Tidak dapat melihat aktivitas agen
Akar penyebab:
- Observabilitas tidak diaktifkan
- Kesalahan konfigurasi
- Masalah pada token resolver
Solusi: Coba langkah-langkah berikut untuk menyelesaikan masalah:
Verifikasi bahwa exporter observabilitas diaktifkan
Anda harus mengaktifkan eksportir Agent 365 secara eksplisit. Jika dinonaktifkan, SDK akan kembali menggunakan pengekspor konsol dan telemetri tidak dikirim ke layanan. Untuk detail konigurasi, lihat Konfigurasi.
Periksa konfigurasi token resolver
Eksportir memerlukan token resolver yang valid yang mengembalikan token pembawa untuk setiap permintaan ekspor. Jika token resolver tidak ada atau mengembalikan
null, ekspor akan dilewati secara diam-diam. Pastikan kode Anda mengimplementasikan penyelesai token dengan benar. Untuk informasi lebih lanjut, lihat Penyelesai token.Periksa log untuk kesalahan
Aktifkan pengelogan verbose dan gunakan perintah
az webapp log tailuntuk mencari kesalahan terkait observabilitas di log. Untuk detail tentang cara mengaktifkan pengelogan di setiap platform, lihat Validasi secara lokal.# Look for observability-related errors az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"Verifikasi ekspor telemetri
Pastikan telemetri dihasilkan dan diekspor sesuai harapan.
- Tambahkan pengekspor konsol dan periksa apakah telemetri dihasilkan secara lokal. Untuk detail tentang cara menggunakan pengekspor konsol dan memvalidasi output, lihat Validasi secara lokal.
ID penyewa atau ID agen hilang — rentang diabaikan
Gejala: Sistem secara diam-diam mengabaikan rentang dan tidak pernah mengekspornya. Beberapa SDK mencatat jumlah span yang dilewati atau menampilkan pesan seperti "Tidak ada span dengan identitas penyewa/agen." SDK lain membuangnya tanpa mencatat di log.
Resolution:
- Sebelum diekspor, SDK membagi span berdasarkan identitas penyewa dan agen. Sistem menghilangkan span yang tidak memiliki ID penyewa atau ID agen dan tidak pernah mengirimkannya ke layanan.
- Pastikan
BaggageBuildertelah disiapkan dengan ID penyewa dan ID agen sebelum membuat rentang. Nilai ini diteruskan melalui konteks OpenTelemetry dan melekat pada semua rentang yang dibuat dalam cakupan bagasi. Untuk API khusus platform, lihat Atribut bagasi. - Pastikan aktivitas
TurnContextmemiliki penerima yang valid dengan identitas agen jika Anda menggunakan middleware baggage atau pembantu konteks turn dari paket integrasi hosting untuk mengisi ID-ID tersebut.
Kegagalan resolusi token — ekspor dilewati atau tidak diizinkan
Gejala: Token resolver mengembalikan null atau melempar kesalahan. Bergantung pada SDK, ekspor dapat dilewati sepenuhnya atau permintaan dikirim tanpa header otorisasi dan gagal dengan HTTP 401.
Resolution:
- Penyelesai token diperlukan saat inisialisasi. Jika tidak tersedia, eksportir melempar kesalahan saat memulai. Verifikasi bahwa token resolver telah disediakan dan mengembalikan token pembawa yang valid.
- Pastikan ID penyewa dan ID agen yang benar digunakan untuk
BaggageBuilder, karena nilai-nilai ini akan diteruskan ke penyelesai token. - Untuk agen yang di-host di Azure, pastikan Identitas Terkelola memiliki izin API yang diperlukan untuk cakupan observabilitas.
HTTP 401 Tidak Sah
Gejala: Ekspor gagal dengan HTTP 401. Eksportir tidak mencoba ulang kesalahan ini.
Resolution:
- Verifikasi bahwa audiens token sesuai dengan cakupan titik akhir observabilitas.
- Periksa apakah token resolver tidak mengembalikan token pengguna delegasi, token untuk audiens yang salah, atau token kedaluwarsa.
Pelarangan HTTP 403
Gejala: Ekspor gagal dengan HTTP 403. Eksportir tidak mencoba ulang kesalahan ini.
Penyebab utama: Kesalahan HTTP 403 dapat memiliki berbagai penyebab. Periksa resolusi berikut secara berurutan.
Resolution:
Lisensi hilang — Verifikasi bahwa penyewa Anda memiliki salah satu lisensi berikut yang ditetapkan di Pusat admin Microsoft 365:
- Uji - Microsoft 365 E7
- Microsoft 365 E7
- Microsoft Agent 365 Frontier
Izin
Agent365.Observability.OtelWritehilang — Jika Anda baru saja memperbarui paket observability Anda, Anda harus memberikan izin ini. Lihat catatan penting di bagian berikutnya.
Penting
Agen yang sudah ada yang memutakhirkan ke versi paket ini memerlukan langkah tambahan
Langkah ini hanya berlaku jika Anda memutakhirkan agen yang ada. Instalasi agen baru tidak memerlukan langkah ini. Jika Anda memutakhirkan ke versi paket berikutnya atau yang lebih baru, Anda harus memberikan izin Agent365.Observability.OtelWrite baru ke identitas Anda (Identitas Terkelola atau pendaftaran aplikasi). Tanpa izin ini, ekspor telemetri gagal dengan HTTP 403.
| Platform | Versi minimum yang memerlukan langkah ini |
|---|---|
| .NET | 0.3-beta |
| Node.js | 0.2.0-preview.1 |
| Python | 0.3.0 |
Memberikan izin dapat dilakukan dengan menggunakan salah satu opsi berikut.
Opsi A — Agent 365 CLI (memerlukan akun Administrator Global; jalankan dari direktori proyek agent yang berisi a365.config.json, atau gunakan --agent-name)
a365 setup permissions bot
Atau, tanpa file konfigurasi:
a365 setup permissions bot --agent-name "<agent-name>"
Perintah ini memberikan semua izin yang belum diberikan pada blueprint, termasuk cakupan Observability.
Opsi B — Portal Entra (file config tidak diperlukan; memerlukan akses Administrator Global ke pendaftaran aplikasi blueprint)
- Buka portal Entra>Pendaftaran Aplikasi> pilih aplikasi Blueprint Anda.
- Buka Izin API>Tambah izin>API yang digunakan organisasi saya> cari
9b975845-388f-4429-889e-eab1ef63949c. - Pilih Izin yang didelegasikan> periksa
Agent365.Observability.OtelWrite>Tambah izin. - Ulangi langkah 2–3, kali ini pilih Izin aplikasi>, centang
Agent365.Observability.OtelWrite>Tambahkan izin. - Klik Berikan persetujuan admin dan konfirmasi.
Baik Agent365.Observability.OtelWrite (Didelegasikan) maupun Agent365.Observability.OtelWrite (Aplikasi) harus menunjukkan status Granted.
HTTP 403 Forbidden — Ketidakcocokan ID Agen
Gejala: Ekspor gagal dengan HTTP 403 dan pesan server yang mirip dengan 403 Forbidden dengan agent-ID-mismatch gagal memanggil titik akhir pelacakan Agent 365.
Akar penyebab: Kesalahan ini terjadi ketika Anda menggunakan ID klien blueprint bukan ID klien instans agen saat mengatur detail agen. ID agen pada URL ekspor tidak sesuai dengan identitas yang diotorisasi oleh token, sehingga titik akhir pelacakan menolak permintaan tersebut.
Resolution:
- Verifikasi apakah ID penyewa telah ditambahkan ke daftar penyewa yang diizinkan Agent 365.
- Atur detail agen dengan ID klien instans agen (bukan ID klien blueprint).
- Verifikasi URL ekspor yang dihasilkan – URL tersebut dicatat jika Anda mengaktifkan logger. Pastikan ID agen pada URL sesuai dengan ID klien instans agen.
- Untuk mengaktifkan pembuatan log diagnostik per SDK, lihat Validasi secara lokal.
Kesalahan HTTP 429 atau 5xx - Kesalahan sementara
Gejala: Ekspor gagal dengan kode status HTTP sementara seperti 429 atau 5xx.
Resolution:
- Kesalahan ini biasanya bersifat sementara dan akan teratasi sendiri. SDK Python dan JavaScript secara otomatis melakukan percobaan ulang pada kode status HTTP 408, 429, dan 5xx hingga tiga kali dengan backoff eksponensial. SDK .NET tidak melakukan percobaan ulang secara otomatis.
- Jika kesalahan berlanjut, periksa dasbor kesehatan layanan.
- Pertimbangkan untuk mengurangi frekuensi ekspor dengan memperpanjang waktu tunda terjadwal antar-batch atau memperbesar ukuran batch ekspor maksimum. Untuk opsi konfigurasi per platform, lihat tabel
Agent365ExporterOptionsdi Konfigurasi.
Batas waktu ekspor
Gejala: Batas waktu upaya ekspor.
Resolution:
- Periksa konektivitas jaringan ke titik akhir observabilitas.
- Pengaturan batas waktu default berbeda untuk setiap platform. Batas waktu default permintaan HTTP adalah 30 detik. Beberapa SDK juga memiliki batas waktu pengekspor keseluruhan terpisah yang mencakup seluruh siklus ekspor, termasuk percobaan ulang. Untuk properti dan default yang tepat per platform, lihat tabel
Agent365ExporterOptionsdi Konfigurasi. - Jika waktu habis sering terjadi, tingkatkan nilai batas waktu yang relevan pada pengaturan pengekspor Anda.
Ekspor berhasil tetapi telemetri tidak muncul di Defender atau Purview
Gejala: Log menunjukkan ekspor yang berhasil tetapi telemetri tidak muncul di Microsoft Defender atau Microsoft Purview.
Resolution:
- Pastikan Anda memenuhi prasyarat untuk melihat log yang diekspor. Untuk Purview, audit harus diaktifkan. Untuk Defender, Anda harus mengonfigurasi perburuan lanjutan. Untuk informasi selengkapnya, lihat Melihat log diekspor.
- Telemetri dapat membutuhkan beberapa menit untuk muncul setelah ekspor berhasil. Tunggu hingga data muncul sebelum menyelidiki lebih lanjut.
Untuk informasi lebih lanjut tentang pengujian observabilitas, lihat:
Konten terkait
- Konsep observabilitas Agent 365 - Alur data, model identitas, autentikasi, cakupan, dan batas yang berlaku untuk setiap jalur integrasi.
- Referensi atribut observabilitas Agent 365 - Skema atribut rentang kanonik yang harus sesuai dengan setiap rentang yang diserap ke Agent 365.
- Microsoft OpenTelemetry Distro - SDK terpadu yang direkomendasikan untuk integrasi baru