Giao diện
@tasco/ai
Phần chạy ở client: chat streaming qua BFF. Phần server, prompt và eval nằm ở các subpath /server, /prompts, /eval. Hướng dẫn: AI trong sản phẩm.
Hàm
createSseParser()
ts
function createSseParser(onEvent): object;Parser SSE (Server-Sent Events) tối giản cho stream chat-completions. Chunk mạng có thể cắt giữa chừng một event — parser giữ phần dư trong buffer và chỉ emit khi đủ một event trọn vẹn (ngăn cách bằng dòng trống).
Tham số
| Tham số | Kiểu |
|---|---|
onEvent | (data) => void |
Trả về
object
| Tên | Kiểu |
|---|---|
feed() | (chunk) => void |
flush() | () => void |
extractDeltaContent()
ts
function extractDeltaContent(raw): string | null;Rút delta text từ một event chat-completions dạng OpenAI-compatible (LiteLLM và đa số gateway đều theo chuẩn này). Trả null với [DONE], JSON hỏng, hoặc chunk không có nội dung (vd chunk metadata đầu stream).
Tham số
| Tham số | Kiểu |
|---|---|
raw | string |
Trả về
string | null
useAiChat()
ts
function useAiChat(options?): object;Chat streaming với AI gateway qua BFF — client không bao giờ giữ API key. Chỉ dùng client-side (page mặc định CSR); response đọc dạng SSE, nội dung assistant được cập nhật dần vào message cuối để UI render theo thời gian thực.
Tham số
| Tham số | Kiểu |
|---|---|
options | UseAiChatOptions |
Trả về
| Tên | Kiểu | Mô tả |
|---|---|---|
abort() | () => void | Dừng stream đang chạy (giữ phần nội dung đã nhận). |
error | Ref<AppError | null, AppError | null> | Lỗi của lần gửi gần nhất (đã quy về AppError); null khi không có lỗi. |
messages | Ref<ChatMessage[], ChatMessage[]> | Hội thoại hiển thị (không gồm system prompt); message assistant cuối được cập nhật dần khi stream. |
reset() | () => void | Xoá hội thoại, đưa state về ban đầu. |
send() | (content) => Promise<void> | Gửi một câu hỏi; bỏ qua khi đang stream hoặc nội dung rỗng. Lỗi ghi vào error, không ném ra. |
status | Ref<ChatStatus, ChatStatus> | 'streaming' trong lúc nhận câu trả lời — UI nên khoá ô nhập theo trạng thái này. |
Interface
ChatMessage
Một message trong hội thoại.
Thuộc tính
| Thuộc tính | Kiểu | Mô tả |
|---|---|---|
content | string | Nội dung văn bản; message assistant đang stream được nối dần vào đây. |
role | ChatRole | Ai nói câu này. |
UseAiChatOptions
Tuỳ chọn của useAiChat.
Thuộc tính
Kiểu
ChatRole
ts
type ChatRole = "system" | "user" | "assistant";Vai trò message trong hội thoại chat (theo chuẩn OpenAI-compatible).
ChatStatus
ts
type ChatStatus = "idle" | "streaming" | "error";Trạng thái vòng đời của một phiên chat streaming.