必须通过http请求插件调用外部rag api实现私有知识检索,需确保服务可公网访问、配置cors、正确设置插件参数与工作流(检索→解析→生成),并验证返回结果有效性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在扣子(Coze)中接入自建或第三方RAG服务(如RAGFlow、NLWeb、Dify等),让Bot具备实时检索私有知识并生成精准回答的能力,必须绕过扣子原生知识库的限制,通过HTTP请求调用外部RAG API完成检索与生成闭环。
确认外部RAG服务已就绪并可公网/内网访问
扣子Bot运行在云端,无法直接访问本地127.0.0.1服务。若你的RAG服务部署在本地或测试服务器上,必须满足以下任一条件:【服务已配置反向代理并暴露有效HTTPS域名】 或 【已开通内网穿透(如ngrok、cpolar)并获取稳定临时URL】。否则后续所有API调用将超时失败。
用浏览器或curl直接访问你的RAG检索接口(例如https://your-domain.com/api/v1/dify/retrieval),传入一个测试query参数,确认返回JSON结构含results数组且状态码为200。
检查响应头是否包含Access-Control-Allow-Origin: *。若无此头且你使用的是自建FastAPI/Flask服务,需手动添加CORS中间件,否则扣子插件会因跨域被浏览器拦截。
在扣子Bot中创建HTTP请求插件
进入Bot编辑页 → 点击左侧「插件」→ 「创建插件」→ 选择「HTTP请求」类型。
填写基础信息:名称填“RAG_External_Search”,描述写“调用外部RAG服务执行语义检索”,认证方式选「无」或「Bearer Token」(依你的RAG服务要求)。
在「请求设置」中配置:
- 方法:POST
- URL:粘贴你上一步验证过的完整RAG检索地址,例如
https://ragflow.example.com/api/v1/dify/retrieval - Headers:添加
Authorization: Bearer ragflow-xxx(若需鉴权);Content-Type固定为application/json - Body:使用JSON格式,必须包含query字段,其他字段按目标API文档填写。示例:
{"query": "{{input}}", "top_k": 3}—— 这里{{input}}是扣子自动注入的用户原始消息内容。
点击「测试」按钮,输入测试问题(如“退货政策怎么规定的?”),观察右侧返回结果是否含results及预期字段(如content、score)。若返回空数组或报错,立即检查URL拼写、token有效期、网络可达性。
设计Bot工作流:检索→拼装→生成
第一步:添加「插件节点」,选择刚创建的RAG_External_Search插件,输入设为{{user_input}}。
第二步:添加「代码节点」,语言选Python。在此节点中解析插件返回的JSON,并拼装成LLM可理解的上下文。关键逻辑如下:
```python
import json
rag_result = json.loads($plugin_result$)
if not rag_result.get("results"):
return {"answer": "未在知识库中找到相关信息。"}
context = "\n\n".join([f"[片段{i+1}] {r.get('content', '')}" for i, r in enumerate(rag_result["results"][:2])])
return {"context": context}
```
注意:这里只取前2个最高分结果,避免context过长触发扣子Token截断。若你的RAG返回字段名不是content(比如是text或chunk),必须同步修改代码中的键名,否则context为空字符串。
第三步:添加「大模型节点」,关闭「使用上下文」开关,在提示词中手动注入拼装好的上下文:
“你是一个客服助手。请严格依据以下提供的资料回答用户问题,禁止编造、推测或引用资料外的信息:\n\n{{context}}\n\n用户问题:{{user_input}}”
保存工作流,发布Bot。发送测试消息,观察最终回复是否准确引用了外部知识库中的原文片段。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










