Gói chính thức · Thành phần thời gian thực
Luồng chat AI tiếp tục được cho Vercel AI SDK
Transport cho useChat(): câu trả lời truyền qua kênh, nên không mất khi rớt kết nối, tiếp tục sau khi tải lại và tới mọi tab và thiết bị. Hỗ trợ AI SDK 5, 6 và 7.
@hibira-io/ai-sdknpm ↗GitHub ↗
- Dùng được với mọi useChat: React, Vue, Svelte và Angular.
- API route trả lời ngay, câu trả lời chạy đến hết ở nền, không cần vận hành Redis hay kho lưu luồng.
- Gộp các đoạn văn bản thành sự kiện dưới 3.500 byte, và bắt kịp từ lịch sử kênh với resume: true (gói Hobby trở lên).
Đăng nhập để xem các đoạn mã này với host cụm của riêng bạn. Đăng nhập
Cài đặt
npm install @hibira-io/ai-sdk pusher-js pusherThiết lập
'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 }Sử dụng
// 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 }); }
Trước khi bắt đầu
- Secret của ứng dụng chỉ hiện một lần, khi bạn tạo ứng dụng hoặc xoay vòng secret. Hãy giữ nó trên máy chủ, không bao giờ đưa vào trình duyệt hay bản build game.
- Transport đăng ký private-ai-chat-{chatId}. Endpoint xác thực của bạn chỉ nên cho chủ cuộc trò chuyện vào kênh này.
- Bật lịch sử kênh trong phần cài đặt của ứng dụng (gói Hobby trở lên), để trang được tải lại có thể tiếp tục câu trả lời đang viết dở.
Dùng app key từ bảng điều khiển; secret chỉ để trên máy chủ của bạn. Kênh, sự kiện và endpoint xác thực hoạt động y như với Pusher. Tạo tài khoản miễn phí →