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 的图片型号不同;缺少已确认报价不能当作免费,接入前单独确认。
普通对话
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" 让模型决定是否调用。
{
"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:
{
"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 模式,演示固定的虚构库存查询;它不会访问真实库存或执行任意模型生成代码:
python mxb-gemini.py tools --model gemini-3.8-flash
本例每次工具往返通常有两次收费模型请求。这里的 Function Calling 是调用方执行函数,不代表模型自动拥有浏览器、联网搜索或代码执行器。流式工具参数可能分片返回,需要按调用 index/id 拼接 arguments,得到完整 JSON 后再执行。
视频理解:使用原生 inlineData
当前推荐 Gemini 原生路径。video_url 形式的 OpenAI 兼容请求曾返回200但答错画面,不能把200作为视频已被模型读取的证据。
{
"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,可运行完整示例:
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 结构见语言接口;不要把本页实测结果外推到另一分组的同名模型。