Cách hoạt động
MarkdownĐiều gì xảy ra với yêu cầu trên đường đi từ chương trình của bạn đến mô hình.
Hướng dẫn đầy đủ
Bạn gửi yêu cầu đến Ailoot API giống như khi gửi trực tiếp đến OpenAI, Anthropic hoặc Google. Ailoot kiểm tra khóa và số dư, chuyển yêu cầu đến mô hình, trả về phản hồi cùng định dạng và trừ tiền theo mức sử dụng thực tế.
Một khóa — ba định dạng
Định dạng do đường dẫn yêu cầu quyết định, không phải do mô hình. Cùng một mô hình Claude có thể được gọi qua OpenAI Chat, OpenAI Responses hoặc Anthropic Messages — phản hồi sẽ theo định dạng của đường dẫn bạn đã gọi.
| Định dạng | Đường dẫn | Ai sử dụng định dạng này |
|---|---|---|
| OpenAI Chat Completions | /v1/chat/completions | OpenAI SDK, phần lớn ứng dụng trò chuyện và trình soạn thảo, n8n, LangChain |
| OpenAI Responses | /v1/responses | Codex CLI, OpenAI Agents SDK, các phiên bản SDK mới |
| Anthropic Messages | /v1/messages | Claude Code, Anthropic SDK, Zed, Cline |
| Gemini | /v1beta/models/{model}:generateContent | Gemini CLI, Google GenAI SDK |
Tiền: giữ trước và trừ một lần
- Trước khi gửi một yêu cầu văn bản mới, Ailoot tạm giữ khoản tiền ước tính cho đầu vào và câu trả lời có độ dài thông thường, có xét đến giới hạn (
max_tokens) và các điều kiện của mô hình cụ thể. Nếu khoản tạm giữ vượt quá số dư khả dụng hoặc hạn mức của khóa, chỉ được giảm giới hạn gửi đi khi mô hình và phương thức thực sự tuân thủ giới hạn đó; giới hạn sau khi giảm không được thấp hơn 256 token hoặc mức đầu ra tối thiểu đã quy định. Với đầu ra hình ảnh, video và âm thanh, vẫn tạm giữ toàn bộ chi phí của kết quả. - Sau khi có phản hồi, tiền được trừ một lần theo mức sử dụng thực tế. Phần tiền giữ chưa dùng được trả lại số dư ngay.
- Nếu chi phí câu trả lời vượt khoản giữ trước, phần chênh lệch được lấy từ số dư khả dụng. Số dư không bao giờ âm.
- Nếu tiền không đủ ngay cả cho khoản giữ trước tối thiểu, yêu cầu sẽ không được gửi: bạn nhận được lỗi 402 dễ hiểu và không bị trừ tiền.
- Lỗi không tạo ra kết quả sẽ không bị tính phí.
Chi tiết và ví dụ tính toán nằm trên trang Giữ tiền và khấu trừ.
Lỗi có Request ID
Mỗi phản hồi được gắn mã định danh yêu cầu: trong tiêu đề X-Request-ID và trong nội dung lỗi. Lỗi được trả về bằng JSON theo định dạng bạn đã gọi, nên SDK nhận diện đúng. Nếu có sự cố, hãy gửi Request ID cho bộ phận hỗ trợ — nhờ đó chúng tôi có thể tìm yêu cầu trong một phút.
{
"code": "API_KEY_REQUIRED",
"error": {
"code": "invalid_api_key",
"message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
"param": null,
"reason": "invalid_api_key",
"request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
"type": "invalid_request_error"
},
"message": "No API key was sent with the request. Nothing was charged. …"
}Luồng và thời gian chờ
Phản hồi dạng luồng (stream: true) được gửi dưới dạng Server-Sent Events. Ailoot gửi câu trả lời văn bản tính phí sau khi tính chi phí. Vì vậy, khi dùng stream: true định dạng vẫn là luồng (SSE), nhưng văn bản được gửi trong một khối sau khi mô hình hoàn tất, thay vì từng từ. Nếu quá trình chuẩn bị câu trả lời kéo dài hơn khoảng 15 giây, các luồng Chat Completions, Responses và Messages sẽ gửi trước các dòng điều khiển : ping (khoảng mỗi 10 giây), sau đó là dòng : ailoot-charged-usd … cho biết số tiền đã trừ, rồi đến dữ liệu trả về. SDK bỏ qua các dòng điều khiển này.
Định dạng Gemini không có dòng điều khiển: phản hồi :streamGenerateContent được gửi trọn vẹn sau khi tính toán. Với mô hình suy luận, hãy đặt thời gian chờ của máy khách đủ dư: chờ vài phút là bình thường.
Tiêu đề phản hồi
X-Request-ID có trong mọi phản hồi. Ailoot thêm các tiêu đề còn lại vào phản hồi văn bản tính phí:
| Tiêu đề | Nội dung |
|---|---|
X-Request-ID | Mã định danh yêu cầu — bộ phận hỗ trợ sẽ yêu cầu mã này |
X-Ailoot-Charged-USD | Số tiền đã trừ cho yêu cầu này, tính bằng đô la |
X-Ailoot-Output-Tokens | Số token trả lời đã được tính phí |
X-Ailoot-Max-Tokens-Capped | Giới hạn câu trả lời sau khi được giảm do số dư không đủ cho toàn bộ khoản giữ trước |
X-Ailoot-Notice-Code, X-Ailoot-Notice | Giải thích khi câu trả lời dừng vì chạm giới hạn độ dài |
Nếu luồng đã bắt đầu bằng các dòng điều khiển, thông tin này sẽ được gửi bằng một dòng chú thích trước dữ liệu, thay vì tiêu đề.
Bộ nhớ đệm prompt
Nếu mô hình hỗ trợ cache, việc gửi lại một tiền tố dài (chỉ dẫn hệ thống, tài liệu) có thể tốn ít phí hơn. Giá đọc và ghi cache được hiển thị trong thẻ mô hình ở danh mục. Nhà phát triển mô hình quyết định việc có trúng cache hay không; Ailoot không bảo đảm điều đó.