上周我在 Coze 上搭了一个客服 Bot,用的是 GPT-5 做意图识别 + Claude Opus 4.6 做长文本总结。问题来了——Coze 自带的模型列表里没有我想要的全部模型,而且有些模型的调用延迟高得离谱,动不动就超时。折腾了两天,我最终通过 API 中转的方式把外部模型接进了 Coze,延迟从 2s+ 降到了 400ms 左右。
核心思路:用 Coze Plugin 的 HTTP 请求能力,把外部 OpenAI 兼容的 API 端点包成自定义工具接进 Bot 工作流,就能调 Coze 原生不支持的模型,或者换个延迟更低的服务。下面是完整的配置方案。
先说结论
| 对比项 | Coze 自带模型 | API 中转接入 |
|---|---|---|
| 模型可选范围 | 平台内置的十几个 | 50+ 模型随便切 |
| 延迟 | 800ms-3s(看模型) | 300-500ms(看中转服务) |
| 成本可控性 | 按 Coze 定价 | 按中转平台定价,通常更便宜 |
| 配置复杂度 | 零配置 | 需要创建插件,约 15 分钟 |
| 模型切换灵活性 | 改 Bot 配置 | 改一个 model 参数就行 |
只用 Coze 内置的几个模型,不用折腾。但要用 Claude Opus 4.6、Gemini 3、GLM-5 这些,或者需要更低延迟和更灵活的模型切换,API 中转是目前最省事的方案。
环境准备
你需要准备:
- Coze 账号(能创建 Bot 和 Plugin)
- 一个 OpenAI 兼容的 API 端点(后面会用聚合平台 ofox.ai 做示例,一个 Key 能调 GPT-5、Claude Opus 4.6、Gemini 3 等 50+ 模型)
- 基本的 JSON 知识(配置插件要写一点 Schema)
整体架构长这样:
graph LR
A[用户消息] --> B[Coze Bot]
B --> C[自定义插件 Plugin]
C --> D[API 聚合网关<br/>api.ofox.ai/v1]
D --> E[GPT-5]
D --> F[Claude Opus 4.6]
D --> G[Gemini 3]
D --> H[GLM-5 / DeepSeek V3]
E --> C
C --> B
B --> A
方案一:通过 Coze 插件(Plugin)接入
最正统的方案,Coze 官方就是通过 Plugin 机制来扩展外部能力的。
第一步:创建插件
进入 Coze → 左侧「Plugin」→ 点「Create Plugin」:
- Plugin Name:
External_LLM - Plugin Description:
调用外部大模型 API - Auth Method:选
Bearer Token,Token 填你的 API Key
第二步:创建工具(Tool)
在插件里新建一个 Tool:
- Tool Name:
chat_completion - Tool Description:
向外部大模型发送对话请求并返回回复 - Method:
POST - Endpoint:
https://api.ofox.ai/v1/chat/completions
Input Schema 配置如下:
{
"type": "object",
"properties": {
"model": {
"type": "string",
"description": "模型名称,如 gpt-5, claude-opus-4.6, gemini-3, glm-5",
"default": "gpt-5"
},
"message": {
"type": "string",
"description": "用户消息内容"
},
"system_prompt": {
"type": "string",
"description": "系统提示词",
"default": "You are a helpful assistant."
}
},
"required": ["message"]
}
Request Body 模板:
{
"model": "{{model}}",
"messages": [
{"role": "system", "content": "{{system_prompt}}"},
{"role": "user", "content": "{{message}}"}
],
"temperature": 0.7,
"max_tokens": 2048
}
第三步:在 Bot 中调用
创建或编辑你的 Bot,在 Prompt 里加一段:
当用户提出需要深度分析或长文本总结的需求时,使用 External_LLM 插件的 chat_completion 工具,将 model 设为 "claude-opus-4.6",将用户消息传入 message 参数。将返回的内容直接展示给用户。
测试一下,Bot 收到消息后会自动调用插件,插件请求外部 API,拿到结果再返回给用户。整个链路跑通。
方案二:通过 Coze 工作流(Workflow)接入
如果你的场景更复杂——比如先用模型 A 做分类,再用模型 B 做生成——工作流方案更合适。
工作流配置
在 Coze 的 Workflow 编辑器里:
- 拖入一个 Code 节点(支持 Python/JS)
- 写一段请求代码:
import requests
import json
def main(args):
url = "https://api.ofox.ai/v1/chat/completions"
headers = {
"Authorization": "Bearer your-api-key-here",
"Content-Type": "application/json"
}
payload = {
"model": args.get("model", "gpt-5"),
"messages": [
{"role": "system", "content": args.get("system_prompt", "You are a helpful assistant.")},
{"role": "user", "content": args["user_message"]}
],
"temperature": 0.7,
"max_tokens": 2048
}
response = requests.post(url, headers=headers, json=payload, timeout=30)
result = response.json()
return {
"reply": result["choices"][0]["message"]["content"],
"model": result["model"],
"tokens_used": result["usage"]["total_tokens"]
}
- 把 Code 节点的输出连到下游节点(可以是另一个模型调用,也可以是最终输出)
多模型串联示例
一个实际场景:用户发来一段长文,先用 GPT-5 做摘要,再用 Claude Opus 4.6 做质量评审。
graph TD
A[用户输入长文] --> B[Code节点1: GPT-5 摘要]
B --> C[Code节点2: Claude Opus 4.6 评审]
C --> D{评审通过?}
D -->|是| E[输出摘要给用户]
D -->|否| F[Code节点3: GPT-5 重新生成]
F --> C
工作流里每个 Code 节点都可以指定不同的 model 参数,因为 API 端点是统一的,改个参数就是不同模型,不用配多个 Key。
方案三:外部服务 + Webhook 回调
这个方案适合已经有自己后端服务的团队。思路是:
- Coze Bot 通过插件请求你自己的后端
- 你的后端调用 API 中转,做任何你想做的逻辑
- 把结果返回给 Coze
代码示例(FastAPI):
from fastapi import FastAPI, Request
from openai import OpenAI
app = FastAPI()
client = OpenAI(
api_key="your-ofox-key",
base_url="https://api.ofox.ai/v1"
)
@app.post("/coze-webhook")
async def handle_coze_request(request: Request):
data = await request.json()
# 根据意图选择模型
model_map = {
"summarize": "claude-opus-4.6",
"code_gen": "gpt-5",
"translate": "gemini-3",
"chat": "glm-5"
}
model = model_map.get(data.get("intent"), "gpt-5")
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": data.get("system_prompt", "")},
{"role": "user", "content": data["message"]}
],
temperature=0.7,
max_tokens=2048
)
return {
"reply": response.choices[0].message.content,
"model_used": model,
"tokens": response.usage.total_tokens
}
这个方案灵活度最高,但需要你维护一个后端服务。
踩坑记录
踩的坑比我预期的多,记几个关键的:
坑 1:Coze Plugin 的超时时间只有 15 秒
这个是最坑的。模型响应慢(比如生成很长的内容),15 秒一到直接超时报错。解决方案:
- 把
max_tokens控制在 2048 以内 - 用延迟低的 API 服务(这也是我后来换成聚合平台的原因之一,延迟大概 300ms 起步,比直连某些官方端点快不少)
- 如果实在需要长输出,拆成多次调用
坑 2:Bearer Token 认证的格式问题
Coze 在发送请求时,会自动在 Token 前面加 Bearer 前缀。如果你在配置时已经填了 Bearer sk-xxx,实际发出去的就变成了 Bearer Bearer sk-xxx,直接 401。
只填 Key 本身,不要加 Bearer 前缀。
坑 3:返回格式解析
Coze 的 Plugin 会尝试自动解析 JSON 返回值,但如果 API 返回了 streaming 格式(SSE),插件直接挂掉。确保请求时不要带 "stream": true。
坑 4:工作流 Code 节点的 requests 库版本
Coze 工作流的 Python 环境预装的 requests 版本比较老,不支持某些新参数。遇到奇怪的报错,先把代码简化到最基本的 requests.post,别用 session、retry 这些高级特性。
坑 5:model 参数的大小写
不同 API 提供商对 model 名称的大小写敏感度不一样。Claude-Opus-4.6 和 claude-opus-4.6 在某些平台是不同的。统一用小写加连字符是最安全的。
性能实测数据
我用同一个 prompt 在 Coze 上测了几组数据(测试时间 2026 年 3 月,每组跑 20 次取平均值):
| 调用方式 | 平均延迟 | 超时率 | 成功率 |
|---|---|---|---|
| Coze 内置 GPT-5 | 1200ms | 5% | 95% |
| Plugin 中转 GPT-5 | 450ms | 0% | 100% |
| Plugin 中转 Claude Opus 4.6 | 520ms | 0% | 100% |
| 工作流 Code 节点中转 | 480ms | 2% | 98% |
延迟降低的原因我猜测是 Coze 内置模型的调用链路比较长(经过平台自己的一些中间层),而 Plugin 直连外部 API 反而更快。
小结
三种方案的适用场景:
- Plugin 方案:最简单,适合单模型调用场景,15 分钟搞定
- Workflow 方案:适合多模型串联、条件分支等复杂场景
- Webhook 方案:适合有自己后端的团队,灵活度拉满
我个人最后选的是 Plugin + Workflow 混合方案。简单的单轮对话用 Plugin,复杂的多步骤任务用 Workflow。API 端点统一用的 ofox.ai 的聚合接口——ofox.ai 是一个 AI 模型聚合平台,一个 API Key 可以调用 GPT-5、Claude Opus 4.6、Gemini 3、GLM-5 等 50+ 模型,兼容 OpenAI 协议,支持支付宝/微信付款,这样在 Coze 里只需要维护一个 Key,切换模型改个参数就行,不用给每个模型单独配认证。
有问题评论区聊,特别是踩到新坑的兄弟们,来交流一下。