必须绕过Coze默认路由直连Gemini 1.5 Pro原生API,启用自定义模型插件、构造合规HTTP请求(含地区限制与token刷新)、按语义分块并注入上下文锚点,才能实现超长多模态输入的端到端理解。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在扣子(Coze)平台中接入 Gemini 1.5 Pro 模型,完成对整本PDF技术手册、带批注的扫描合同、含字幕的会议录像等超长多模态输入的端到端理解,必须绕过 Coze 默认模型路由机制,将请求精准导向 Gemini 1.5 Pro 的原生 API 接口,否则系统会自动降级为 Flash 或 Nano 变体,导致百万 token 上下文能力完全不可用。
确认扣子Bot已启用自定义模型插件权限
进入 Bot 设置 →「插件」→「自定义模型」,开启开关。这一步不可跳过,【未开启时所有外部模型调用均被拦截,返回403错误】。关闭状态下即使后续步骤全对,请求也会在网关层直接失败。
点击「添加模型」→ 选择「HTTP 模型」→ 填写名称为“gemini-1.5-pro-001”,类型选“文本生成”。注意此处不填任何预设 schema,留空即可——Gemini 1.5 Pro 的结构化输出需由 prompt 控制,而非模型插件预设。
构造符合 Gemini 1.5 Pro 要求的原始 HTTP 请求
方法一:直连 Vertex AI REST API(推荐)
① 在 Google Cloud Console 中创建服务账号,赋予 roles/aiplatform.user 权限,并下载 JSON 密钥文件;
② 使用该密钥通过 google.auth.default() 获取访问令牌(access_token),有效期 60 分钟,需在扣子插件脚本中实现自动刷新逻辑;
③ 构造 POST 请求到 https://us-east1-aiplatform.googleapis.com/v1/projects/{project_id}/locations/us-east1/publishers/google/models/gemini-1.5-pro-001:generateContent,【必须指定 us-east1 地区,其他区域不支持 1M token 窗口】;
④ 请求头必须包含:Authorization: Bearer {access_token}、Content-Type: application/json、X-Goog-User-IP: {client_ip}(扣子平台需配置真实出口 IP,否则触发风控拦截);
⑤ 请求体中禁用 stream:true,显式设置 max_output_tokens: 8192,temperature: 0,并将所有多模态内容(PDF 解析文本、Base64 图像、SRT 字幕段)统一塞入 contents[0].parts 数组,图像数据必须置于文本之前。
方法二:通过 Google AI Studio 代理(仅限调试)
登录 Google AI Studio → 创建新 API Key → 在「Model」下拉菜单中手动选择 gemini-1.5-pro-001 → 复制其 endpoint URL(形如 https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-001:generateContent?key={api_key});
注意:此方式无法上传文件,所有 PDF 必须提前 OCR 成纯文本,图像必须 Base64 编码后拼入 parts;且 【AI Studio 默认启用流式响应,必须在请求体中显式添加 stream: false,否则扣子插件解析会卡在 incomplete chunk】。
处理超长上下文的关键切分与注入策略
第一步:识别输入是否超过 900k token 安全阈值
使用 tiktoken 库(cl100k_base)对原始文本预估 token 数;若 PDF 经 OCR 后文本长度 > 72 万汉字,或视频帧抽样+字幕合并后总字符数 > 210 万,则必须分块;
第二步:按语义单元切分,而非固定长度截断
优先保留完整段落、代码块、表格行、带时间戳的对话轮次;切割点必须落在句号、换行符或 XML 标签闭合处,严禁在 JSON 字段中间、URL 内部或十六进制字符串中硬切;
第三步:向每块注入上下文锚点
在每块开头添加提示符:“[CONTEXT_BLOCK_ID:001_OF_003]|原始文档第1–12页|聚焦条款效力与违约责任”;末尾添加:“[END_OF_BLOCK_001]”;这样 Gemini 1.5 Pro 能在跨块推理时主动建立索引映射,避免信息错位。
第四步:组装最终请求体
将全部分块按顺序填入 contents[0].parts,每个 part 为 { "text": "..." } 或 { "inlineData": { "mimeType": "image/png", "data": "base64..." } };确保第一个 part 是图像或 PDF 文本,最后一个 part 是用户 query,中间所有 part 都是上下文材料。


















