Skip to main content

TypeScript SDK V2 Session API (ถูกลบแล้ว)

เอกสารอ้างอิงสำหรับ V2 TypeScript Agent SDK session API ที่ถูกลบแล้ว พร้อม session-based send/stream patterns สำหรับ multi-turn conversations

warning

V2 session API ไม่ได้รับการ support อีกต่อไป TypeScript Agent SDK 0.3.142 ลบ unstable_v2_createSession, unstable_v2_resumeSession, unstable_v2_prompt และ types SDKSession และ SDKSessionOptions

สำหรับการ migrate ให้ใช้ query() API และ session options ที่รองรับ ส่ง AsyncIterable<SDKUserMessage> สำหรับ multi-turn conversations หรือ options.resume เพื่อ continue saved session หน้านี้เก็บไว้เป็น reference หากคุณดูแลโค้ดบน Agent SDK 0.2.x หรือเก่ากว่า

V2 เป็น experimental session API ที่ขจัดความจำเป็นในการใช้ async generators และการประสาน yield แทนที่จะจัดการ generator state ข้ามหลาย turns แต่ละ turn เป็น send()/stream() cycle แยกต่างหาก API surface ลดลงเหลือสาม concepts:

  • createSession() / resumeSession(): เริ่มหรือ continue conversation
  • session.send(): ส่ง message
  • session.stream(): รับ response

การติดตั้ง

Agent SDK 0.2.x เป็น version สุดท้ายที่มี V2 interface เพื่อติดตั้ง release สุดท้ายที่ compatible กับ V2 ให้ pin major และ minor version:

npm install @anthropic-ai/[email protected]
note

SDK มาพร้อม native Claude Code binary สำหรับแพลตฟอร์มของคุณเป็น optional dependency ดังนั้นคุณไม่ต้องติดตั้ง Claude Code แยกต่างหาก

Quick Start

One-shot Prompt

สำหรับ single-turn queries ง่ายๆ ที่ไม่ต้องการ session ให้ใช้ 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);
}
ดูการดำเนินการเดียวกันใน V1
import { query } from "@anthropic-ai/claude-agent-sdk";

const q = query({
prompt: "What is 2 + 2?",
options: { model: "claude-opus-4-7" }
});

for await (const msg of q) {
if (msg.type === "result" && msg.subtype === "success") {
console.log(msg.result);
}
}

Basic Session

สำหรับการ interact ที่มากกว่า single prompt ให้สร้าง session V2 แยก sending และ streaming ออกเป็นขั้นตอนที่แตกต่างกัน:

  • send() dispatch message ของคุณ
  • stream() stream response กลับมา

ตัวอย่างด้านล่างสร้าง session, ส่ง "Hello!" ไปยัง Claude และ print text response ใช้ await using (TypeScript 5.2+) เพื่อปิด session โดยอัตโนมัติเมื่อ block ออก:

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 สำหรับ assistant messages เพื่อรับ output ที่อ่านได้
if (msg.type === "assistant") {
const text = msg.message.content
.filter((block) => block.type === "text")
.map((block) => block.text)
.join("");
console.log(text);
}
}

Multi-turn Conversation

Sessions รักษา context ข้ามหลาย exchanges เพื่อ continue conversation ให้เรียก send() อีกครั้งบน session เดิม Claude จะจำ turns ก่อนหน้า:

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

Session Resume

หากคุณมี session ID จากการ interact ก่อนหน้า คุณสามารถ resume ได้ในภายหลัง:

import {
unstable_v2_createSession,
unstable_v2_resumeSession,
type SDKMessage
} from "@anthropic-ai/claude-agent-sdk";

// Helper เพื่อ extract text จาก 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("");
}

// สร้าง initial session และมีการสนทนา
const session = unstable_v2_createSession({
model: "claude-opus-4-7"
});

await session.send("Remember this number: 42");

// รับ session ID จาก 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();

// ภายหลัง: resume session โดยใช้ 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);
}

Cleanup

Sessions สามารถปิดด้วยตนเองหรือโดยอัตโนมัติโดยใช้ await using ซึ่งเป็น TypeScript 5.2+ feature สำหรับการจัดการ resource โดยอัตโนมัติ

Automatic cleanup (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 ปิดโดยอัตโนมัติเมื่อ block ออก

Manual cleanup:

import { unstable_v2_createSession } from "@anthropic-ai/claude-agent-sdk";

const session = unstable_v2_createSession({
model: "claude-opus-4-7"
});
// ... ใช้ session ...
session.close();

API Reference

unstable_v2_createSession()

สร้าง session ใหม่สำหรับ multi-turn conversations

function unstable_v2_createSession(options: {
model: string;
// ตัวเลือกเพิ่มเติมที่รองรับ
}): SDKSession;

unstable_v2_resumeSession()

Resume session ที่มีอยู่โดย ID

function unstable_v2_resumeSession(
sessionId: string,
options: {
model: string;
// ตัวเลือกเพิ่มเติมที่รองรับ
}
): SDKSession;

unstable_v2_prompt()

Convenience function สำหรับ one-shot สำหรับ single-turn queries

function unstable_v2_prompt(
prompt: string,
options: {
model: string;
// ตัวเลือกเพิ่มเติมที่รองรับ
}
): Promise<SDKResultMessage>;

SDKSession Interface

interface SDKSession {
readonly sessionId: string;
send(message: string | SDKUserMessage): Promise<void>;
stream(): AsyncGenerator<SDKMessage, void>;
close(): void;
}

Feature Availability

V2 session API ไม่ support ทุก feature ใน V1 สิ่งต่อไปนี้ต้องใช้ V1 SDK:

  • Session forking (option forkSession)
  • บาง streaming input patterns ขั้นสูง

ดูเพิ่มเติม