INTEGRITY Dokumentace

Příklad Code Mode

Tento příklad ukazuje, jak používat @cloudflare/codemode ↗ knihovnu s Agents SDK ↗ k vytvoření agenta, kde LLM píše kód pro orchestraci volání nástrojů místo jejich postupného volání jedno po druhém. Tento přístup, nazývaný Code Mode ↗, snižuje spotřebu tokenů až o 80 %, vrací lepší výsledky a zabraňuje zbytečnému zvětšování kontextového okna.

Nasaďte na Workers

Tento příklad ukazuje, jak:

Jak to funguje

Agent používá tři komponenty z @cloudflare/codemode ↗ knihovna a Agents SDK ↗:

Postup:

  1. Uživatel odešle zprávu přes WebSocket.
  2. AIChatAgent ho předá LLM s jediným dostupným nástrojem: codemode.
  3. LLM píše JavaScript, například const projects = await codemode.listProjects(), místo jednotlivých volání nástrojů.
  4. DynamicWorkerExecutor spustí izolovaný Worker a spustí v něm kód. Uvnitř sandboxu, codemode.listProjects() volá vaši skutečnou listProjects implementace.
  5. Výsledek, veškerý výstup konzole a chyby se vrátí LLM.
  6. LLM použije výsledek k odpovědi uživateli, nebo v případě potřeby napíše další kód.

DynamicWorkerExecutor

DynamicWorkerExecutor je součástí @cloudflare/codemode knihovnou. Když LLM napíše kód, který orchestruje vaše nástroje, potřebuje tento kód spustit na bezpečném místě. DynamicWorkerExecutor spustí pro každé vykonání izolovaný Dynamic Worker pomocí bindingu Worker Loader. Uvnitř sandboxu:

import { DynamicWorkerExecutor } from "@cloudflare/codemode";

const executor = new DynamicWorkerExecutor({
	loader: env.LOADER, // WorkerLoader binding from wrangler.jsonc
	timeout: 30000, // default: 30s
	globalOutbound: null, // null = fetch blocked
});
import { DynamicWorkerExecutor } from "@cloudflare/codemode";

const executor = new DynamicWorkerExecutor({
	loader: env.LOADER, // WorkerLoader binding from wrangler.jsonc
	timeout: 30000, // default: 30s
	globalOutbound: null, // null = fetch blocked
});

createCodeTool

createCodeTool je součástí @cloudflare/codemode. Přijme vaše nástroje a executor a vrátí jediný AI SDK tool(). Provádí následující:

import { createCodeTool } from "@cloudflare/codemode/ai";

const codemode = createCodeTool({
	tools: myTools, // Record<string, tool()> with Zod schemas
	executor, // DynamicWorkerExecutor
});

// The LLM sees: one tool called "codemode" with input { code: string }
// The description includes TypeScript types for all your tools
import { createCodeTool } from "@cloudflare/codemode/ai";

const codemode = createCodeTool({
	tools: myTools, // Record<string, tool()> with Zod schemas
	executor, // DynamicWorkerExecutor
});

// The LLM sees: one tool called "codemode" with input { code: string }
// The description includes TypeScript types for all your tools

LLM napíše async arrow function. createCodeTool ho normalizuje a předá executoru. Executor sestaví modul Worker s codemode proxy, spustí kód a vrátí { code, result, logs }.