要在扣子中调用本机或内网私有大模型,需将服务部署于可被访问的局域网/公网地址,通过HTTP节点构造请求并用代码块解析响应。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在扣子中让Bot实际调用你本机或内网部署的私有大模型(比如Ollama、vLLM、FastChat启动的服务),必须绕过官方模型节点限制,通过HTTP节点构造原始请求并正确解析流式或非流式响应。
确认本地模型服务已就绪
启动你的私有模型服务,确保它监听在可被扣子访问的地址上。若模型运行在你自己的电脑上,扣子无法直连127.0.0.1——【必须部署在能被公网或企业内网路由到达的服务器上】,例如 http://192.168.1.100:11434 或 http://model-api.internal.company:8000。
用浏览器或curl访问该地址的健康检查端点(如 /api/v1/health 或 /healthz),返回200才算真正就绪。
在扣子对话流中添加HTTP节点
进入Bot编辑器 → 工作流模式 → 点击「+ 添加节点」→ 选择「HTTP请求」节点。
点击右上角「导入cURL」,将你本地模型API文档中提供的完整curl命令粘贴进去(例如:curl -X POST "http://192.168.1.100:11434/api/v1/generate" -H "Content-Type: application/json" -d '{"prompt":"你好","max_new_tokens":64}')。
导入后自动填充URL、Method、Headers和Body;检查Headers中是否含 Content-Type: application/json,没有则手动添加。
配置请求体参数并绑定变量
在HTTP节点的「请求体」区域,把固定prompt替换成动态变量:把 "prompt":"你好" 改为 "prompt":"{{input}}",其中 input 是前序节点(如用户输入节点)输出的变量名。
根据你的模型API要求,补全必要字段:Ollama需加 "model":"llama3",vLLM需加 "temperature":0.7,"top_p":0.9,FastChat可能需要 "messages":[{"role":"user","content":"{{input}}"}]。
注意:如果模型返回SSE流(text/event-stream),扣子HTTP节点默认不解析,后续必须用代码块处理;若返回纯JSON,则可直接提取。
添加代码块解析响应内容
在HTTP节点下游连接一个「代码」节点,语言选Python,填入以下解析逻辑:
async def main(args: "Args"):
import json
params = getattr(args, "params", {}) or {}
body = params.get("body", "")
if isinstance(body, (bytes, bytearray)):
body = body.decode("utf-8", errors="ignore")
try:
resp = json.loads(body)
# Ollama格式:resp["response"]
# vLLM/FastChat格式:resp["choices"][0]["message"]["content"]
text = resp.get("response") or (resp.get("choices", [{}])[0].get("message", {}).get("content") or "")
return {"output": text.strip()}
except Exception as e:
return {"output": f"解析失败:{str(e)}"}
这段代码兼容常见私有模型返回结构,优先取 response 字段(Ollama), fallback 到 choices[0].message.content(OpenAI兼容接口)。
测试与调试关键步骤
第一步:在HTTP节点配置页点击「测试」,观察返回状态码是否为200;若报错404,检查URL路径是否漏掉 /api/v1/generate 等后缀;
第二步:若状态码正常但返回空,打开代码块的「日志」开关,运行后查看原始body内容,确认是JSON还是SSE流;
第三步:若body是SSE格式(以 data: {...} 开头),需改写代码块,用正则或逐行split提取最后一条非空data后的JSON;
第四步:将代码块输出的 output 字段连接到「回复」节点,保存并试运行。


















