TypeScript SDK V2 Session API (ถูกลบแล้ว)
เอกสารอ้างอิงสำหรับ V2 TypeScript Agent SDK session API ที่ถูกลบแล้ว พร้อม session-based send/stream patterns สำหรับ multi-turn conversations
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 conversationsession.send(): ส่ง messagesession.stream(): รับ response
การติดตั้ง
Agent SDK 0.2.x เป็น version สุดท้ายที่มี V2 interface เพื่อติดตั้ง release สุดท้ายที่ compatible กับ V2 ให้ pin major และ minor version:
npm install @anthropic-ai/[email protected]
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 ขั้นสูง
ดูเพิ่มเติม
- TypeScript SDK reference (V1) - เอกสาร V1 SDK ครบถ้วน
- SDK overview - แนวคิด SDK ทั่วไป
- V2 examples บน GitHub - ตัวอย่างโค้ดที่ใช้งานได้