Chat AI
/api/public/v1/chatĐưa trợ lý AI của Pentakai vào ứng dụng của bạn: hỏi bất kỳ chủ đề nào, nhận câu trả lời dạng stream (từng đoạn chữ ngay khi AI viết). Mỗi lượt gọi trừ token vào gói cước của tài khoản sở hữu khóa, dùng chung hạn mức ngày / tuần / tháng với chat trên web.
Đây là API chat thuần: AI chỉ trả lời dựa trên các tin nhắn bạn gửi lên, không kèm dữ liệu trận đấu hay thống kê esports của Pentakai. Muốn AI biết thêm ngữ cảnh, hãy đưa nội dung đó vào system hoặc messages.
Khóa API của bạn
Một khóa dùng được cho mọi API trong danh sách Tích hợp API; token luôn trừ vào gói cước của tài khoản này.
Bắt đầu nhanh
- Tạo khóa ở trên và lưu vào biến môi trường
PENTAKAI_API_KEYtrên máy chủ của bạn. - Gửi
POST /api/public/v1/chatkèm headerAuthorization: Bearer <khóa>. - Đọc từng sự kiện
deltađể hiện chữ dần; sự kiệnusagecho biết token đã trừ.
curl -N -X POST https://api.example.com/api/public/v1/chat \
-H "Authorization: Bearer $PENTAKAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"Giải thích thuật toán quicksort"}]}'Chỉ gọi API từ máy chủ của bạn. Đừng nhúng khóa vào mã chạy trên trình duyệt hay ứng dụng di động: ai có khóa sẽ dùng được token của bạn. Lộ khóa thì thu hồi ngay và tạo khóa mới.
POST /api/public/v1/chat
Thân yêu cầu (JSON):
| messages | mảng, bắt buộc* | Lịch sử hội thoại, mỗi phần tử { role, content }. role: user hoặc assistant (có thể thêm system). Tin cuối phải là user. |
| prompt | chuỗi | *Viết tắt cho một câu hỏi duy nhất, dùng thay cho messages. |
| system | chuỗi | Hướng dẫn cách trả lời (giọng văn, ngôn ngữ, định dạng...). |
| temperature | số 0 - 2 | Độ sáng tạo, mặc định 0.7. |
| max_output_tokens | số nguyên | Giới hạn độ dài câu trả lời. |
| stream | true / false | Mặc định true (text/event-stream). false: chờ trả về một lần dạng JSON. |
Dạng stream: mỗi sự kiện có dòng event: và dòng data: (JSON có trường type trùng tên sự kiện). Thứ tự: start → (có thể có queue khi hệ thống đông) → nhiều delta → usage → done. Lỗi giữa chừng là sự kiện error { code, message } và luồng kết thúc.
event: start
data: {"type":"start","id":"req_8f3a1c2b9d0e4f51"}
event: delta
data: {"type":"delta","text":"Quicksort là thuật toán sắp xếp "}
event: delta
data: {"type":"delta","text":"theo kiểu chia để trị..."}
event: usage
data: {"type":"usage","prompt_tokens":96,"output_tokens":512,"total_tokens":608,
"quota":{"plan_name":"Kim Cương","daily":{"percent":12.4,...},"weekly":{...},"period":{...}}}
event: done
data: {"type":"done","finish_reason":"stop"}Khi stream = false:
{
"id": "req_8f3a1c2b9d0e4f51",
"text": "Quicksort là thuật toán sắp xếp theo kiểu chia để trị...",
"finish_reason": "stop",
"usage": { "prompt_tokens": 96, "output_tokens": 512, "total_tokens": 608, "quota": { ... } }
}Token tính theo con số của mô hình AI: gồm phần đọc vào (system + lịch sử + câu hỏi), câu trả lời và phần “suy nghĩ” của mô hình. Câu hỏi về kèo, tỷ lệ cược được từ chối ngay (finish_reason: "policy") và không tốn token.
GET /api/public/v1/me
Kiểm tra khóa: trả về tên khóa, lượt gọi hôm nay, giới hạn hiện hành và phần trăm hạn mức token đã dùng của gói (giống sự kiện usage).
curl /api/public/v1/me -H "Authorization: Bearer $PENTAKAI_API_KEY"
Lỗi và giới hạn
Lỗi trước khi bắt đầu trả lời có dạng {"error": {"code": "...", "message": "..."}} kèm mã HTTP:
| 400 | invalid_request | Thân yêu cầu sai định dạng. |
| 401 | missing_api_key / invalid_api_key | Thiếu khóa, khóa sai hoặc đã bị thu hồi. |
| 403 | access_denied | API đang tạm đóng, tài khoản bị khóa hoặc gói cước chưa được dùng API. |
| 413 | input_too_long | Nội dung quá dài. |
| 429 | rate_limited | Quá số lượt/phút cho một khóa; header Retry-After cho biết số giây cần chờ. |
| 429 | quota_exhausted | Gói đã hết hạn mức token ngày / tuần / tháng (trong stream là sự kiện error). |
| 502 | upstream_error | Dịch vụ AI tạm lỗi hoặc quá tải, thử lại sau ít phút (trong stream là sự kiện error). |