Skip to content

Hướng dẫn định dạng Gemini tương thích OpenAI

Fast-Token hỗ trợ gọi các mô hình Google Gemini qua giao thức API OpenAI. Nếu bạn đã có ứng dụng dùng OpenAI SDK hoặc /v1/chat/completions, thường chỉ cần đổi base_urlmodel để dùng Gemini, không cần viết lại sang API Gemini gốc.

Trang này tập trung hướng dẫn sử dụng định dạng tương thích. Thân request, trường response và gỡ lỗi trực tuyến xem tài liệu ChatGPT và các liên kết trong bảng năng lực bên dưới.

Hai cách tích hợp

Hạng mụcĐịnh dạng tương thích OpenAI (trang này)API Gemini gốc (tài liệu khác trong mục)
Đường dẫn thường dùngPOST /v1/chat/completions, POST /v1/embeddingsPOST /v1beta/models/{model}:generateContent, v.v.
Thân requestTrường OpenAI: messages, model, streamTrường Gemini: contents, generationConfig
Phù hợp khiĐã có client OpenAI, cổng đa mô hình, chuyển đổi nhanhCần tính năng riêng Gemini (thinkingConfig, tham số Imagen, v.v.)
Tài liệuTrang này + nhóm ChatTrang API dưới Chat, Hình ảnh, Tệp, v.v.

Hai cách dùng chung API Key và URL cổng. Tính phí theo mô hình tương ứng trong kho mô hình.

Cấu hình

Cổng và xác thực

  • Base URL: https://fast-token.com/v1 (giống Bắt đầu nhanh)
  • Xác thực: header Authorization: Bearer <Fast-Token_API_KEY>
  • Tên mô hình: sao chép ID có gemini từ kho mô hình vào trường model

Dùng OpenAI SDK (khuyến nghị)

Trỏ base_url của SDK chính thức tới Fast-Token; phần còn lại giống OpenAI:

python
from openai import OpenAI

client = OpenAI(
    base_url="https://fast-token.com/v1",
    api_key="<Fast-Token_API_KEY>",
)

completion = client.chat.completions.create(
    model="gemini-2.5-pro",  # 以模型广场为准
    messages=[
        {"role": "user", "content": "用一句话介绍你自己"},
    ],
)
print(completion.choices[0].message.content)
javascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://fast-token.com/v1",
  apiKey: "<Fast-Token_API_KEY>",
});

const completion = await client.chat.completions.create({
  model: "gemini-2.5-pro",
  messages: [{ role: "user", content: "用一句话介绍你自己" }],
});
console.log(completion.choices[0].message.content);

Streaming: đặt stream: true. Xem Tạo hoàn thành chat (luồng).

Tổng quan năng lực định dạng chat tương thích

Các năng lực dưới đây đều qua đường dẫn tương thích OpenAI, thường được gom 「định dạng chat tương thích」 trên console hoặc Apifox. Thực tế phần lớn dùng chung POST /v1/chat/completions (embedding: POST /v1/embeddings), phân biệt bằng mô hìnhcấu trúc tin nhắn.

Năng lựcMô tảTham khảo
Tạo ảnh GeminiTạo/sửa ảnh từ văn bản (và ảnh tham chiếu tùy chọn)Tạo ảnh chat (không luồng)
ChatHội thoại đa lượt, có/không luồngKhông luồng, Có luồng
Chat - suy nghĩ 1Hội thoại có đầu ra «suy nghĩ» (biến thể 1)Luồng (extra_body.enable_thinking)
Chat - suy nghĩ 2Hội thoại có đầu ra «suy nghĩ» (biến thể 2)Như trên; mô hình theo kho
Nhận diện ảnhTải ảnh để hiểu, mô tả hoặc hỏi đápNhận diện (luồng), không luồng
Chat + đọc tệpĐính kèm tài liệu trong hội thoạiXem «Tệp và đa phương thức» bên dưới
Embedding văn bảnVăn bản sang vectorTạo embedding

Chọn mô hình

