AnyInt Docs
API 参考

兼容 Gemini

AnyInt 在 /gemini/v1beta 前缀下暴露 Gemini 兼容路由。请将这些路由视为提供商原生路由,并在生产使用前先在你的环境中验证。

AnyInt 在 /gemini/v1beta 前缀下暴露 Gemini 兼容路由。这些路由使用 Gemini 原生 contents[].parts[] 请求体,而不是 OpenAI messages

已发布的路由

路由用例
POST /gemini/v1beta/models/{model}:generateContent文本生成和原生函数调用
POST /gemini/v1beta/models/{model}:streamGenerateContent?alt=sse流式生成
POST /gemini/v1beta/models/{image_model}:generateContent文本加图像输出

身份验证

Authorization: Bearer <ANYINT_API_KEY>

某些网关客户端也可以使用 Gemini 风格的 x-goog-api-key,但 AnyInt 文档化契约使用 Authorization: Bearer。除非你的集成已经验证过替代 header,否则请使用 Bearer。

何时使用 Gemini 兼容路由

  • 你希望保留 Gemini 原生 contents[].parts[] 负载
  • 你需要 streamGenerateContent?alt=sse
  • 你希望使用 Gemini 原生的 tools.functionDeclarations
  • 你想使用已发布的 Gemini 图像生成路由,而不是通用聊天封装器

如果你想要一个统一的 SDK 集成,请改为从 OpenAI 兼容 API 开始。

文本生成示例

请求字段

字段类型必填含义示例
contents数组Gemini 原生格式的对话轮次。[{"role":"user","parts":[...]}]
contents[].role字符串推荐消息角色。用户提示使用 user,历史模型轮次使用 modeluser
contents[].parts数组该轮消息的内容部分。[{"text":"Hello"}]
parts[].text字符串文本输入必填文本提示词内容。解释 AnyInt。
parts[].inlineData对象小型内联媒体字节必填Gemini 原生内联媒体 part。媒体来自本地文件且编码后的请求体仍在网关和模型限制内时使用。{"mimeType":"image/png","data":"..."}
parts[].fileData对象已上传或公网媒体文件必填Gemini 原生文件引用。fileUri 使用公网 HTTPS URL,不要发送本地文件路径。{"mimeType":"video/mp4","fileUri":"https://your-domain.com/sample.mp4"}
tools数组Gemini 原生工具声明。[{"functionDeclarations":[...]}]
generationConfig对象生成控制项,例如 temperature、最大输出 token 或图像响应模态。{"temperature":0.7}
safetySettings数组所选模型支持时的 Gemini 兼容安全设置。[{"category":"...","threshold":"..."}]

Generation config 字段

字段类型必填含义示例
temperature数字采样随机性。0.7
topP数字nucleus sampling 值。1
topK整数所选模型支持时,将采样限制到 top K token。40
maxOutputTokens整数最大生成 token 数。512
stopSequences数组结束生成的停止序列。["END"]
responseModalities数组仅图像生成Gemini 图像输出示例需要包含 TEXTIMAGE["TEXT","IMAGE"]
curl https://api.anyint.ai/gemini/v1beta/models/gemini-3-flash-preview:generateContent \
  -H "Authorization: Bearer $ANYINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "AnyInt 如何帮助多提供商团队?"}
        ]
      }
    ]
  }'

最小的已发布请求体是 contents,且至少包含一个内容项和一个文本 part。

流式示例

curl "https://api.anyint.ai/gemini/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse" \
  -H "Authorization: Bearer $ANYINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "流式输出一个关于 API 网关的简短回答。"}
        ]
      }
    ]
  }'

alt=sse 查询参数在已发布的流式路由中是必需的。

流式响应行为

字段含义
candidates[]模型返回的增量候选输出
candidates[].content.parts[]根据模型不同,包含生成文本或媒体 part
usageMetadata提供方返回时的 token 使用元数据
finishReason该候选输出停止的原因

视频或文件输入

如果你需要 Gemini 原生的媒体理解,请使用 fileData.fileUri,并提供模型提供方可以直接抓取的 URL。这个 URL 应直接返回媒体字节,而不是 HTML 分享页,也不能依赖 Cookie、登录态或私有网络访问。

长视频或较大媒体分析建议使用 streamGenerateContent?alt=sse,这样客户端可以在提供方继续处理文件时持续收到增量事件。

