INTEGRITY Dokumentace

Agents API

Tato stránka poskytuje přehled Agents SDK. Podrobnou dokumentaci ke každé funkci najdete na odkazovaných referenčních stránkách.

Přehled

Agents SDK poskytuje dvě hlavní API:

API Popis
Na straně serveru Agent třída Zapouzdřuje logiku agenta: připojení, stav, metody, modely AI, zpracování chyb
Na straně klienta SDK AgentClient, useAgent, a useAgentChat pro připojování z prohlížečů

Třída Agent

Agent je třída, která rozšiřuje základní Agent třída:

import { Agent, routeAgentRequest } from "agents";

export class MyAgent extends Agent<Env, State> {
	// Your agent logic
}

export default {
	async fetch(request: Request, env: Env) {
		return (
			(await routeAgentRequest(request, env)) ||
			new Response("Not found", { status: 404 })
		);
	},
} satisfies ExportedHandler<Env>;

Každý Agent může mít miliony instancí. Každá instance je samostatný mikroserver, který běží nezávisle, což umožňuje horizontální škálování. Instance se adresují pomocí jedinečného identifikátoru (ID uživatele, e-mail, číslo tiketu atd.).

Životní cyklus

flowchart TD
    A["onStart<br/>(instance wakes up)"] --> B["onRequest<br/>(HTTP)"]
    A --> C["onConnect<br/>(WebSocket)"]
    A --> D["onEmail"]
    C --> E["onMessage ↔ send()<br/>onError (on failure)"]
    E --> F["onClose"]
Metoda Když běží
onStart(props?) Když se instance spustí nebo probudí z hibernace. Přijímá volitelné inicializační props předané prostřednictvím getAgentByName nebo routeAgentRequest.
onRequest(request) Pro každý HTTP požadavek na instanci
onConnect(connection, ctx) Když se naváže připojení WebSocket
onMessage(connection, message) Pro každou přijatou zprávu WebSocket
onError(connection, error) Když dojde k chybě WebSocket
onClose(connection, code, reason, wasClean) Když se připojení WebSocket uzavře
onEmail(email) Když je e-mail směrován na instanci
onStateChanged(state, source) Když se změní stav (ze strany serveru nebo klienta)

Základní vlastnosti

Vlastnost Typ Popis
this.env Env Proměnné prostředí a vazby
this.ctx ExecutionContext Kontext spuštění pro daný požadavek
this.state State Aktuální uložený stav
this.sql Funkce Spouští SQL dotazy ve vestavěné SQLite

Referenční dokumentace API na straně serveru

Funkce Metody Dokumentace
Stav setState(), onStateChanged(), initialState Ukládání a synchronizace stavu
Volatelné metody @callable() dekorátor Volatelné metody
Plánování schedule(), scheduleEvery(), getScheduleById(), listSchedules() Plánování úloh
Trvalé provádění runFiber(), startFiber(), stash(), onFiberRecovered(), keepAlive(), keepAliveWhile() Trvalé provádění
Queue queue(), dequeue(), dequeueAll(), getQueue() Zařazování úloh do fronty
WebSockets onConnect(), onMessage(), onClose(), broadcast() WebSockets
HTTP/SSE onRequest() HTTP a SSE
E-mail onEmail(), replyToEmail() Směrování e-mailů
Workflows runWorkflow(), waitForApproval() Spouštění Workflows
Klient MCP addMcpServer(), removeMcpServer(), getMcpServers() API klienta MCP
Modely AI Vazby Workers AI, OpenAI, Anthropic Používání modelů AI
Zprávy protokolu shouldSendProtocolMessages(), isConnectionProtocolEnabled() Zprávy protokolu
Kontext getCurrentAgent() getCurrentAgent()
Trasování wrapAISDK() Trasování
Diagnostické kanály subscribe(), diagnostické kanály Diagnostické kanály
Podřízení agenti subAgent(), abortSubAgent(), deleteSubAgent() Podřízení agenti
Agents jako nástroje runAgentTool(), clearAgentToolRuns(), hasAgentToolRun() Agents jako nástroje
Agent Skills skills registr, sbalené zdroje skills, spouštěče skriptů Agent Skills
Relace Session.create(), kontextové bloky, komprimace, vyhledávání Relace
Think Think základní třída, nástroje pracovního prostoru, hooky životního cyklu, rozšíření Think
Chat SDK createChatSdkState(), ChatSdkStateAgent Chat SDK

SQL API

Každá instance Agent má vestavěnou databázi SQLite, ke které se přistupuje přes this.sql:

// Create tables
this.sql`CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY, name TEXT)`;

// Insert data
this.sql`INSERT INTO users (id, name) VALUES (${id}, ${name})`;

// Query data
const users = this.sql<User>`SELECT * FROM users WHERE id = ${id}`;

Pro stav, který je třeba synchronizovat s klienty, použijte Stavové API místo toho.

Referenční dokumentace API na straně klienta

Funkce Metody Dokumentace
Klient WebSocket AgentClient Client SDK
HTTP klient agentFetch() Client SDK
React hook useAgent() Client SDK
Chat hook useAgentChat() Client SDK
Události nástrojů agenta useAgentToolEvents() Agents jako nástroje

Exporty pomocných funkcí na úrovni modulu zahrnují agentTool() z agents/agent-tools, který převádí Think nebo AIChatAgent podtřídu na definici nástroje AI SDK.

Rychlý příklad

import { useAgent } from "agents/react";
import type { MyAgent } from "./server";

function App() {
	const agent = useAgent<MyAgent, State>({
		agent: "my-agent",
		name: "user-123",
	});

	// Call methods on the agent
	agent.stub.someMethod();

	// Update state (syncs to server and all clients)
	agent.setState({ count: 1 });
}

Chat agenti

Pro aplikace AI chatu rozšiřte AIChatAgent místo Agent:

import { AIChatAgent } from "@cloudflare/ai-chat";

class ChatAgent extends AIChatAgent {
	async onChatMessage(onFinish) {
		// this.messages contains the conversation history
		// Return a streaming response
	}
}

Mezi funkce patří:

Viz Sestavte chatovacího agenta s kompletním tutoriálem.

Směrování

K Agents se přistupuje prostřednictvím vzorů URL:

https://your-worker.workers.dev/agents/:agent-name/:instance-name

Použijte routeAgentRequest() ve vašem Workeru pro směrování požadavků:

import { routeAgentRequest } from "agents";

export default {
	async fetch(request: Request, env: Env) {
		return (
			routeAgentRequest(request, env) ||
			new Response("Not found", { status: 404 })
		);
	},
} satisfies ExportedHandler<Env>;

Viz Směrování pro vlastní cesty, CORS a vzory pojmenování instancí.

Další kroky

Rychlý start

Sestavte svého prvního agenta přibližně za 10 minut.

Konfigurace

Seznamte se s nastavením a nasazením wrangler.jsonc.

WebSockets

Obousměrná komunikace s klienty v reálném čase.

Sestavte chatovacího agenta

Vytvářejte AI aplikace pomocí AIChatAgent.