Vercel AI SDK — useChat Hook 演示(模拟模式)
AI 助手
输入消息开始对话
实际项目中使用 Vercel AI SDK 的 useChat Hook(需要 API key):
'use client'
import { useChat } from 'ai/react'
export function Chat() {
const {
messages,
input,
handleInputChange,
handleSubmit,
isLoading
} = useChat() // 自动调用 /api/chat
return (
<div>
{messages.map(m => (
<div key={m.id} className={cn(
"p-3 rounded-lg",
m.role === 'user'
? "bg-primary text-white ml-auto"
: "bg-secondary"
)}>
{m.content}
</div>
))}
<form onSubmit={handleSubmit}>
<input value={input}
onChange={handleInputChange} />
<button type="submit">发送</button>
</form>
</div>
)
}// app/api/chat/route.ts
import { streamText } from 'ai'
import { openai } from '@ai-sdk/openai'
export async function POST(req: Request) {
const { messages } = await req.json()
const result = streamText({
model: openai('gpt-4o'),
messages,
})
return result.toDataStreamResponse()
}