漫小白API 文档
下载完整 .md ↓

AS Gemini:对话、工具调用与视频理解

使用 as gemini分组 的 Key。本页重点说明已验证的五个语言型号、Function Calling 往返、原生 MP4 理解,以及当前 1.8 倍率的 Token 计费。

型号与已验证能力

完整 model Chat 工具往返 Gemini 原生 MP4 理解
gemini-3-flash-preview 已验证 已验证短视频
gemini-3.1-pro-preview 已验证 已验证短视频
gemini-3.5-flash 已验证 已验证短视频
gemini-3.8-flash 已验证,另测过流式工具 已验证短视频与顺序反转对照
gemini-4-argon 已验证 已验证短视频

上述为 2026-10-30 的本站实际调用、2026-11-01 的目录核对;测试包括工具结果回传后正确引用,以及视频颜色、文字、动作、先后顺序。不是只检查 HTTP 200。短片验证不等于已经验证长电影、音轨识别或最大文件上限。

同组目录另有 gemini-3-pro-preview 和 gemini-3.1-flash-image,不在本页五型号能力与 Token 费率承诺内。后者与香蕉组带 -preview 的图片型号不同;缺少已确认报价不能当作免费,接入前单独确认。

普通对话

bash
curl --fail-with-body --max-time 180 \
  https://openpix.cc/v1/chat/completions \
  -H "Authorization: Bearer $MXB_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"gemini-3.8-flash","messages":[{"role":"user","content":"用三句话说明如何拍好产品图。"}],"stream":false}'

响应读取 choices[].message;原生文本也可用 /v1beta/models/{model}:generateContent 和 contents/parts。两个入口都使用本站 Key。

工具调用:两轮都要传什么

第一轮把函数名称、说明、JSON 参数结构放在 tools。tool_choice:"auto" 让模型决定是否调用。

json
{
  "model": "gemini-3.8-flash",
  "messages": [{"role":"user","content":"请查询 TEA-01 在上海仓的库存,并告诉我能否发货。"}],
  "tools": [{
    "type": "function",
    "function": {
      "name": "lookup_stock",
      "description": "查询指定商品在指定仓库的库存",
      "parameters": {
        "type": "object",
        "properties": {"sku":{"type":"string"},"warehouse":{"type":"string"}},
        "required": ["sku","warehouse"]
      }
    }
  }],
  "tool_choice": "auto",
  "stream": false
}

读取 choices[0].message.tool_calls,JSON 解析 function.arguments,在你自己的程序执行获准函数。然后保留第一轮完整 assistant 消息,追加 role:"tool",tool_call_id 必须等于对应调用的真实 id:

json
{
  "role": "tool",
  "tool_call_id": "替换为第一轮真实调用id",
  "content": "{\"sku\":\"TEA-01\",\"warehouse\":\"上海\",\"stock\":17}"
}

再携完整 messages、同一 model 和必要 tools 发第二次 Chat 请求,模型才能据此回答。工具结果中的 content 是 JSON 字符串,不是把对象直接当 content。一次产生多个 tool_calls 时,应逐一回传对应 id,不丢弃助手消息或只回传最后一个。

可下载并运行 mxb-gemini.py 的 tools 模式,演示固定的虚构库存查询;它不会访问真实库存或执行任意模型生成代码:

bash
python mxb-gemini.py tools --model gemini-3.8-flash

本例每次工具往返通常有两次收费模型请求。这里的 Function Calling 是调用方执行函数,不代表模型自动拥有浏览器、联网搜索或代码执行器。流式工具参数可能分片返回,需要按调用 index/id 拼接 arguments,得到完整 JSON 后再执行。

视频理解:使用原生 inlineData

当前推荐 Gemini 原生路径。video_url 形式的 OpenAI 兼容请求曾返回200但答错画面,不能把200作为视频已被模型读取的证据。

json
{
  "contents": [{
    "role": "user",
    "parts": [
      {"inlineData":{"mimeType":"video/mp4","data":"替换为整个MP4文件的纯Base64"}},
      {"text":"按时间顺序描述视频中的主体、动作和出现的文字,不要猜测不可见内容。"}
    ]
  }]
}

POST 到 https://openpix.cc/v1beta/models/gemini-3.8-flash:generateContent。这是发送视频内容让语言模型理解,不是创建视频任务;不使用 /v1/videos,没有生成视频用的 seconds/size 参数。

避免手工拼 Base64,可运行完整示例:

bash
python mxb-gemini.py video --model gemini-3.8-flash --file clip.mp4 \
  --prompt "逐段描述视频内容,包括文字和动作顺序。"

示例读取本地 MP4 并编码,不预先抽帧;原生返回从 candidates[].content.parts[].text 读取。inlineData.data 不能放文件路径、HTTP URL 或 Data URL 前缀。先用短小视频验证你的实际场景,文件经 Base64 会增大约三分之一;本页不声明通用最大时长/文件量。

当前费率与上下文档位

以下是 已经乘 1.8 的普通本组价格快照,单位 ¤ / 百万 Token;不再乘一次 1.8。账户另有专属价格时以自己的账单为准。

型号 / 完整输入长度 文本输入 输出(含计费思考) 缓存读取 缓存写入
3 Flash Preview 0.90 5.40 0.09 1.80
3.1 Pro Preview,≤200000 3.60 21.60 0.36 0
3.1 Pro Preview,>200000 7.20 32.40 0.72 0
3.5 Flash 2.70 16.20 0.27 0
3.8 Flash 1.35 6.75 0.135 0
4 Argon 3.60 18.00 0.18 3.60

Pro 的阈值按完整输入上下文(包含缓存部分)判断,超过后整次请求使用长上下文费率,不是只对超出的 Token 加价。缓存命中不能把长请求降回短档。工具定义、历史消息、工具结果和视频内容都会影响输入;不要按 prompt 字符数估算 Token。

例如 3.8 Flash 无缓存、输入1000 Token、计费输出200 Token,费用为 (1000×1.35 + 200×6.75)/1000000 = ¤0.0027。有缓存时各计价项需按账单分类,不把缓存 Token 与普通输入重复累加。

错误与能力边界

情况 核查
tool_calls 存在但 content 为空 进入工具分支,不当成空回答重发
第二轮不能引用结果 检查完整 assistant 消息、tool_call_id、role=tool 以及 content 类型
视频只返回泛泛回答 检查是否走原生 inlineData,并用已知片段核实实际理解
用量大于可见输出文字 检查思考用量、历史与工具上下文,不能仅凭字数算费
客户端超时 记录 request_id 和时间,先查调用记录,不盲目重发收费 POST

其他语言模型的普通 Chat / Responses 结构见语言接口;不要把本页实测结果外推到另一分组的同名模型。

漫小白 API 接入文档 · 2026-11-02 更新 · 当前目录与接口契约核对
模型权限与费用以当前模型广场及账单为准。

复制 Markdown

浏览器未允许自动复制,内容已选中,可按 Ctrl+C / ⌘C 复制。