Dify外部数据连接实战:HTTP请求与代码执行节点配置详解

“HTTP 请求”“代码执行”这两个节点,可以让我们更方便地抓取外部数据以及对复杂数据进行简化/转化处理。

  • HTTP 请求 = 找别人拿数据。
  • 代码执行 = 把拿回来的数据加工成你想要的。

一. HTTP 请求节点

一句话理解: 让你的 AI 能够连接外面的世界(比如查网页,读写笔记,天气,发短信,获取最新的资讯,将信息同步到自己的网站等等)。

2e73fe

1.1 为什么需要它?

大模型(LLM)的知识是有截止日期的。如果你问它“今天上海的天气”,它无法预测。但通过 HTTP 请求节点,AI 可以实时去调用天气预报的接口,获取最新数据。

1.2 核心参数拆解

当你打开这个节点,会看到几个核心选项:

  • API方法 (Method):
    • GET:像“拿东西”。比如:获取网页上的文章,资讯。
    • POST:像“送东西”。比如:把 AI 生成的草稿发送到你的邮箱。
  • URL: 接口地址/访问网址之类。
  • Headers(请求头): 身份证。很多接口需要你提供 API Key 才能访问。
  • Body(请求体): 包裹内容。通常在 POST 时使用,告诉对方你要发什么数据。

1.3 实例说明

场景: 让 AI 帮我查询某个城市的实时天气。

  1. 在工作流中添加 HTTP 请求 节点。
  2. URL 填写天气 API 地址(如高德或和风天气)。
  3. 变量设置:把用户输入的“城市名”关联到 URL 的参数里。
  4. 输出:你会得到一串 JSON 数据(别慌,下面那个节点会教你怎么处理它)。

Http请求节点输出的数据一般无法被LLM轻易识别采用,所以通常还需要用代码执行节点转化成LLM喜欢的样式。

aa9c42

二. 代码执行节点

当大模型算不清楚数,或者处理不好复杂格式时,直接用一段专业的代码来搞定。代码执行节点不仅可以将HTTP请求得到的数据整理得简单清晰,还可以转化数据的类型。

c131da

2.1 为什么需要它?

  • 精准计算: AI 算 $12345 \times 67890$ 可能会出错,但 Python 代码永远不会。
  • 数据清洗: 上面的 HTTP 节点返回了一大堆乱糟糟的数据,代码节点可以只提取你想要的那一行。
  • 逻辑控制: 比如“如果分数大于 60 就输出及格”,代码处理起来更干脆。

2.2 Dify里的参数

  • 输入变量,一般是前一个节点的输出内容。
  • PYTHONS3,你想对代码如何处理。
  • 输出变量,传导给后面个节点的值。

目前 Dify 支持 Python3JavaScript。你不需要写几百行,通常只需几行逻辑。

2.3 如何写PYTHONS代码

只需要将前一个节点参数设置截图和你希望它怎么处理数据丢给AI大模型,就可以获得对应的代码,不需要自己写,所以不懂也没关系。代码节点通常长这样:

def main(input_data):
    # input_data 是你从上一个节点传进来的变量
    city = input_data['city']
    temp = input_data['temp']
    
    # 做一点简单的处理
    result = f"{city}当前温度是{temp}度。"
    
    # 必须返回一个字典格式
    return {
        "output": result
    }

三. 搭配使用

在 Dify 的工作流中,Http请求通常都需要代码执行去处理数据,比如:

  1. 用户输入:我要看北京的天气。
  2. HTTP 请求:去气象局拿数据(拿到了一堆含坐标、湿度、风力的复杂数据)。
  3. 代码执行:从那堆数据里只挑出“气温”和“天气状况”。
  4. LLM 节点:把清洗好的数据喂给 AI,让它用甜美的语气播报出来。

四. 使用指南

  1. JSON 格式: HTTP 请求和代码节点最喜欢的数据格式叫 JSON。如果你不确定怎么写,可以把数据丢给 ChatGPT,说:“帮我写一段 Dify 的 Python 代码,提取这段 JSON 里的 XXX 字段”。
  2. 测试、测试、再测试: 每一个节点右上角都有个“运行”按钮。别等整个工作流写完再测,写完一个节点就点一下运行,看输出对不对。
  3. API Key 安全: 永远不要把你的私密 Key 直接写在代码里,尽量使用 Dify 的环境变量功能。

© 文章版权归白小菌所有,🫰欢迎转发分享。未经允许请勿抄袭转载。

订阅评论
提醒
guest
0 评论
最新
最旧 最多投票
内联反馈
查看所有评论

AI 小菌
现代响应式侧边栏
快捷菜单