INTEGRITY Dokumentace

Trasování

Trasování agenta vám pomáhá pochopit, co agent dělal v každém kole, včetně volání modelu, běhů nástrojů a žádostí o schválení. Trasování použijte k prošetření neočekávaného chování, vyhledání pomalých operací a kontrole využití tokenů.

Aktivita agenta se zobrazuje spolu s událostmi runtime, jako jsou volání fetch, čtení KV a dotazy D1, v Trasy Workers.

Povolit trasování

Povolte trasování v konfiguraci Wrangler:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "observability": {
    "traces": {
      "enabled": true
    }
  }
}
[observability.traces]
enabled = true

Zobrazit aktivitu agenta

Otevřete Karta Agents ↗ v Cloudflare Dashboard, abyste zobrazili sledované agenty a podřízené agenty. Přehled u každého agenta zobrazuje jeho model, počet relací, počet běhů a celkové využití tokenů.

Relace je konverzace složená z jednoho nebo více kol. Kolo je jeden požadavek na agenta a jeho odpověď.

Dashboard Agents zobrazující agenty s celkovým počtem relací, běhů a tokenů

Vyberte agenta a zobrazte jeho trasování. Každé trasování obsahuje dobu trvání, rozpis tokenů a stav.

Detail agenta se záznamy nedávného trasování a celkovým počtem tokenů

Co agent udělal, můžete sledovat dvěma způsoby: Přehrávání Session a Trasování.

Přehrávání Session zobrazuje zaznamenanou konverzaci v průběhu jednotlivých kol, včetně zpráv, uvažování, volání nástrojů a aktivity podřízených agentů. To, co se zobrazí, závisí na vašem nastavení záznamu payloadu.

Přehrávání Session zobrazující zprávy, uvažování a volání nástrojů podřízených agentů

Trasování je vodopádové zobrazení operací provedených během jednoho kola. Ukazuje, kdy každá operace začala, jak dlouho trvala a která operace ji vyvolala.

Vodopádové zobrazení trasování s vnořenými spany agenta, modelu, nástroje a D1

Struktura trasování

Každé kolo vytvoří trasování složené ze spanů, jeden pro každou časovanou operaci:

invoke_agent {agent class}
├── chat {model}
└── execute_tool {tool}
    └── tool_approval {tool}

invoke_agent span pokrývá celé kolo. Volání modelu, běhy nástrojů a schválení se zobrazují jako vnořené spany. Práce podřízeného agenta se zobrazuje pod operací, která ji vyvolala.

Identita agenta

Spany agenta používají k identifikaci práce zobrazené v dashboardu tři pole:

Název agenta neodvozujte z požadavku, konverzace ani identifikátoru uživatele. Vzniklo by tak v dashboardu příliš mnoho odlišných názvů agentů.

Soukromí payloadu

Zprávy a nástrojové payloady mohou obsahovat osobně identifikovatelné údaje. Zaznamenávejte pouze payloady, které je bezpečné ukládat. Každá integrace řídí zaznamenávání payloadů jinak, proto to nakonfigurujte v příslušné Nastavení frameworku sekce.

Think a wrapAISDK() použít storeMessages k zaznamenávání vstupních a výstupních zpráv do chat spany. Používají storeTools k zaznamenávání argumentů a výsledků do execute_tool spany.

Nastavení frameworku

Ovládání trasování a payloadů závisí na integraci. Think a Flue instrumentují kola automaticky. Přímá volání AI SDK a vlastní harnessy vyžadují další nastavení.

Think

Think automaticky agenta instrumentuje a vyvolává standardní struktura spanu. Není vyžadováno žádné další nastavení trasování.

Ukládání payloadů

Think ve výchozím nastavení neukládá payloady zpráv ani nástrojů. Pokud je chcete zaznamenávat, přepište vlastnosti ve třídě agenta:

import { Think } from "@cloudflare/think";

