← Vytvářejte agenty na Cloudflare / agents / runtime
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 |
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ří:
- Vestavěná perzistence zpráv
- Automatické obnovitelné streamování (opětovné připojení uprostřed streamu)
- Funguje s
useAgentChatReact hook
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-namePouž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í.