Skip to content

Gemini

平台特色:OpenAI 兼容模式

本平台采用 OpenAI 兼容格式,让您无需学习新的 API 文档,即可轻松调用 Google 的 Gemini 系列模型。

核心优势:一套代码,多种模型

用 OpenAI 格式跑通后,只需要更换模型名称 (model) 即可切换到 Claude、Gemini 等其他大模型,无需重写代码!这种设计让您可以轻松对比不同模型的效果,或根据成本和性能需求灵活切换。

支持的 Google 模型

  • gemini-3.1-pro-preview (最新)
  • gemini-3.1-flash-lite-preview
  • gemini-3-flash-preview
  • gemini-3-pro-preview (已下架,迁移至gemini-3.1-pro-preview)
  • gemini-2.5-flash(计划于26年10月下架)
  • gemini-2.5-pro(计划于26年10月下架)
  • gemini-2.5-flash-lite

基础信息 & 认证

API 端点 (Endpoint)

https://api.exchangetoken.ai/v1

Chat 请求路径

POST /v1/chat/completions

认证方式

所有 API 请求需要在 Header 中包含认证信息:

Authorization: Bearer YOUR_API_KEY

3. 请求参数

3.1 Header 参数

参数名称类型必须说明示例值
Content-Typestring设置请求头类型,必须为 application/jsonapplication/json
Acceptstring设置响应类型,建议统一为 application/jsonapplication/json
Authorizationstring身份验证所需的 API_KEY,格式 Bearer $YOUR_API_KEYBearer $YOUR_API_KEY

3.2 Body 参数 (application/json)

参数名称类型必须说明示例
modelstring要使用的模型 ID。详见概述列出的可用版本,如 gemini-2.5-flashgemini-2.5-flash
messagesarray聊天消息列表,格式与 OpenAI 兼容。数组中的每个对象包含 role (角色) 与 content (内容)。[{"role": "user", "content": "你好"}]
  rolestring消息角色,可选值:systemuserassistantuser
  contentstring/array消息的具体内容。你好,请给我讲个笑话。
temperaturenumber采样温度,取值 0~2。数值越大,输出越随机;数值越小,输出越集中和确定。0.7
top_pnumber另一种调节采样分布的方式,取值 0~1。和 temperature 通常二选一设置。0.9
nnumber为每条输入消息生成多少条回复。1
streamboolean是否开启流式输出。设置为 true 时,返回类似 ChatGPT 的流式数据。false
stopstring最多可指定 4 个字符串,一旦生成的內容出现这几个字符串之一,就停止生成更多 tokens。"\n"
max_tokensnumber单次回复可生成的最大 token 数量,受模型上下文长度限制。1024
presence_penaltynumber-2.0 ~ 2.0。正值会鼓励模型输出更多新话题,负值会降低输出新话题的概率。0
frequency_penaltynumber-2.0 ~ 2.0。正值会降低模型重复字句的频率,负值会提高重复字句出现的概率。0
reasoning_effortstring用来控制模型在推理任务中投入多少"计算精力"。目前只有 gemini-2.5-flash-preview-04-17 支持。支持 low medium high none。默认为 lowlow
web_search_optionsobject用来控制是否开启 google搜索提示依据。{}

完整代码示例

bash
curl -X POST "https://api.exchangetoken.ai/v1/chat/completions" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.5-flash",
    "messages": [
      {"role": "system", "content": "你是一个有用的AI助手。"},
      {"role": "user", "content": "你好!请介绍一下自己。"}
    ],
    "temperature": 0.7,
    "max_tokens": 1000
  }'
python
from openai import OpenAI

# 初始化客户端
client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.exchangetoken.ai/v1"
)

# 发送聊天请求
response = client.chat.completions.create(
    model="gemini-2.5-flash",
    messages=[
        {"role": "system", "content": "你是一个有用的AI助手。"},
        {"role": "user", "content": "你好!请介绍一下自己。"}
    ],
    temperature=0.7,
    max_tokens=1000
)

print(response.choices[0].message.content)
python
import requests
import json

url = "https://api.exchangetoken.ai/v1/chat/completions"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

data = {
    "model": "gemini-2.5-flash",
    "messages": [
        {"role": "system", "content": "你是一个有用的AI助手。"},
        {"role": "user", "content": "你好!请介绍一下自己。"}
    ],
    "temperature": 0.7,
    "max_tokens": 1000
}

response = requests.post(url, headers=headers, json=data)
result = response.json()

if response.status_code == 200:
    print(result["choices"][0]["message"]["content"])
else:
    print(f"错误: {result}")
javascript
const OpenAI = require('openai');

const client = new OpenAI({
  apiKey: 'YOUR_API_KEY',
  baseURL: 'https://api.exchangetoken.ai/v1'
});

