> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wengaocloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 文本生成

> 通过 OpenAI 兼容的 /v1/chat/completions 调用 Gemini 文本生成。

Gemini OpenAI 兼容格式适合已经接入 OpenAI SDK、OpenAI `messages` 请求体或 `/v1/chat/completions` 网关的客户。客户通常只需要替换 `base_url`、API Key 和 `model`，即可把文本生成请求路由到 Gemini 模型。

<Note>
  OpenAI 兼容格式便于迁移；Gemini 原生格式更适合使用 Gemini 专属字段和多模态 `fileData`。同一个模型是否支持该 endpoint，以平台开通的模型能力为准。
</Note>

## 接口地址

```http theme={null}
POST https://{your-domain}/v1/chat/completions
```

OpenAI SDK 的 `base_url`：

```text theme={null}
https://{your-domain}/v1
```

示例模型：

```text theme={null}
gemini-3.5-flash
```

## 鉴权

OpenAI 兼容接口使用 Bearer 鉴权：

```http theme={null}
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
```

## 请求结构

| 字段                             | 类型             | 必填 | 说明                                 |
| ------------------------------ | -------------- | -- | ---------------------------------- |
| `model`                        | string         | 是  | Gemini 模型名称，例如 `gemini-3.5-flash`。 |
| `messages`                     | array          | 是  | OpenAI 风格消息数组。                     |
| `messages[].role`              | string         | 是  | `system`、`user`、`assistant` 等。     |
| `messages[].content`           | string 或 array | 是  | 文本生成通常传字符串。多模态时传内容数组。              |
| `max_tokens`                   | integer        | 否  | 最大输出 token 数。                      |
| `temperature`                  | number         | 否  | 随机性，越高越发散。                         |
| `stream`                       | boolean        | 否  | `true` 时返回 SSE 流。                  |
| `stream_options.include_usage` | boolean        | 否  | 流式时建议开启，平台也会尽量补齐 usage。            |

## 非流式文本生成

### curl

```bash theme={null}
curl --request POST \
  --url 'https://{your-domain}/v1/chat/completions' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "gemini-3.5-flash",
    "messages": [
      {
        "role": "system",
        "content": "你是一个面向企业客户的中文技术顾问，回答要准确、简洁、可落地。"
      },
      {
        "role": "user",
        "content": "请用三句话介绍 Gemini OpenAI 兼容文本生成接口。"
      }
    ],
    "max_tokens": 512,
    "temperature": 0.4,
    "stream": false
  }'
```

### 请求体

```json theme={null}
{
  "model": "gemini-3.5-flash",
  "messages": [
    {
      "role": "system",
      "content": "你是一个面向企业客户的中文技术顾问，回答要准确、简洁、可落地。"
    },
    {
      "role": "user",
      "content": "请用三句话介绍 Gemini OpenAI 兼容文本生成接口。"
    }
  ],
  "max_tokens": 512,
  "temperature": 0.4,
  "stream": false
}
```

### 响应示例

```json theme={null}
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1784700000,
  "model": "gemini-3.5-flash",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Gemini OpenAI 兼容文本生成接口使用标准 /v1/chat/completions 请求结构，适合已经接入 OpenAI SDK 的客户快速迁移。客户只需要配置平台 base_url、API Key 和 Gemini 模型名，就可以发起普通问答、摘要、改写、分类等任务。需要图片、文档等多模态输入时，也可以继续使用 messages[].content 数组。"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 48,
    "completion_tokens": 82,
    "total_tokens": 130
  }
}
```

## 流式文本生成

### curl

```bash theme={null}
curl -N --request POST \
  --url 'https://{your-domain}/v1/chat/completions' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "gemini-3.5-flash",
    "messages": [
      {
        "role": "user",
        "content": "请流式输出一段中文说明，介绍企业如何通过 OpenAI 兼容接口调用 Gemini。"
      }
    ],
    "max_tokens": 512,
    "stream": true,
    "stream_options": {
      "include_usage": true
    }
  }'
```

### 请求体

```json theme={null}
{
  "model": "gemini-3.5-flash",
  "messages": [
    {
      "role": "user",
      "content": "请流式输出一段中文说明，介绍企业如何通过 OpenAI 兼容接口调用 Gemini。"
    }
  ],
  "max_tokens": 512,
  "stream": true,
  "stream_options": {
    "include_usage": true
  }
}
```

### 响应示例

```text theme={null}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1784700000,"model":"gemini-3.5-flash","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}],"usage":null}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1784700000,"model":"gemini-3.5-flash","choices":[{"index":0,"delta":{"content":"企业可以"},"finish_reason":null}],"usage":null}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1784700000,"model":"gemini-3.5-flash","choices":[{"index":0,"delta":{"content":"通过 OpenAI SDK 设置 base_url 和 API Key，然后把 model 改为 Gemini 模型名。"},"finish_reason":null}],"usage":null}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1784700000,"model":"gemini-3.5-flash","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":36,"completion_tokens":47,"total_tokens":83}}

data: [DONE]
```

## Python SDK 示例

```python theme={null}
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://{your-domain}/v1",
)

completion = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[
        {"role": "system", "content": "你是一个中文技术顾问。"},
        {"role": "user", "content": "请用三句话介绍 Gemini OpenAI 兼容文本生成接口。"},
    ],
    max_tokens=512,
    temperature=0.4,
)

print(completion.choices[0].message.content)
```

## JavaScript SDK 示例

```javascript theme={null}
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "YOUR_API_KEY",
  baseURL: "https://{your-domain}/v1",
});

const completion = await client.chat.completions.create({
  model: "gemini-3.5-flash",
  messages: [
    { role: "system", content: "你是一个中文技术顾问。" },
    { role: "user", content: "请用三句话介绍 Gemini OpenAI 兼容文本生成接口。" },
  ],
  max_tokens: 512,
  temperature: 0.4,
});

console.log(completion.choices[0].message.content);
```

## 常见问题

| 场景              | 表现                                   | 处理方式                                                                |
| --------------- | ------------------------------------ | ------------------------------------------------------------------- |
| `base_url` 配错   | 请求变成 `/v1/v1/chat/completions` 或 404 | SDK 使用 `https://{your-domain}/v1`，curl 使用完整 `/v1/chat/completions`。 |
| API Key 没有权限    | 返回 `model_not_allowed` 或类似错误         | 检查模型是否对该 Key 开通。                                                    |
| 模型 endpoint 不匹配 | 返回 `model_endpoint_mismatch`         | 使用已开通 OpenAI 兼容 `chat/completions` 的 Gemini 模型。                     |
| 流式没有 usage      | 最后一个 chunk 没有用量                      | 请求里加 `stream_options.include_usage: true`，并以平台账单记录为准。               |
| 输出不按 JSON       | 返回自然语言或 Markdown                     | 增加 system 指令，必要时传 `response_format` 并做下游 JSON 校验。                   |
