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

# Gemini 3.1 Flash Lite Image (Stream)

> 通过 Gemini API 调用 Google Gemini 3.1 Flash Lite Image 进行流式图片生成。SSE 实时推送思考 chunk 与图片 chunk。

Gemini 3.1 Flash Lite Image (Stream) 通过 Anyfast 以原生 Gemini API 提供服务，支持实时 SSE 流式返回图片生成结果。思考 chunk 先行推送，最终图片 chunk 紧随其后。

<Warning>
  流式输出需要 **Direct** 分组令牌，需在控制台选择 **Direct** 分组。
</Warning>

## 核心能力

* **SSE 流式输出** — 实时推送思考 chunk 与图片 chunk
* **思考模式** — 内部推理 chunk（`thought: true`）在图片之前流式输出
* **文生图** — 根据文本描述生成图片
* **图片编辑** — 在 `inline_data` 中传入参考图，配合文字指令进行编辑
* **宽高比控制** — `1:1`、`3:2`、`2:3`、`3:4`、`4:3`、`4:5`、`5:4`、`9:16`、`16:9`、`21:9`
* **分辨率控制** — 支持 `1K`（1024px）。不支持 2K 和 4K

## SSE 响应格式

流式端点返回换行分隔的 SSE 数据行，每行以 `data:` 开头，后跟 JSON 对象。共有三种 chunk 类型：

1. **思考 chunk** — 最先到达；`parts[0].thought` 为 `true`
2. **图片 chunk** — 包含 `parts[0].inlineData`，含 `mimeType` 和 base64 `data`（注意：流式响应中为驼峰命名）
3. **最终用量 chunk** — 包含顶层 `usageMetadata`，含 `thoughtsTokenCount` 及各模态 token 详情

```
data: {"candidates":[{"content":{"role":"model","parts":[{"text":"...","thought":true}]}}],"usageMetadata":{"trafficType":"ON_DEMAND"},"modelVersion":"gemini-3.1-flash-lite-image","createTime":"...","responseId":"..."}

data: {"candidates":[{"content":{"role":"model","parts":[{"inlineData":{"mimeType":"image/png","data":"<base64>"}}]}}],...}

data: {"usageMetadata":{"promptTokenCount":8,"candidatesTokenCount":1120,"totalTokenCount":1392,"trafficType":"ON_DEMAND","promptTokensDetails":[{"modality":"TEXT","tokenCount":8}],"candidatesTokensDetails":[{"modality":"IMAGE","tokenCount":1120}],"thoughtsTokenCount":264}}
```

<Note>
  流式响应中图片字段名为 `inlineData`（驼峰），而请求体中字段名为 `inline_data`（下划线）。这是原生 Gemini API 的行为。
</Note>