async function chatCompletion() {
  try {
    const response = await client.chat.completions.create({
      model: 'gemini-2.5-flash',
      messages: [
        {"role": "system", "content": "你是一个有用的AI助手。"},
        {"role": "user", "content": "你好!请介绍一下自己。"}
      ],
      temperature: 0.7,
      max_tokens: 1000
    });
    
    console.log(response.choices[0].message.content);
  } catch (error) {
    console.error('API调用错误:', error);
  }
}

chatCompletion();
java
import okhttp3.*;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.*;

public class LaoZhangExample {
    private static final String API_KEY = "YOUR_API_KEY";
    private static final String BASE_URL = "https://api.exchangetoken.ai/v1";
    
    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();
        Gson gson = new Gson();
        
        // 构建请求体
        Map<String, Object> requestBody = new HashMap<>();
        requestBody.put("model", "gemini-2.5-flash");
        requestBody.put("temperature", 0.7);
        requestBody.put("max_tokens", 1000);
        
        List<Map<String, String>> messages = Arrays.asList(
            Map.of("role", "system", "content", "你是一个有用的AI助手。"),
            Map.of("role", "user", "content", "你好!请介绍一下自己。")
        );
        requestBody.put("messages", messages);
        
        RequestBody body = RequestBody.create(
            gson.toJson(requestBody),
            MediaType.parse("application/json")
        );
        
        Request request = new Request.Builder()
            .url(BASE_URL + "/chat/completions")
            .addHeader("Authorization", "Bearer " + API_KEY)
            .addHeader("Content-Type", "application/json")
            .post(body)
            .build();
        
        try (Response response = client.newCall(request).execute()) {
            System.out.println(response.body().string());
        }
    }
}
csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    private static readonly string API_KEY = "YOUR_API_KEY";
    private static readonly string BASE_URL = "https://api.exchangetoken.ai/v1";
    
    static async Task Main(string[] args)
    {
        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {API_KEY}");
        
        var requestBody = new
        {
            model = "gemini-2.5-flash",
            messages = new[]
            {
                new { role = "system", content = "你是一个有用的AI助手。" },
                new { role = "user", content = "你好!请介绍一下自己。" }
            },
            temperature = 0.7,
            max_tokens = 1000
        };
        
        var json = JsonConvert.SerializeObject(requestBody);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        
        try
        {
            var response = await client.PostAsync($"{BASE_URL}/chat/completions", content);
            var result = await response.Content.ReadAsStringAsync();
            Console.WriteLine(result);
        }
        catch (Exception ex)
        {
            Console.WriteLine($"错误: {ex.Message}");
        }
    }
}
go
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

type Message struct {
    Role    string `json:"role"`
    Content string `json:"content"`
}

type ChatRequest struct {
    Model       string    `json:"model"`
    Messages    []Message `json:"messages"`
    Temperature float64   `json:"temperature"`
    MaxTokens   int       `json:"max_tokens"`
}

func main() {
    apiKey := "YOUR_API_KEY"
    baseURL := "https://api.exchangetoken.ai/v1"
    
    reqData := ChatRequest{
        Model: "gemini-2.5-flash",
        Messages: []Message{
            {Role: "system", Content: "你是一个有用的AI助手。"},
            {Role: "user", Content: "你好!请介绍一下自己。"},
        },
        Temperature: 0.7,
        MaxTokens:   1000,
    }
    
    jsonData, _ := json.Marshal(reqData)
    
    req, _ := http.NewRequest("POST", baseURL+"/chat/completions", bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer "+apiKey)
    req.Header.Set("Content-Type", "application/json")
    
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        fmt.Printf("请求错误: %v\n", err)
        return
    }
    defer resp.Body.Close()
    
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}

流式响应 (Streaming)

开启流式输出

在请求中设置 stream: true

json
{
  "model": "gemini-2.5-flash",
  "messages": [{"role": "user", "content": "Hello"}],
  "stream": true
}

流式响应格式

响应将以 Server-Sent Events (SSE) 格式返回:

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1699000000,"model":"gemini-2.5-flash","choices":[{"delta":{"content":"Hello"},"index":0}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1699000000,"model":"gemini-2.5-flash","choices":[{"delta":{"content":" there"},"index":0}]}

data: [DONE]

错误处理

错误响应格式

json
{
  "error": {
    "message": "Invalid API key provided",
    "type": "invalid_request_error",
    "param": null,
    "code": "invalid_api_key"
  }
}

常见错误码

错误码HTTP状态码说明
invalid_api_key401API密钥无效
insufficient_quota429额度不足
model_not_found404模型不存在
invalid_request_error400请求参数错误
server_error500服务器错误
rate_limit_exceeded429请求过于频繁