与 AI SDK 集成
Elysia 轻松支持响应流式传输,允许您无缝集成 Vercel AI SDKs。
响应流式传输
Elysia 支持连续流式传输 ReadableStream 和 Response,允许您直接从 AI SDKs 返回流。
ts
import { Elysia } from 'elysia'
import { streamText } from 'ai'
import { openai } from '@ai-sdk/openai'
new Elysia().get('/', () => {
const stream = streamText({
model: openai('gpt-5'),
system: '您是来自原神中的八重神子',
prompt: '嗨!你好吗?'
})
// 直接返回 ReadableStream
return stream.textStream
// 也支持 UI 消息流
return stream.toUIMessageStream()
})Elysia 将自动处理流,允许您以各种方式使用它。
服务器发送事件
Elysia 还支持服务器发送事件(Server Sent Event)用于流式响应,只需使用 sse 函数包装 ReadableStream 即可。
ts
import { Elysia, sse } from 'elysia'
import { streamText } from 'ai'
import { openai } from '@ai-sdk/openai'
new Elysia().get('/', () => {
const stream = streamText({
model: openai('gpt-5'),
system: '您是来自原神中的八重神子',
prompt: '嗨!你好吗?'
})
// 每个块将作为服务器发送事件发送
return sse(stream.textStream)
// 也支持 UI 消息流
return sse(stream.toUIMessageStream())
})作为响应
如果您不需要流类型安全以便进一步与 Eden 使用,您可以直接作为响应返回流。
ts
import { Elysia } from 'elysia'
import { ai } from 'ai'
import { openai } from '@ai-sdk/openai'
new Elysia().get('/', () => {
const stream = streamText({
model: openai('gpt-5'),
system: '您是来自原神中的八重神子',
prompt: '嗨!你好吗?'
})
return stream.toTextStreamResponse()
// UI 消息流响应将使用 SSE
return stream.toUIMessageStreamResponse()
})手动流式传输
如果您想要对流式传输有更多控制,您可以使用生成器函数手动 yield 块。
ts
import { Elysia, sse } from 'elysia'
import { ai } from 'ai'
import { openai } from '@ai-sdk/openai'
new Elysia().get('/', async function* () {
const stream = streamText({
model: openai('gpt-5'),
system: '您是来自原神中的八重神子',
prompt: '嗨!你好吗?'
})
for await (const data of stream.textStream)
yield sse({
data,
event: 'message'
})
yield sse({
event: 'done'
})
})Fetch
如果 AI SDK 不支持您使用的模型,您仍然可以使用 fetch 函数向 AI SDKs 发送请求并直接流式传输响应。
ts
import { Elysia, fetch } from 'elysia'
new Elysia().get('/', () => {
return fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${process.env.OPENAI_API_KEY}`
},
body: JSON.stringify({
model: 'gpt-5',
stream: true,
messages: [
{
role: 'system',
content: '您是来自原神中的八重神子'
},
{ role: 'user', content: '嗨!你好吗?' }
]
})
})
})Elysia 将自动代理 fetch 响应并支持流式传输。
有关更多信息,请参阅 AI SDK 文档