Hướng dẫn tích hợp OpenAI API: Tương thích Chat Completions và cấu hình khóa

Sử dụng các mô hình lớn trên trang web của chúng tôi thông qua tính tương thích với OpenAI Chat Completions: địa chỉ giao diện, xác thực, ví dụ curl và SDK, các trường yêu cầu/phản hồi, truyền phát và mã lỗi phổ biến.

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ẫnMô tả
POST/v1/chat/completionsHoà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/modelsDanh 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ườngKiểu dữ liệuBắt buộcMô tả
modelstringCóSlug mô hình, ví dụ: gpt-5.5
messagesarrayCóDanh sách tin nhắn, phần tử là {role, content}; giá trị role: system / user / assistant
temperaturenumberKhôngNhiệt độ lấy mẫu, mặc định 1.0
top_pnumberKhôngLấy mẫu hạt nhân (Nucleus sampling), mặc định 1.0
max_tokensintKhôngSố lượng token đầu ra tối đa
streamboolKhôngCó phản hồi dưới dạng truyền phát hay không, mặc định false
stopstring / arrayKhôngChuỗi dừng
presence_penalty / frequency_penaltynumberKhôngHì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ườngMô tả
idID duy nhất cho lần hoàn thiện này
choices[].messagePhản hồi của trợ lý, content là nội dung văn bản
choices[].finish_reasonLý do kết thúc: stop / length / content_filter
usage.prompt_tokensSố token đầu vào (căn cứ tính phí)
usage.completion_tokensSố token đầu ra (căn cứ tính phí)
usage.total_tokensTổ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ý
400Tham 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
401Khóa API không hợp lệ hoặc bị thiếuKiểm tra tiêu đề Authorization và định dạng khóa
403Khó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àyNạ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ạiXác nhận base_url và tên mô hình
429Kích hoạt giới hạn tốc độ (Rate limit)Thử lại sau khi đợi theo cơ chế exponential backoff
500Lỗ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.