export class MyAgent extends Think {
	storeMessages = true;
	storeTools = true;
}
import { Think } from "@cloudflare/think";

export class MyAgent extends Think<Env> {
	override storeMessages = true;
	override storeTools = true;
}

Flue

Flue v2+ ↗ také automaticky instrumentuje vašeho agenta a vysílá standardní struktura spanu. Není vyžadováno žádné další nastavení trasování.

Vyloučit payloady

Flue ve výchozím nastavení ukládá zprávy, systémové instrukce, definice nástrojů, argumenty a výsledky. Chcete-li jejich záznam zastavit, nastavte content na false:

import { instrument } from "@flue/runtime";
import { createCloudflareTracing } from "@flue/runtime/cloudflare";

instrument(createCloudflareTracing({ content: false }));
import { instrument } from "@flue/runtime";
import { createCloudflareTracing } from "@flue/runtime/cloudflare";

instrument(createCloudflareTracing({ content: false }));

AI SDK

Pro přímé AI SDK ↗ volání obalte jmenný prostor jednorázově:

import * as ai from "ai";
import { wrapAISDK } from "agents/observability/ai";

const tracedAI = wrapAISDK(ai);
import * as ai from "ai";
import { wrapAISDK } from "agents/observability/ai";

const tracedAI = wrapAISDK(ai);

wrapAISDK() podporuje AI SDK v6 a v7. Instrumentuje generateText, streamText, generateObject, a streamObject, čímž vytvoří invoke_agent nadřazený prvek dříve, než začne práce modelu a nástrojů.

Na rozdíl od Think nemá přímé volání AI SDK žádnou instanci Agent, ze které by bylo možné odvodit identitu v dashboardu. Zadejte pole identity agenta při každém volání.

Zahrnujte pouze kontext, který je bezpečné uchovávat. Nezahrnujte přihlašovací údaje, tokeny, uživatelský vstup ani jiné tajné údaje.

AI SDK v7

Použijte nativní pole telemetrie AI SDK v7 k poskytnutí identity. Můžete přidat i další skalární kontext, například tenant nebo trasu, aby bylo trasování snazší dotazovat:

await tracedAI.generateText({
	model,
	prompt: "Find an available appointment",
	runtimeContext: {
		agentId: "booking-agent-production",
		conversationId: "conversation-123",
		tenantId: "tenant-42",
	},
	telemetry: {
		functionId: "booking-agent",
		includeRuntimeContext: {
			agentId: true,
			conversationId: true,
			tenantId: true,
		},
	},
});
await tracedAI.generateText({
	model,
	prompt: "Find an available appointment",
	runtimeContext: {
		agentId: "booking-agent-production",
		conversationId: "conversation-123",
		tenantId: "tenant-42",
	},
	telemetry: {
		functionId: "booking-agent",
		includeRuntimeContext: {
			agentId: true,
			conversationId: true,
			tenantId: true,
		},
	},
});

Tím se mapuje functionId, agentId, a conversationId na gen_ai.agent.name, gen_ai.agent.id, a gen_ai.conversation.id. Ostatní zahrnuté skalární hodnoty používají cloudflare.agents.runtime_context.* namespace.

AI SDK v6

AI SDK v6 používá experimental_telemetry.metadata pro stejnou identitu a doplňková data spanu:

await tracedAI.generateText({
	model,
	prompt: "Find an available appointment",
	experimental_telemetry: {
		functionId: "booking-agent",
		metadata: {
			agentId: "booking-agent-production",
			conversationId: "conversation-123",
			tenantId: "tenant-42",
		},
	},
});
await tracedAI.generateText({
	model,
	prompt: "Find an available appointment",
	experimental_telemetry: {
		functionId: "booking-agent",
		metadata: {
			agentId: "booking-agent-production",
			conversationId: "conversation-123",
			tenantId: "tenant-42",
		},
	},
});

