INTEGRITY Документация

Agents API

Эта страница даёт общий обзор Agents SDK. Подробную документацию по каждой функции см. на связанных справочных страницах.

Обзор

Agents SDK предоставляет два основных API:

API Описание
На стороне сервера Agent класс Инкапсулирует логику агента: подключения, состояние, методы, модели ИИ, обработку ошибок
На стороне клиента SDK AgentClient, useAgent, а также useAgentChat для подключения из браузеров

Класс Agent

Agent представляет собой класс, расширяющий базовый Agent класс:

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>;

У каждого Agent может быть миллионы экземпляров. Каждый экземпляр представляет собой отдельный микросервер, который выполняется независимо, что обеспечивает горизонтальное масштабирование. Экземпляры адресуются по уникальному идентификатору (ID пользователя, email, номер тикета и так далее).

Жизненный цикл

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"]
Метод Когда это выполняется
onStart(props?) Когда экземпляр запускается или просыпается после гибернации. Принимает необязательный инициализационные props передаваемый через getAgentByName или routeAgentRequest.
onRequest(request) Для каждого HTTP-запроса к экземпляру
onConnect(connection, ctx) Когда устанавливается WebSocket-соединение
onMessage(connection, message) Для каждого полученного сообщения WebSocket
onError(connection, error) Когда возникает ошибка WebSocket
onClose(connection, code, reason, wasClean) Когда WebSocket-соединение закрывается
onEmail(email) Когда письмо маршрутизируется на экземпляр
onStateChanged(state, source) Когда состояние меняется (на стороне сервера или клиента)

Основные свойства

Свойство Тип Описание
this.env Env Переменные окружения и привязки
this.ctx ExecutionContext Контекст выполнения запроса
this.state State Текущее сохранённое состояние
this.sql Функция Выполнять SQL-запросы к встроенной SQLite

Справочник по API на стороне сервера

Возможность Методы Документация
Состояние setState(), onStateChanged(), initialState Хранение и синхронизация состояния
Вызываемые методы @callable() декоратор Вызываемые методы
Планирование schedule(), scheduleEvery(), getScheduleById(), listSchedules() Планирование задач
Устойчивое выполнение runFiber(), startFiber(), stash(), onFiberRecovered(), keepAlive(), keepAliveWhile() Устойчивое выполнение
Queue queue(), dequeue(), dequeueAll(), getQueue() Задачи очереди
WebSockets onConnect(), onMessage(), onClose(), broadcast() WebSockets
HTTP/SSE onRequest() HTTP и SSE
Электронная почта onEmail(), replyToEmail() Маршрутизация электронной почты
Workflows runWorkflow(), waitForApproval() Запуск Workflows
MCP-клиент addMcpServer(), removeMcpServer(), getMcpServers() API MCP-клиента
AI-модели Привязки Workers AI, OpenAI, Anthropic Использование ИИ-моделей
Сообщения протокола shouldSendProtocolMessages(), isConnectionProtocolEnabled() Сообщения протокола
Контекст getCurrentAgent() getCurrentAgent()
Трассировка wrapAISDK() Трассировка
Диагностические каналы subscribe(), диагностические каналы Диагностические каналы
Дочерние агенты subAgent(), abortSubAgent(), deleteSubAgent() Дочерние агенты
Agents как инструменты runAgentTool(), clearAgentToolRuns(), hasAgentToolRun() Agents как инструменты
Agent Skills skills реестр, встроенные источники skill, средства запуска скриптов Agent Skills
Сеансы Session.create(), блоки контекста, компактизация, search Сеансы
Think Think базовый класс, инструменты рабочей области, хуки жизненного цикла, расширения Think
Chat SDK createChatSdkState(), ChatSdkStateAgent Chat SDK

SQL API

Каждый экземпляр Agent имеет встроенную базу данных SQLite, доступ к которой осуществляется через 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}`;

Для состояния, которое нужно синхронизировать с клиентами, используйте API состояния взамен.

Справочник по API на стороне клиента

Возможность Методы Документация
Клиент WebSocket AgentClient Клиентский SDK
HTTP-клиент agentFetch() Клиентский SDK
React-хук useAgent() Клиентский SDK
Хук чата useAgentChat() Клиентский SDK
События инструментов Agent useAgentToolEvents() Agents как инструменты

Экспортируемые вспомогательные функции на уровне модуля включают agentTool() от agents/agent-tools, который преобразует Think или AIChatAgent подкласс в определение инструмента AI SDK.

Краткий пример

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 });
}

Чат-агенты

Для чат-приложений на базе ИИ расширьте AIChatAgent вместо Agent:

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

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

Возможности включают:

См. Создайте чат-агента для полного руководства.

Маршрутизация

Agents доступны через URL-паттерны:

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

Используйте routeAgentRequest() в вашем Worker для маршрутизации запросов:

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>;

См. Маршрутизация для пользовательских путей, CORS и шаблонов именования инстансов.

Следующие шаги

быстрый старт

Создайте своего первого агента примерно за 10 минут.

Конфигурация

Узнайте о настройке wrangler.jsonc и развёртывании.

WebSockets

Двусторонняя связь с клиентами в реальном времени.

Создайте чат-агента

Создавайте ИИ-приложения с помощью AIChatAgent.