dify可调用scf函数,但需将scf配置为api网关触发器并启用公网访问;函数需返回单层json对象(如{"data":{"temp":"26°c"}}),url填入dify http节点并设post/json格式,测试时注意502延迟及404路径匹配。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

确认Dify与SCF的通信可行性
腾讯云函数(SCF)无法被Dify直接调用,因为Dify的HTTP节点默认只支持公网可访问的RESTful接口,而SCF默认生成的触发器域名是内网或受限访问地址,直接填入会返回403或连接超时。必须先将SCF函数配置为API网关触发器,并启用“公网访问”开关,否则后续所有配置都无效。
在SCF中创建并发布可被Dify调用的函数
方法一:使用控制台快速创建
登录腾讯云控制台 → 进入【云函数 SCF】→ 单击【新建函数】→ 选择【从头创建】→ 运行环境选 Python 3.9(兼容性最好)→ 函数名填 【dify-weather-proxy】(命名含dify前缀便于识别)→ 保持其他默认 → 单击【完成】。
方法二:部署带API网关的完整版本
进入函数代码页 → 替换 index.py 内容为标准HTTP响应模板(必须返回 status_code=200 + JSON body)→ 保存后,单击左侧【触发管理】→ 【添加触发器】→ 类型选【API 网关】→ 协议选【HTTP】→ 启用【公网访问】→ 路径填 /v1/weather → 部署环境选【发布】→ 单击【保存并部署】。
⚠️ 注意:触发器部署后需等待约90秒才生效,立即测试会返回 502 错误;此时可在【触发器列表】中查看“调用地址”,复制以 https:// 开头的完整URL,例如 https://service-xxxxxx.gz.apigw.tencentcs.com/release/v1/weather。
在Dify工作流中配置HTTP节点调用SCF
第一步:进入Dify工作流编辑页 → 拖入一个【HTTP】节点 → 双击打开配置面板。
第二步:在【URL】栏粘贴上一步获取的SCF调用地址,确保以 https:// 开头且路径完整。
第三步:设置请求方式为 POST → 在【Headers】中添加:Content-Type: application/json → 在【Body】中选择 JSON 格式,填入示例数据:
{"city": "{{inputs.city}}", "unit": "c"}
第四步:勾选【忽略 SSL 证书验证】(仅限测试阶段;生产环境请上传腾讯云API网关CA证书到Dify服务器并配置信任链)。
第五步:点击【测试运行】,输入 city=shenzhen → 查看返回是否含 temperature 字段。若返回 400 或空响应,说明SCF函数逻辑未正确解析 body;若返回 404,检查URL路径是否与API网关配置完全一致(包括 /release/ 层级)。
验证SCF函数返回结构是否适配Dify变量提取
Dify的HTTP节点会自动解析JSON响应体,但仅当顶层是对象(而非数组)时才能用点语法提取字段。例如响应为 {"code":0,"data":{"temp":"26°C"}},则可在后续LLM节点中写 {{http_response.data.temp}};若响应是 [{"temp":"26°C"}] 这种数组格式,Dify无法直接提取,必须修改SCF函数返回结构为单层对象。
这一步操作起来很简单,直接在SCF函数的 return 语句中包装一层 data 字段即可,避免后续每个节点都加Jinja2过滤器处理。
确认无误后,保存工作流并发布。Dify将通过腾讯云API网关安全转发请求至SCF,无需暴露函数私有地址或配置VPC对等连接。