Doplňková skalární metadata používají cloudflare.agents.metadata.* namespace.

Ukládání payloadů

wrapAISDK() ve výchozím stavu neukládá obsah zpráv ani nástrojů. Chcete-li je zaznamenávat s AI SDK v6 nebo v7, předejte při obalování jmenného prostoru možnosti úložiště:

import * as ai from "ai";
import { wrapAISDK } from "agents/observability/ai";

const tracedAI = wrapAISDK(ai, {
	storeMessages: true,
	storeTools: true,
});
import * as ai from "ai";
import { wrapAISDK } from "agents/observability/ai";

const tracedAI = wrapAISDK(ai, {
	storeMessages: true,
	storeTools: true,
});

Vlastní harnessy

Pokud váš agent nepoužívá žádný z aktuálně podporovaných frameworků, instrumentujte ho pomocí Vlastní API pro spany Workers. Vytvořte invoke_agent span pro každé kolo, s chat spany pro volání modelu, execute_tool spany pro běhy nástrojů a tool_approval spany pro schválení.

Názvy spanů, atributy a příklady implementace najdete v Referenční implementace OpenTelemetry GenAI ↗. Přizpůsobte tyto příklady pro Workers custom spans API.

Přidání identity agenta

Přidejte tyto atributy do obou invoke_agent a chat spany, aby dashboard Agents mohl telemetrii přiřadit k agentovi a konverzaci:

Attribute invoke_agent span chat span
gen_ai.operation.name invoke_agent chat
gen_ai.agent.name Sdílený název agenta, například booking-agent Stejný název agenta
gen_ai.agent.id Stabilní identifikátor pro instanci agenta Stejné ID agenta
gen_ai.conversation.id Identifikátor konverzace, relace nebo vlákna Stejné ID konverzace, relace nebo vlákna

Ukládání payloadů

Pro vlastní spany přidejte atributy payloadu ručně. Použijte gen_ai.input.messages, gen_ai.output.messages, a gen_ai.system_instructions na spanech modelu. Použijte gen_ai.tool.call.arguments a gen_ai.tool.call.result na spanech nástrojů. Vlastní rozhraní API pro spany přijímá pouze skalární hodnoty atributů, proto strukturované payloady serializujte pomocí JSON.stringify(). Tyto hodnoty se zaznamenávají vždy, když je dané volání vzorkováno (sampled). Přidávejte jen takové payloady, které je bezpečné ukládat.

Export trasování

Atributy spanu se řídí Sémantické konvence OpenTelemetry pro generativní AI ↗, takže je může zpracovat jakýkoli nástroj, který čte data OpenTelemetry. Chcete-li odesílat trasování do externího cíle, nakonfigurovat koncový bod OpenTelemetry Protocol (OTLP) ve Workers Observability.

Ceny

Trasování agenta používá Trasování Workers a řídí se ceníkem Workers Observability.

Zobrazení Agents ukazuje operace vašeho agenta. Úplné trasování Workeru může obsahovat další spany z vnitřních částí SDK a dalších operací na úrovni Workeru. Chcete-li prozkoumat úplné trasování, vyberte Zobrazit v Observability.

Každý span se počítá jako jedna událost pozorovatelnosti, včetně spanů, které se nezobrazují v zobrazení Agents. Trasování je v beta verzi zdarma. Od 1. října 2026 bude trasování zahrnuto do stávajícího ceníku Workers Observability:

Úroveň Zahrnuté události Uchování
Workers Free 200,000 za den 3 dny
Workers Paid 20 milionů měsíčně ($0.60 za každý další milion) 7 dnů

Omezení

Další kroky

Diagnostické kanály

Přihlaste se k odběru strukturovaných událostí agenta pro změny stavu, plány, workflows a další.

Konfigurace

Nastavení a nasazení wrangler.jsonc.

Agents API

Kompletní referenční dokumentace API pro Agents SDK.