// Multi-turn conversation (stateless: replay the history) // STATUS: LIVE_VERIFIED 2026-09-18 with @anthropic-ai/sdk 0.126.0. // Run: node --env-file=.env --experimental-strip-types examples/anthropic/messages/multi_turn.ts (ANTHROPIC_API_KEY read from env by the SDK) import Anthropic from "@anthropic-ai/sdk"; import { appendFileSync } from "node:fs"; const client = new Anthropic(); const MODEL = "claude-haiku-4-5-20251001"; const log = (path: string, status: number, note: string) => appendFileSync("reports/live-requests.jsonl", JSON.stringify({ ts: new Date().toISOString().replace(/\.\d+Z$/, "Z"), provider: "anthropic", method: "POST", path, status, est_cost_usd: 0.00005, note }) + "\n"); import type { MessageParam } from "@anthropic-ai/sdk/resources/messages"; const history: MessageParam[] = [ { role: "user", content: "Remember the code word: PLUM." }, { role: "assistant", content: "Noted." }, { role: "user", content: "Reply with only the code word." }, ]; const msg = await client.messages.create({ model: MODEL, max_tokens: 16, messages: history }); history.push({ role: "assistant", content: msg.content }); console.log(msg.content[0]?.type === "text" ? msg.content[0].text : "", "|", msg.stop_reason); log("/v1/messages", 200, "example multi_turn.ts");