I. Tổng quan
Trang web này cung cấp khả năng tích hợp tương thích với định dạng OpenAI Chat Completions (/v1/chat/completions). Đối với mã đã chạy ổn định trên SDK chính thức của OpenAI hoặc các ứng dụng khách tương thích với OpenAI, bạn chỉ cần trỏ địa chỉ yêu cầu tới cổng OpenAI của trang web này, thay thế api_key bằng khóa sk- do hệ thống cấp, các phương thức gọi khác vẫn giữ nguyên.
Các mô hình dòng GPT khả dụng hiện tại được cập nhật trong trung tâm mô hình (như gpt-5.5, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, v.v.), danh sách đầy đủ và đơn giá có thể được truy vấn thông qua GET /v1/models.
II. Địa chỉ giao diện (API)
| Phương thức | Đường dẫn | Mô tả |
|---|---|---|
| POST | /v1/chat/completions | Hoàn thiện hội thoại (không truyền phát / truyền phát), phần thân yêu cầu là payload của OpenAI |
| GET | /v1/models | Danh sách mô hình và đơn giá (không cần xác thực) |
Địa chỉ cổng: https://www.relay-api.com. Để gọi tương thích với OpenAI, vui lòng gửi yêu cầu tới POST https://www.relay-api.com/v1, giữ nguyên đường dẫn như cũ.
III. Phương thức xác thực
Authorization: Bearer sk-khóa_của_bạn
Tạo khóa bắt đầu bằng sk- trong mục "Trung tâm người dùng → Khóa API". Sử dụng tiêu đề xác thực tương tự như OpenAI chính thức, SDK sẽ tự động thêm tiêu đề Authorization.
IV. Bắt đầu nhanh
4.1 curl (không truyền phát)
curl -X POST https://www.relay-api.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-khóa_của_bạn" \
-d '{
"model": "gpt-5.5",
"messages": [
{"role": "system", "content": "Bạn là một trợ lý hữu ích."},
{"role": "user", "content": "Hãy giới thiệu bản thân trong ba câu"}
],
"temperature": 0.7,
"max_tokens": 512
}'
4.2 OpenAI SDK (Python)
from openai import OpenAI
client = OpenAI(
base_url="https://www.relay-api.com/v1",
api_key="sk-khóa_của_bạn",
)
resp = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "Xin chào"}],
)
print(resp.choices[0].message.content)
Sau khi thiết lập base_url thành cổng OpenAI trong bảng trên và thay thế api_key, các phương thức gọi khác hoàn toàn giống với SDK chính thức.
V. Tham số yêu cầu
| Trường | Kiểu dữ liệu | Bắt buộc | Mô tả |
|---|---|---|---|
| model | string | Có | Slug mô hình, ví dụ: gpt-5.5 |
| messages | array | Có | Danh sách tin nhắn, phần tử là {role, content}; giá trị role: system / user / assistant |
| temperature | number | Không | Nhiệt độ lấy mẫu, mặc định 1.0 |
| top_p | number | Không | Lấy mẫu hạt nhân (Nucleus sampling), mặc định 1.0 |
| max_tokens | int | Không | Số lượng token đầu ra tối đa |
| stream | bool | Không | Có phản hồi dưới dạng truyền phát hay không, mặc định false |
| stop | string / array | Không | Chuỗi dừng |
| presence_penalty / frequency_penalty | number | Không | Hình phạt lặp lại, phạm vi -2~2 |
VI. Cấu trúc phản hồi
{
"id": "chatcmpl-123456",
"object": "chat.completion",
"created": 1710000000,
"model": "gpt-5.5",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "Xin chào! Rất vui được gặp bạn."},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 18,
"completion_tokens": 12,
"total_tokens": 30
}
}
| Trường | Mô tả |
|---|---|
| id | ID duy nhất cho lần hoàn thiện này |
| choices[].message | Phản hồi của trợ lý, content là nội dung văn bản |
| choices[].finish_reason | Lý do kết thúc: stop / length / content_filter |
| usage.prompt_tokens | Số token đầu vào (căn cứ tính phí) |
| usage.completion_tokens | Số token đầu ra (căn cứ tính phí) |
| usage.total_tokens | Tổng số token |
VII. Đầu ra truyền phát (Streaming)
Sau khi thêm "stream": true vào body yêu cầu, hệ thống sẽ trả về luồng SSE, mỗi dòng data: là một chunk:
data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"role": "assistant"}, "finish_reason": null}]}
data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"content": "Xin chào"}, "finish_reason": null}]}
data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}]}
data: [DONE]
Ứng dụng khách chỉ cần ghép các choices[0].delta.content của từng chunk là có được phản hồi hoàn chỉnh; nhận được [DONE] nghĩa là luồng kết thúc. Khi SDK OpenAI đặt stream=True, các sự kiện này sẽ được tự động xử lý.
VIII. Mã lỗi phổ biến
| Mã trạng thái HTTP | Ý nghĩa | Đề xuất xử lý |
|---|---|---|
| 400 | Tham số yêu cầu không hợp lệ (mô hình không tồn tại, messages trống, v.v.) | Kiểm tra các trường trong phần thân yêu cầu |
| 401 | Khóa API không hợp lệ hoặc bị thiếu | Kiểm tra tiêu đề Authorization và định dạng khóa |
| 403 | Khóa bị vô hiệu hóa, không đủ số dư hoặc không được ủy quyền cho mô hình/đường dẫn này | Nạp tiền hoặc kiểm tra quyền của khóa |
| 404 | Đường dẫn hoặc mô hình không tồn tại | Xác nhận base_url và tên mô hình |
| 429 | Kích hoạt giới hạn tốc độ (Rate limit) | Thử lại sau khi đợi theo cơ chế exponential backoff |
| 500 | Lỗi nội bộ máy chủ | Thử lại sau, nếu lỗi vẫn tiếp diễn vui lòng liên hệ CSKH |
Phần thân phản hồi lỗi có cấu trúc chung là {"code": mã_trạng_thái, "message": "Mô tả lỗi", "data": null}.
IX. Lưu ý về tính tương thích
- Hỗ trợ SDK OpenAI (Python / Node.js, v.v.) thông qua việc tùy chỉnh
base_url. - Hỗ trợ các ứng dụng khách tương thích OpenAI (LobeChat, ChatBox, NextChat, One API, v.v.) cấu hình địa chỉ giao diện tùy chỉnh.
- Tên mô hình phải khớp với slug được trả về bởi
GET /v1/models.
Lưu ý về Base URL: Trang web chấp nhận cả /v1beta/models/... và /v1beta/v1beta/models/... (cũng như /v1/... và /v1/v1/...), vì vậy việc ứng dụng khách có tự thêm /v1 hay /v1beta hay không đều không ảnh hưởng đến việc gọi API: Bạn có thể điền gốc tên miền hoặc địa chỉ có kèm /v1beta vào Base URL. ID mô hình vui lòng kiểm tra và sao chép tại "ID mô hình" ở góc trên bên phải trang "Token" trong bảng điều khiển.
