Tổng quan
Bản đồ của API: mọi endpoint, yêu cầu và lỗi trông như thế nào, các lượt gọi được thanh toán ra sao, và những điều cần biết khi bạn đến từ SDK của OpenAI hoặc Anthropic.
Endpoint
Mọi endpoint nằm dưới một base URL và được phục vụ qua HTTPS.
https://api.shannon-ai.com | Endpoint | Định dạng | Dùng để làm gì |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Gửi một cuộc hội thoại, nhận câu trả lời tiếp theo. Có hoặc không streaming. |
POST /v1/messages | Anthropic Messages | Tương tự, theo dạng yêu cầu và phản hồi của các SDK Anthropic. |
POST /v1/responses | OpenAI Responses | Tương tự, theo dạng của Responses. Endpoint không lưu trạng thái: hãy gửi cuộc hội thoại trong mỗi yêu cầu. |
GET /v1/models | Danh sách model OpenAI | Liệt kê các model cùng cửa sổ ngữ cảnh, giá và tính năng. Không cần key. |
POST /v1/tokenize | Shannon API | Đếm token của một văn bản hoặc của một yêu cầu chat cho model open-weight hosted. Miễn phí. |
POST /v1/messages/count_tokens | Đếm token Anthropic | Đếm token đầu vào của một yêu cầu Messages cho model open-weight hosted. Miễn phí. |
Ba endpoint tạo văn bản dùng chung các model. Hãy chọn endpoint có định dạng mà mã của bạn đang dùng.
Kiến thức cơ bản về yêu cầu
| Header | Mô tả |
|---|---|
Authorization: Bearer <key> | API key của bạn. Bắt buộc trên mọi endpoint trừ GET /v1/models, trừ khi bạn gửi x-api-key. |
x-api-key: <key> | Cùng một key trong header mà các SDK Anthropic gửi. Được đọc trên mọi endpoint. |
Content-Type: application/json | Bắt buộc trên mọi POST. Thiếu nó, phản hồi là 415. |
x-request-id: <your id> | Tùy chọn. Id riêng của bạn cho yêu cầu; nó được trả lại trong header phản hồi x-request-id. Nếu không có, API tự tạo một id gồm 12 ký tự thập lục phân. |
- Nội dung của mọi
POSTlà một đối tượng JSON, tối đa 32 MiB. - Trường mà API không biết không gây lỗi và không có tác dụng. Một yêu cầu viết cho nhà cung cấp khác sẽ không thất bại vì có thêm một trường.
- Trường đã biết với kiểu JSON sai, hoặc thiếu trường bắt buộc, được trả lời bằng
422. Nội dung không phải JSON hợp lệ được trả lời bằng400. modellà một trong các id trên Models & pricing. Chữ hoa và chữ thường không quan trọng.
Phản hồi là JSON, hoặc một luồng server-sent events khi yêu cầu đặt stream là true. Mỗi endpoint trả lời theo định dạng riêng. Mọi phản hồi đều có header x-request-id.
Một yêu cầu phải qua những bước nào
Một yêu cầu được kiểm tra theo thứ tự cố định trước khi model chạy. Bước kiểm tra đầu tiên thất bại sẽ trả lời, nên 401 chưa cho bạn biết gì về nội dung.
| Được kiểm tra, theo thứ tự này | Trạng thái khi thất bại |
|---|---|
| API key | 401 |
| Nội dung: kích thước, content type, JSON, kiểu trường | 413 · 415 · 400 · 422 |
| Id model | 400 |
| Flood protection: 120 yêu cầu mỗi phút cho mỗi tài khoản | 429 |
| Số dư: ngân sách đầu ra của yêu cầu phải vừa | 429 |
Dạng của lỗi
Lỗi là một đối tượng JSON có error chứa type và message. /v1/messages bọc nó theo cách các SDK Anthropic mong đợi; mọi đường dẫn khác dùng dạng của OpenAI.
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Hãy đọc
typevàmessage.codevàparamchỉ có ở một số lỗi: hãy coi chúng là tùy chọn.paramluôn lànull. - Sau khi stream đã bắt đầu, trạng thái đã là
200. Khi đó lỗi đến dưới dạng một error frame bên trong stream. - Mọi phản hồi lỗi đều mang header
x-request-id.
| Trạng thái | Loại | Khi nào |
|---|---|---|
400 | invalid_request_error | Nội dung không phải JSON hợp lệ, id model không xác định, hoặc model không nhận loại đầu vào bạn đã gửi. |
401 | authentication_error | Key bị thiếu hoặc không hợp lệ. |
404 | not_found_error | Đường dẫn không tồn tại. |
405 | api_error | Đường dẫn tồn tại, nhưng phương thức sai. |
413 | invalid_request_error | Nội dung lớn hơn 32 MiB. |
415 | invalid_request_error | Content-Type không phải là application/json. |
422 | invalid_request_error | Một trường có kiểu JSON sai hoặc thiếu một trường bắt buộc. |
429 | rate_limit_error | Số dư không đủ cho yêu cầu, hơn 120 yêu cầu đến trong một phút, các lượt gọi Shannon Coder của khung thời gian đã dùng hết, hoặc model đang bận. Thông báo cho biết là trường hợp nào. |
5xx | api_error | Trạng thái 500, 502, 503 hoặc 504: yêu cầu hợp lệ nhưng không thể được trả lời. Hãy gửi lại. 500 có thể mang loại server_error. |
Thanh toán và số dư
- Mỗi tài khoản có một số dư, và chat và API dùng chung: hạn mức gói hôm nay trước, rồi đến tín dụng đã mua. API không có hạn ngạch riêng.
- Một yêu cầu giữ ngân sách đầu ra của nó (
max_tokens, mặc định 4,096) và sau đó bị tính phí cho số token thực sự đã dùng, theo giá của model. - Mọi phản hồi báo cáo số token trong
usage. Trang Keys & usage hiển thị số dư và chi phí của từng yêu cầu. - Mọi yêu cầu được phục vụ như nhau. Giới hạn duy nhất về tốc độ yêu cầu là flood protection: 120 yêu cầu mỗi phút cho mỗi tài khoản. Các yêu cầu gửi song song sẽ xếp hàng chờ.
Giới hạn và số dư Model và giá Keys & usage
Các trường phụ thuộc vào model
Mọi model nhận cùng một yêu cầu. Một vài trường chỉ có hiệu lực trên một số model; bảng nêu rõ ở đâu. Các trang endpoint liệt kê mọi trường.
| Trường | Mô tả | Áp dụng bởi |
|---|---|---|
system | Chỉ dẫn cho model: tin nhắn system trên Chat Completions, system trên Messages, instructions trên Responses. | Các model open-weight hosted, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | Nhiệt độ lấy mẫu. | Các model open-weight hosted, shannon-1.6-*, shannon-coder-1 |
top_p | Nucleus sampling. | Các model open-weight hosted |
seed | Một seed cố định cho việc lấy mẫu. | Các model open-weight hosted |
stop | Tối đa 4 chuỗi dừng. | Các model open-weight hosted |
reasoning_effort | Model suy luận bao nhiêu trước khi trả lời. reasoning.effort trên Responses, thinking trên Messages. | Các model open-weight hosted |
web_search | true cho phép model tìm kiếm trên web cho yêu cầu này. Một trường của API này, trên Chat Completions và Messages. | Các model Shannon trừ shannon-coder-1 |
max_tokens | Ngân sách đầu ra. Trên mọi model, nó quy định số lượng được giữ từ số dư của bạn. | Với vai trò giới hạn độ dài câu trả lời: các model open-weight hosted, shannon-1.6-*, shannon-coder-1 |
Nếu bạn đến từ SDK của OpenAI
- Đặt base URL là
https://api.shannon-ai.com/v1và key là key Shannon của bạn. Khi đó các lượt gọi Chat Completions và Responses hoạt động với SDK nguyên trạng. modelphải là một id Shannon. Tên model của nhà cung cấp khác, nhưgpt-4o, được trả lời bằng400vàunknown model.- Phần suy luận nằm trong một trường riêng:
reasoning_contentbên cạnhcontent, trong tin nhắn và trong các delta của stream. - Một stream luôn mang
usagetrong chunk cuối cùng, cùng vớifinish_reason. - Một lần gọi tool trong stream đến dưới dạng một chunk với chuỗi
argumentshoàn chỉnh. - Một phản hồi có một choice.
- Các đường dẫn của API OpenAI không có trong bảng trên, như
/v1/embeddings, được trả lời bằng404.
Nếu bạn đến từ SDK của Anthropic
- Đặt base URL là
https://api.shannon-ai.com, không có/v1, và key là key Shannon của bạn. SDK gửi nó dưới dạngx-api-key. modelphải là một id Shannon.max_tokenslà tùy chọn trên API này. Mặc định của nó là 4,096.- Một phản hồi chứa các khối nội dung loại
thinking,textvàtool_use. Khối đầu tiên không phải lúc nào cũng là văn bản: hãy chọn khối theotype. stop_reasonlàend_turnhoặctool_use. Một luồng stream của model Shannon cũng có thể kết thúc vớimax_tokens.anthropic-versionvàanthropic-betađược chấp nhận, nên SDK hoạt động mà không cần thay đổi. Yêu cầu không cần chúng.- Lỗi trên
/v1/messagescó dạng của Anthropic:{"type": "error", "error": {…}}.
Các công cụ lập trình dùng các định dạng này được thiết lập theo cách tương tự: base URL, key, và một id Shannon làm model. Công cụ lập trình CLI