官方套件 · 即時功能元件
給 Vercel AI SDK 的可續傳 AI 聊天串流
useChat() 的 transport:回答透過頻道串流,斷線也不會遺失,重新整理後能接續,並送到每個分頁與裝置。支援 AI SDK 5、6 和 7。
@hibira-io/ai-sdknpm ↗GitHub ↗
- 適用任何 useChat:React、Vue、Svelte 與 Angular。
- API route 立刻回應,回答在背景寫到完,不需要另外架 Redis 或串流儲存。
- 把文字片段合併成小於 3,500 bytes 的事件,並用 resume: true 從頻道歷史補上(Hobby 以上方案)。
登入後,範例程式碼會自動帶入您的叢集主機。 登入
安裝
npm install @hibira-io/ai-sdk pusher-js pusher設定
'use client'; import { useChat } from '@ai-sdk/react'; import Pusher from 'pusher-js'; import { HibiraChatTransport } from '@hibira-io/ai-sdk'; const pusher = new Pusher(process.env.NEXT_PUBLIC_HIBIRA_KEY!, { cluster: 'hkg', wsHost: 'ws.hibira.io', channelAuthorization: { endpoint: '/api/hibira/auth', transport: 'ajax' }, }); const transport = new HibiraChatTransport({ pusher, api: '/api/chat' }); export function Chat({ id, initialMessages }) { const { messages, sendMessage } = useChat({ id, messages: initialMessages, transport, resume: true }); // render messages as usual }使用
// app/api/chat/route.ts import { after } from 'next/server'; import { streamText, convertToModelMessages } from 'ai'; import Pusher from 'pusher'; import { publishUIMessageStream } from '@hibira-io/ai-sdk/server'; const pusher = new Pusher({ appId: process.env.HIBIRA_APP_ID!, key: process.env.NEXT_PUBLIC_HIBIRA_KEY!, secret: process.env.HIBIRA_SECRET!, host: 'ws.hibira.io', useTLS: true, }); export async function POST(req: Request) { const { id, messages, runId } = await req.json(); const result = streamText({ model, messages: await convertToModelMessages(messages) }); after(() => publishUIMessageStream(pusher, { chatId: id, runId, stream: result.toUIMessageStream({ originalMessages: messages, onFinish: ({ messages }) => saveChat(id, messages) }), }), ); return Response.json({ runId }, { status: 202 }); }
開始之前
- 應用程式的密鑰只會在建立應用程式或輪替密鑰時顯示一次。請只放在伺服器上,不要放進瀏覽器或遊戲的建置檔。
- transport 會訂閱 private-ai-chat-{chatId}。你的授權端點應該只允許聊天的擁有者訂閱這個頻道。
- 在 app 設定中開啟頻道歷史(Hobby 以上方案),重新整理的頁面才能接續還在寫的回答。
請使用儀表板中的應用程式 Key;Secret 只放在你的伺服器上。頻道、事件與授權端點的用法和 Pusher 完全相同。 免費建立帳號 →