流式对话
使用流式 API 实时获取 LLM 响应。
基础流式
import { streamToText } from 'claude-code-sdk-ts'
// 假设有一个流式响应
const stream = sdk.sendStream('Write a short poem')
for await (const text of streamToText(stream)) {
process.stdout.write(text)
}
StreamConsumer
import { createStreamConsumer, streamToBlocks, streamToText } from 'claude-code-sdk-ts'
const stream = sdk.sendStream('What is TypeScript?')
const consumer = createStreamConsumer(stream)
// 文本流
for await (const text of consumer.toTextStream()) {
process.stdout.write(text)
}
// 块流(含 tool_use)
for await (const block of consumer.toBlockStream()) {
if (block.type === 'text') {
console.log(block.text)
} else if (block.type === 'tool_use') {
console.log(`调用工具: ${block.name}`)
}
}
// 事件订阅
consumer.on('text', (text) => process.stdout.write(text))
consumer.on('done', (usage) => console.log('Token 用量:', usage))
// 聚合为完整结果
const result = await consumer.toPromise()
console.log('完整文本:', result.text)
console.log('Token:', result.usage)
askStream()
askStream() 是流式 + 自动工具执行的高级 API:
import { askStream } from 'claude-code-sdk-ts'
for await (const event of askStream({
llm: { provider: 'anthropic', apiKey: process.env.ANTHROPIC_API_KEY! },
prompt: 'List the files in current directory',
tools: ['GlobTool'],
})) {
if (event.type === 'text') {
process.stdout.write(event.text)
} else if (event.type === 'tool_call') {
console.log(`\n[调用工具: ${event.toolName}]`)
} else if (event.type === 'result') {
console.log('\n完成!')
}
}