## 文生图示例

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://www.anyfast.ai/v1beta/models/gemini-3.1-flash-lite-image:streamGenerateContent?key=YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "contents": [
        {
          "role": "user",
          "parts": [
            { "text": "生成一张山间日落的图片" }
          ]
        }
      ],
      "generationConfig": {
        "responseModalities": ["TEXT", "IMAGE"],
        "imageConfig": {
          "aspectRatio": "16:9",
          "imageSize": "1K"
        }
      }
    }'
  ```

  ```python Python theme={null}
  import requests, base64, json

  url = "https://www.anyfast.ai/v1beta/models/gemini-3.1-flash-lite-image:streamGenerateContent"
  params = {"key": "YOUR_API_KEY"}
  data = {
      "contents": [
          {
              "role": "user",
              "parts": [{"text": "生成一张山间日落的图片"}]
          }
      ],
      "generationConfig": {
          "responseModalities": ["TEXT", "IMAGE"],
          "imageConfig": {"aspectRatio": "16:9", "imageSize": "1K"}
      }
  }

  response = requests.post(url, params=params, json=data, stream=True)

  for line in response.iter_lines():
      if not line:
          continue
      decoded = line.decode("utf-8")
      if not decoded.startswith("data:"):
          continue
      chunk = json.loads(decoded[len("data:"):].strip())

      candidates = chunk.get("candidates", [])
      if not candidates:
          continue
      parts = candidates[0].get("content", {}).get("parts", [])
      for part in parts:
          # 跳过思考 chunk
          if part.get("thought"):
              continue
          # 保存图片 chunk
          if "inlineData" in part:
              img_bytes = base64.b64decode(part["inlineData"]["data"])
              with open("output.png", "wb") as f:
                  f.write(img_bytes)
              print("图片已保存至 output.png")
  ```
</CodeGroup>

## 图片编辑示例（传入参考图）

在同一个 `parts` 数组中同时传入 `text` 指令和 `inline_data` 参考图。

<CodeGroup>
  ```bash cURL theme={null}
  # 先将图片转为 base64：
  # BASE64=$(base64 -i your_photo.jpg)
  #
  # 然后发送请求：
  curl "https://www.anyfast.ai/v1beta/models/gemini-3.1-flash-lite-image:streamGenerateContent?key=YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "contents": [
        {
          "role": "user",
          "parts": [
            {
              "text": "这是我的一张照片，请在我旁边加一只羊驼"
            },
            {
              "inline_data": {
                "mime_type": "image/jpeg",
                "data": "<YOUR_BASE64_ENCODED_IMAGE>"
              }
            }
          ]
        }
      ],
      "generationConfig": {
        "responseModalities": ["TEXT", "IMAGE"],
        "imageConfig": {
          "aspectRatio": "1:1",
          "imageSize": "1K"
        }
      }
    }'
  ```

  ```python Python theme={null}
  import requests, base64, json

  # 读取并编码参考图片
  with open("your_photo.jpg", "rb") as f:
      image_b64 = base64.b64encode(f.read()).decode("utf-8")

  url = "https://www.anyfast.ai/v1beta/models/gemini-3.1-flash-lite-image:streamGenerateContent"
  params = {"key": "YOUR_API_KEY"}
  data = {
      "contents": [
          {
              "role": "user",
              "parts": [
                  {
                      "text": "这是我的一张照片，请在我旁边加一只羊驼"
                  },
                  {
                      "inline_data": {
                          "mime_type": "image/jpeg",
                          "data": image_b64
                      }
                  }
              ]
          }
      ],
      "generationConfig": {
          "responseModalities": ["TEXT", "IMAGE"],
          "imageConfig": {"aspectRatio": "1:1", "imageSize": "1K"}
      }
  }

  response = requests.post(url, params=params, json=data, stream=True)

  for line in response.iter_lines():
      if not line:
          continue
      decoded = line.decode("utf-8")
      if not decoded.startswith("data:"):
          continue
      chunk = json.loads(decoded[len("data:"):].strip())

      candidates = chunk.get("candidates", [])
      if not candidates:
          continue
      parts = candidates[0].get("content", {}).get("parts", [])
      for part in parts:
          if part.get("thought"):
              continue
          if "inlineData" in part:
              img_bytes = base64.b64decode(part["inlineData"]["data"])
              with open("output.png", "wb") as f:
                  f.write(img_bytes)
              print("图片已保存至 output.png")
  ```
</CodeGroup>

## 参数说明

| 参数                                         | 类型     | 必填 | 说明                                                                               |
| ------------------------------------------ | ------ | -- | -------------------------------------------------------------------------------- |
| `key`                                      | string | 是  | API 密钥（查询参数）                                                                     |
| `alt`                                      | string | 否  | 设为 `sse` 可显式开启 SSE 模式（可选，流式为默认行为）                                                |
| `contents[].parts[].text`                  | string | 是  | 文字提示或指令                                                                          |
| `contents[].parts[].inline_data.mime_type` | string | 否  | 参考图类型：`image/jpeg`、`image/png`、`image/webp`                                      |
| `contents[].parts[].inline_data.data`      | string | 否  | Base64 编码的参考图数据                                                                  |
| `generationConfig.responseModalities`      | array  | 是  | `["IMAGE"]` 或 `["TEXT", "IMAGE"]`                                                |
| `generationConfig.imageConfig.aspectRatio` | string | 否  | `1:1` / `3:2` / `2:3` / `3:4` / `4:3` / `4:5` / `5:4` / `9:16` / `16:9` / `21:9` |
| `generationConfig.imageConfig.imageSize`   | string | 否  | 仅支持 `1K`。不支持 2K 和 4K                                                             |

<Card title="API 参考" icon="code" href="/zh/api-reference/model-api/google/gemini-3.1-flash-lite-image-stream">
  查看 Gemini 3.1 Flash Lite Image (Stream) 的交互式 API Playground。
</Card>

<script src="/feedback.js" />
