V2 session API больше не поддерживается. TypeScript Agent SDK 0.3.142 удаляет unstable_v2_createSession, unstable_v2_resumeSession, unstable_v2_prompt и типы SDKSession и SDKSessionOptions.Для миграции используйте query() API и параметры сессии, которые он принимает. Передайте AsyncIterable<SDKUserMessage> для многооборотных разговоров или options.resume для продолжения сохранённой сессии. Эта страница сохранена для справки, если вы поддерживаете код на Agent SDK 0.2.x или более ранней версии.
V2 был экспериментальным session API, который устранил необходимость в асинхронных генераторах и координации yield. Вместо управления состоянием генератора между оборотами, каждый оборот представлял собой отдельный цикл send()/stream(). Поверхность API сводилась к трём концепциям:
createSession() / resumeSession(): Начать или продолжить разговор
session.send(): Отправить сообщение
session.stream(): Получить ответ
Установка
Agent SDK версии 0.2.x — это последняя версия, которая включает интерфейс V2. Версия пакета перепрыгнула с 0.2.x прямо на 0.3.142, поэтому версия удаления выше и указание установки ниже описывают одну и ту же границу. Чтобы установить последний совместимый с V2 релиз, зафиксируйте основную и дополнительную версию:
npm install @anthropic-ai/claude-agent-sdk@0.2
SDK поставляется с нативным бинарным файлом Claude Code для вашей платформы в качестве опциональной зависимости, поэтому вам не нужно устанавливать Claude Code отдельно.
Быстрый старт
Однократный запрос
Для простых однооборотных запросов, когда вам не нужно поддерживать сессию, используйте unstable_v2_prompt(). Этот пример отправляет математический вопрос и логирует ответ:
import { unstable_v2_prompt } from "@anthropic-ai/claude-agent-sdk";
const result = await unstable_v2_prompt("What is 2 + 2?", {
model: "claude-opus-4-7"
});
if (result.subtype === "success") {
console.log(result.result);
}
Базовая сессия
Для взаимодействий, выходящих за рамки одного запроса, создайте сессию. V2 разделяет отправку и потоковую передачу на отдельные шаги:
send() отправляет ваше сообщение
stream() передаёт ответ потоком
Это явное разделение облегчает добавление логики между оборотами (например, обработка ответов перед отправкой последующих сообщений).
Пример ниже создаёт сессию, отправляет “Hello!” в Claude и выводит текстовый ответ. Он использует await using (TypeScript 5.2+) для автоматического закрытия сессии при выходе из блока. Вы также можете вызвать session.close() вручную.
import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";
await using session = unstable_v2_createSession({
model: "claude-opus-4-7"
});
await session.send("Hello!");
for await (const msg of session.stream()) {
// Filter for assistant messages to get human-readable output
if (msg.type === "assistant") {
const text = msg.message.content
.filter((block) => block.type === "text")
.map((block) => block.text)
.join("");
console.log(text);
}
}
Многооборотный разговор
Сессии сохраняют контекст между несколькими обменами. Чтобы продолжить разговор, вызовите send() снова на той же сессии. Claude помнит предыдущие обороты.
Этот пример задаёт математический вопрос, а затем задаёт последующий вопрос, который ссылается на предыдущий ответ:
import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";
await using session = unstable_v2_createSession({
model: "claude-opus-4-7"
});
// Turn 1
await session.send("What is 5 + 3?");
for await (const msg of session.stream()) {
// Filter for assistant messages to get human-readable output
if (msg.type === "assistant") {
const text = msg.message.content
.filter((block) => block.type === "text")
.map((block) => block.text)
.join("");
console.log(text);
}
}
// Turn 2
await session.send("Multiply that by 2");
for await (const msg of session.stream()) {
if (msg.type === "assistant") {
const text = msg.message.content
.filter((block) => block.type === "text")
.map((block) => block.text)
.join("");
console.log(text);
}
}
Возобновление сессии
Если у вас есть ID сессии из предыдущего взаимодействия, вы можете возобновить её позже. Это полезно для долгоживущих рабочих процессов или когда вам нужно сохранить разговоры между перезагрузками приложения.
Этот пример создаёт сессию, сохраняет её ID, закрывает её, а затем возобновляет разговор:
import {
unstable_v2_createSession,
unstable_v2_resumeSession,
type SDKMessage
} from "@anthropic-ai/claude-agent-sdk";
// Helper to extract text from assistant messages
function getAssistantText(msg: SDKMessage): string | null {
if (msg.type !== "assistant") return null;
return msg.message.content
.filter((block) => block.type === "text")
.map((block) => block.text)
.join("");
}
// Create initial session and have a conversation
const session = unstable_v2_createSession({
model: "claude-opus-4-7"
});
await session.send("Remember this number: 42");
// Get the session ID from any received message
let sessionId: string | undefined;
for await (const msg of session.stream()) {
sessionId = msg.session_id;
const text = getAssistantText(msg);
if (text) console.log("Initial response:", text);
}
console.log("Session ID:", sessionId);
session.close();
// Later: resume the session using the stored ID
await using resumedSession = unstable_v2_resumeSession(sessionId!, {
model: "claude-opus-4-7"
});
await resumedSession.send("What number did I ask you to remember?");
for await (const msg of resumedSession.stream()) {
const text = getAssistantText(msg);
if (text) console.log("Resumed response:", text);
}
Очистка
Сессии можно закрывать вручную или автоматически, используя await using, функцию TypeScript 5.2+ для автоматической очистки ресурсов. Если вы используете более старую версию TypeScript или столкнулись с проблемами совместимости, используйте вместо этого ручную очистку.
Автоматическая очистка (TypeScript 5.2+):
import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";
await using session = unstable_v2_createSession({
model: "claude-opus-4-7"
});
// Session closes automatically when the block exits
Ручная очистка:
import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";
const session = unstable_v2_createSession({
model: "claude-opus-4-7"
});
// ... use the session ...
session.close();
Справочник API
unstable_v2_createSession()
Создаёт новую сессию для многооборотных разговоров.
function unstable_v2_createSession(options: {
model: string;
// Additional options supported
}): SDKSession;
unstable_v2_resumeSession()
Возобновляет существующую сессию по ID.
function unstable_v2_resumeSession(
sessionId: string,
options: {
model: string;
// Additional options supported
}
): SDKSession;
unstable_v2_prompt()
Однократная удобная функция для однооборотных запросов.
function unstable_v2_prompt(
prompt: string,
options: {
model: string;
// Additional options supported
}
): Promise<SDKResultMessage>;
Интерфейс SDKSession
interface SDKSession {
readonly sessionId: string;
send(message: string | SDKUserMessage): Promise<void>;
stream(): AsyncGenerator<SDKMessage, void>;
close(): void;
}
Доступность функций
V2 session API не поддерживает все функции V1. Следующие требуют использования V1 SDK:
- Разветвление сессий (опция
forkSession)
- Некоторые продвинутые паттерны потокового ввода
См. также