用 Ace Data Cloud 接入 Gemini:对话、识图与流式输出实战 用 Ace Data Cloud 接入 Gemini Chat Completion从第一条消息到多轮对话、识图与流式输出想把 AI 问答放进客服、知识库或自己的应用里难点往往不是写一个 HTTP 请求而是把鉴权、模型参数、上下文和前端流式体验串起来。Ace Data Cloud 的 Gemini Chat Completion API 提供了一个清晰的接入入口先在控制台获取 Token再调用接口完成基础对话后还可以扩展到多轮聊天、图片理解与流式响应。本文依据 Ace Data Cloud Gemini Chat Completion 接入文档 整理以能直接上手的 Python 示例说明关键步骤。具体模型列表、可用性和计费以实时文档与控制台为准。1. 先准备 Token在同一个平台上开始接入打开 Ace Data Cloud 应用控制台登录并取得 API Token。平台文档说明一个 API Token 可以调用平台服务不需要为每个服务单独申请新应用有试用额度额度不足时可以到 余额控制台 充值。请将 Token 放在服务端环境变量中不要提交到仓库或写入浏览器前端。在 Gemini Chat Completion API 页面 还可以直接填写参数并试调右侧会生成对应调用代码。对第一次接入的开发者而言先在线验证参数再复制到工程里比盲写请求更省排错时间。2. 发起第一条对话接口为POST https://api.acedata.cloud/gemini/chat/completions。最重要的三个部分是 Bearer Token、model和messages消息由role与content构成。下面用文档示例中的gemini-2.5-pro演示import os import requests TOKEN os.environ[ACEDATA_API_TOKEN] url https://api.acedata.cloud/gemini/chat/completions headers { Authorization: fBearer {TOKEN}, Content-Type: application/json, Accept: application/json, } payload { model: gemini-2.5-pro, messages: [ {role: user, content: 请用一句话解释什么是向量检索。} ], } response requests.post(url, headersheaders, jsonpayload, timeout120) response.raise_for_status() data response.json() print(data[choices][0][message][content]) print(Token 用量, data.get(usage))先执行pip install requests再在运行环境设置ACEDATA_API_TOKEN。这里的请求参数是 JSONstream如需启用也应放在 JSON 请求体中而不是 HTTP Header。响应结构可重点看四项id是请求对应的任务标识model是实际模型choices[0].message.content是回答usage是 Token 统计。部分模型返回其他附加字段业务侧解析时不要假设每次只有纯文本。提醒可用模型以接口文档的model枚举为准。原文还特别提示某些 Gemini 3.x Flash 推理模型会先消耗推理 Token若设置max_tokens建议高于 512避免只见到空的正文。3. 多轮对话把上下文放进 messages多轮聊天并不是只发送最后一句问题而是按顺序带上相关历史。每条消息分别标注user、assistant等角色payload { model: gemini-2.5-pro, messages: [ {role: user, content: 我在做一个电商客服。}, {role: assistant, content: 可以从订单查询、商品推荐和售后问答入手。}, {role: user, content: 先帮我设计售后问答的开场白。}, ], } response requests.post(url, headersheaders, jsonpayload, timeout120) response.raise_for_status() print(response.json()[choices][0][message][content])这样模型才能理解“先帮我”承接的是哪个场景。生产环境可以只保留必要的历史兼顾上下文长度、响应速度和消耗。4. 图片理解文本与 image_url 一起传Gemini 支持图像输入。与纯文本不同此时content是内容块数组一个text块加一个image_url块。文档支持公开图片 URL也支持 base64data:URI后者适合本地图片不便公开的情形。import base64 with open(product.jpg, rb) as f: encoded base64.b64encode(f.read()).decode(utf-8) payload { model: gemini-3.1-pro-preview, messages: [{ role: user, content: [ {type: text, text: 请描述这张商品图片中的主要物品。}, {type: image_url, image_url: { url: fdata:image/jpeg;base64,{encoded} }}, ], }], } response requests.post(url, headersheaders, jsonpayload, timeout120) response.raise_for_status() print(response.json()[choices][0][message][content])这里image_url中使用url字段即可不要额外写media_type字段MIME 类型已经包含在data:image/jpeg;base64,前缀里。替换模型前请先确认当前接口文档中的可用枚举。5. 流式输出让前端不必等完整回答对聊天产品流式返回可以逐段展示内容。请求体加入stream: true服务端返回一段段以data:开头的事件结束时会出现[DONE]。下面是一个只打印正文增量的简化示例import json import requests payload { model: gemini-2.5-pro, messages: [{role: user, content: 用三点说明 RAG 的价值。}], stream: True, stream_options: {include_usage: True}, } with requests.post(url, headersheaders, jsonpayload, streamTrue, timeout120) as response: response.raise_for_status() for line in response.iter_lines(decode_unicodeTrue): if not line or not line.startswith(data:): continue chunk line.removeprefix(data:).strip() if chunk [DONE]: break event json.loads(chunk) for choice in event.get(choices, []): text choice.get(delta, {}).get(content) if text: print(text, end, flushTrue) if event.get(usage): print(\nToken 用量, event[usage])流中可能有reasoning_content等其他增量choices也可能为空例如只携带usage的收尾事件。所以不要把每一个data:都当成可显示的正文更不要在日志里直接记录敏感用户输入。为什么从 Ace Data Cloud 开始这套流程的价值在于把试调与正式接入连起来控制台取得 Token、文档页确认模型和参数、在线试调、复制代码再以同一接口扩展多轮、视觉和流式场景。对于想快速做出 AI 客服、图片问答或知识助手原型的团队这比只看一个孤立的代码片段更容易推进到实际产品。申请与管理应用 TokenGemini Chat Completion 完整接口文档接入指南原文建议先用单轮文本请求跑通再逐步增加历史消息、图片与流式输出正式上线前复核模型可用性、成本、超时与数据处理策略。