curl "https://api.anyint.ai/gemini/v1beta/models/gemini-3.1-pro-preview:streamGenerateContent?alt=sse" \
  -H "Authorization: Bearer $ANYINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {
            "text": "描述视频在 00:00、00:30 和 01:00 可见的画面。如果无法访问视频,请直接说明。"
          },
          {
            "fileData": {
              "mimeType": "video/mp4",
              "fileUri": "https://your-domain.com/sample.mp4"
            }
          }
        ]
      }
    ],
    "generationConfig": {
      "maxOutputTokens": 4096
    }
  }'

本地视频文件请先上传到对象存储或其他公网 HTTPS 位置,再把 URL 放进 fileData.fileUri。不要传 /tmp/sample.mp4 这样的本地路径。

首次为集成添加媒体输入时,请先发一个小型验证请求,让模型回答你可以独立核对的时间点画面或物体。仅仅返回格式正确的 JSON,并不能证明提供方真的处理了媒体文件。

函数调用示例

函数声明字段

字段类型必填含义示例
tools[].functionDeclarations数组模型可以调用的函数。[{"name":"get_weather",...}]
name字符串你的应用可识别的函数名。get_current_temperature
description字符串推荐告诉模型何时使用该函数。获取当前温度。
parameters对象类 JSON Schema 的参数描述。{"type":"object","properties":{...}}
parameters.properties对象通常需要函数参数字段。{"location":{"type":"string"}}
parameters.required数组必填参数名。["location"]
curl https://api.anyint.ai/gemini/v1beta/models/gemini-3-flash-preview:generateContent \
  -H "Authorization: Bearer $ANYINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "伦敦的气温是多少?"}
        ]
      }
    ],
    "tools": [
      {
        "functionDeclarations": [
          {
            "name": "get_current_temperature",
            "description": "获取给定位置的当前温度。",
            "parameters": {
              "type": "object",
              "properties": {
                "location": {
                  "type": "string",
                  "description": "城市名称,例如旧金山"
                }
              },
              "required": ["location"]
            }
          }
        ]
      }
    ]
  }'

这是已发布的 Gemini 原生工具模式。当你希望模型使用 functionDeclarations 而不是 OpenAI 风格的 tools 时,这就是正确的选择。

图像生成示例

已发布的图像生成模式要求 generationConfig.responseModalities 同时包含 TEXTIMAGE

curl https://api.anyint.ai/gemini/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
  -H "Authorization: Bearer $ANYINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "为 AI 音乐发布会生成一张电影感海报。"}
        ]
      }
    ],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"]
    }
  }'

图像输入指南

面向客户的图像输入,优先使用 OpenAI 兼容 API 中的 messages[].content[] 内容块和 image_url。这是当前文档化的多模态聊天格式,也能通过 OpenAI 兼容路由调用支持图像的模型。

如果你的应用已经使用 Gemini 原生请求体,/gemini/v1beta 也支持通过 contents[].parts[].inlineData 传入内联图片字节:

IMAGE_DATA="$(base64 -i ./reference.png | tr -d '\n')"

curl https://api.anyint.ai/gemini/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
  -H "Authorization: Bearer $ANYINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"contents\": [
      {
        \"role\": \"user\",
        \"parts\": [
          {
            \"text\": \"使用这张参考图,用一句话描述产品风格。\"
          },
          {
            \"inlineData\": {
              \"mimeType\": \"image/png\",
              \"data\": \"$IMAGE_DATA\"
            }
          }
        ]
      }
    ]
  }"

新集成请使用 Gemini 风格的 inlineData 字段名。不要通过 fileData.fileUri 传本地文件路径;请先上传文件、使用公网 HTTPS 文件 URL,或对小型内联媒体使用 inlineData

不要假设 /gemini/v1/... 路由或原始 Google API 负载一定被 AnyInt 支持,除非它已经列在本页。

常见错误

  • 忘记在流式路由上使用 alt=sse
  • contents[] 中遗漏 role: "user"
  • 调用裸 /v1beta/...,而不是 AnyInt 的 /gemini/v1beta/... 前缀
  • 调用 /gemini/v1/models/...,而不是已发布的 /gemini/v1beta/models/... 路由
  • 在图像生成中省略 responseModalities
  • 发送 OpenAI 的 messages 而不是 Gemini 的 contents[].parts[]
  • fileData.fileUri 里发送本地文件路径
  • 发送视频分享页、需要登录的 URL 或被私有网络阻断的 URL,而不是直接媒体 URL
  • 只传裸 base64,而不是放进 inlineData.mimeTypeinlineData.data

相关页面

On this page