ID mô hình cho từng kịch bản lấy từ kho mô hình. Thử các mô hình Gemini có gemini và ghi hỗ trợ chat/nhận diện ảnh/tạo ảnh/embedding; nếu báo «không tìm thấy mô hình» hoặc không hỗ trợ, đổi sang mục Gemini khác cùng kịch bản.

Ghi chú theo kịch bản

Chat chuẩn

  • Endpoint: POST /v1/chat/completions
  • Mảng messages cho đa lượt; role: system / user / assistant (giống OpenAI)
  • Không luồng: stream: false hoặc bỏ stream; có luồng: stream: true
  • Tham số chung (temperature, max_tokens, top_p, v.v.) như OpenAI; xem Tạo hoàn thành chat (không luồng)

Chế độ suy nghĩ (1 / 2)

Một số mô hình thinking Gemini bật đầu ra suy nghĩ trong request luồng qua trường mở rộng:

json
{
  "model": "gemini-2.5-pro",
  "messages": [{ "role": "user", "content": "解释相对论的核心思想" }],
  "stream": true,
  "extra_body": {
    "enable_thinking": true
  }
}
  • Suy nghĩ 12 tương ứng mô hình hoặc route khác trên cổng; chọn mô hình ghi «thinking» trong kho và thử riêng
  • Cần kiểm soát đầy đủ thinkingConfig, dùng API Gemini gốc

Nhận diện ảnh (thị giác)

Trong tin user, mảng đa phương thức trong content: text + image_url (URL hoặc Base64).

json
{
  "model": "gemini-2.5-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "这张图里有什么?" },
        {
          "type": "image_url",
          "image_url": { "url": "https://example.com/photo.jpg" }
        }
      ]
    }
  ],
  "stream": true
}

Base64: Nhận diện chat (luồng) Base64. Tham số gốc (inlineData, v.v.): Hiểu ảnh.

Tạo ảnh

  • Chat + mô hình Gemini tạo ảnh cho văn bản→ảnh, sửa theo ảnh tham chiếu
  • Mô tả yêu cầu bằng ngôn ngữ tự nhiên trong messages; cần ảnh tham chiếu thì thêm textimage_url trong content
  • Cấu trúc request/response: Tạo ảnh chat (không luồng)
  • Tỷ lệ khung hình, độ phân giải: Tạo ảnh gốc

Chat + đọc tệp

Dưới định dạng tương thích có thể đưa tài liệu, PDF, v.v. vào đầu vào đa phương thức (MIME và giới hạn kích thước theo kho mô hình):

  1. Ưu tiên truyền trong messages[].content theo quy ước đa phương thức OpenAI
  2. Tệp lớn hoặc bố cục phức tạp: Hiểu tài liệu gốc (fileData / inlineData), gộp kết quả vào luồng chat ở tầng ứng dụng

Embedding văn bản

Chọn tương thích hay API gốc

Nhu cầuGợi ý
Tích hợp nhanh, tái sử dụng SDK OpenAI / code hiện cóĐịnh dạng tương thích OpenAI (trang này)
Suy nghĩ luồng, generationConfig, Google Search GroundingAPI gốc (vd. Tạo văn bản+suy nghĩ-luồng, google search)
Imagen, TTS, hiểu video/âm thanhMục API gốc
Chỉ cần chat + nhận diện ảnh + tạo ảnh + embedding với client OpenAIĐịnh dạng tương thích đủ đường chính

Câu hỏi thường gặp

H: Vì sao không giống hệt tài liệu OpenAI?
Đ: Lớp tương thích căn request/response theo OpenAI, bên dưới chạy Gemini. Một số tham số chỉ OpenAI có thể bị bỏ qua.

H: model điền gì?
Đ: ID đầy đủ trong kho (thường có tiền/hậu tố gemini), không dùng tên rút gọn.

H: Định dạng response luồng?
Đ: SSE, dòng data: {...}data: [DONE]; xem Đối tượng khối hoàn thành chat.

H: Cấu trúc JSON response đầy đủ?
Đ: Đối tượng hoàn thành chat.

Đọc thêm