Danh sách API

Chat AI

POST/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

  1. Tạo khóa ở trên và lưu vào biến môi trường PENTAKAI_API_KEY trên máy chủ của bạn.
  2. Gửi POST /api/public/v1/chat kèm header Authorization: Bearer <khóa>.
  3. Đọc từng sự kiện delta để hiện chữ dần; sự kiện usage cho 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):

messagesmả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.
promptchuỗi*Viết tắt cho một câu hỏi duy nhất, dùng thay cho messages.
systemchuỗiHướng dẫn cách trả lời (giọng văn, ngôn ngữ, định dạng...).
temperaturesố 0 - 2Độ sáng tạo, mặc định 0.7.
max_output_tokenssố nguyênGiới hạn độ dài câu trả lời.
streamtrue / falseMặ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:

400invalid_requestThân yêu cầu sai định dạng.
401missing_api_key / invalid_api_keyThiếu khóa, khóa sai hoặc đã bị thu hồi.
403access_deniedAPI đang tạm đóng, tài khoản bị khóa hoặc gói cước chưa được dùng API.
413input_too_longNội dung quá dài.
429rate_limitedQuá số lượt/phút cho một khóa; header Retry-After cho biết số giây cần chờ.
429quota_exhaustedGói đã hết hạn mức token ngày / tuần / tháng (trong stream là sự kiện error).
502upstream_errorDị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).