【实战】Dify从0到100进阶--文档解读(10)参数提取&HTTP节点

发布于:2025-07-22 ⋅ 阅读:(11) ⋅ 点赞:(0)

在这里插入图片描述

参数提取节点(Parameter Extractor Node)

定义

参数提取节点利用 LLM 的理解与推理能力,将自然语言或非结构化文本中的关键信息抽取成结构化参数,供后续工具调用、HTTP 请求或流程分支使用。

核心功能

  1. 自然语言解析:从对话或文本中推理出需要的字段值(如日期、ID、关键词)。
  2. 结构化输出:将提取结果映射为声明的输出变量,并附带提取状态与原因。
  3. 工具集成:可快捷导入现有工具的参数定义,无缝连接工具调用节点。
  4. 灵活指令:支持示例引导和 Prompt/Function Call 两种推理方式,优化复杂场景表现。

支持场景

  • 精确检索:从用户输入中提取 Arxiv 论文编号或作者,用于论文检索工具调用。
  • 批量处理准备:将自由格式的章节列表转换为数组,作为迭代节点的输入。
  • 动态 API 调用:提取天气城市、日期等参数,并调用 HTTP 请求节点获取外部数据。
  • 工具参数收集:在对话中自动收集邮箱、文件名、路径等信息,用于文件操作工具或通知工具。

配置指南

1. 选择输入变量

  • 在节点配置中挑选包含自然语言或待提取文本的变量(例如 ${userQuery}${responseText})。

2. 定义输出参数

  • 手动添加字段:点击“新增参数”,配置 名称类型(String、Number、Array、Object 等)、必填
  • 导入工具参数:一键引入下游工具节点所需参数,保证类型与命名一致。

3. 填写指令模板

  • 在“指令”区域,描述提取逻辑与示例:
    从以下用户输入中提取论文编号(id)或作者名(author)。
    示例:
      输入:"2405.10739 这篇论文讲了什么内容?"
      输出:{"id": "2405.10739"}
    
  • 对复杂场景可编写多组示例,提高模型稳定性。

4. 选择推理模式

  • Function/Tool Call:优先尝试结构化函数调用(兼容多数模型);
  • Prompt:仅使用提示词推理,可在函数调用效果欠佳时备用。

5. 高级设置

  • 记忆:开启后注入对话历史,提升连续对话的上下文理解。
  • 图片支持:提取文本中嵌入的图片描述或 URL。

输出变量

名称 类型 说明
自定义字段 String/Number/Array/Object 提取的业务参数
__is_success Number(0/1) 1:提取成功;0:提取失败
__reason String 失败时的原因描述

典型示例

示例 1:Arxiv 论文检索

  1. 用户输入:"请帮我查一下这篇论文:2405.10739 的摘要。"

  2. 参数提取器输出:

    {
      "id": "2405.10739",
      "__is_success": 1,
      "__reason": ""
    }
    
  3. HTTP 请求节点调用:GET https://export.arxiv.org/api/query?id_list={{id}}

示例 2:章节数组生成

  1. LLM 节点输出长文段落:"第一章:… 第二章:… 第三章:…"
  2. 参数提取器配置:参数名 sections 类型 Array[String],示例将段落分割。
  3. 输出 sections = ["第一章:…","第二章:…","第三章:…"],供迭代节点使用。

调试与最佳实践

  • 提供多样示例:覆盖不同表述、异常情况,提升提取健壮性。
  • 校验 __is_success:下游逻辑可根据此字段进行分支或错误处理。
  • 结合模板/代码节点:对提取结果再做二次加工或格式化。

HTTP 请求节点(HTTP Request Node)

定义

HTTP 请求节点允许工作流向外部服务器发送任意 HTTP 请求,实现与第三方 API 或资源的交互。通过自定义请求方法、URL、请求头、查询参数、请求体及认证信息,您可以动态获取数据、触发 Webhook、上传/下载文件等。

支持功能

  1. 请求方法:GET、POST、PUT、PATCH、DELETE、HEAD 等常见 HTTP 方法。

  2. URL & 查询参数:静态或使用变量 ${} 动态构建 URL 与查询字符串。

  3. 请求头:自定义 Header,如 AuthorizationContent-Type 等。

  4. 请求体

    • JSON/Form:可插入结构化变量(Array/Object/String)。
    • Binary 文件:在 binary 区域选中文件变量,用于文件上传。
  5. 认证:支持 Basic Auth、Bearer Token、API Key 等常见认证方式。

  6. 文件处理:自动将响应中的文件保存为流程变量,后续节点可直接引用。

  7. 动态变量:请求配置中可任意引用上游变量,实现请求参数的动态化。

常见场景

  • 数据抓取:GET 某开放 API,获取实时天气、股价、新闻等。
  • 表单提交:POST 表单数据到服务器或第三方服务接口。
  • 文件上传:PUT 上传 PDF、图像等文件到文件存储或文档管理服务。
  • Webhook 调用:触发远程 Webhook 来通知业务系统或执行其他流程。
  • 动态内容生成:调用图片生成、文档转码等在线服务。

配置要点

  1. 选择方法 & URL:在 Method 下拉选择 HTTP 方法,在 URL 输入框填入目标地址,可使用 ${variable} 引用变量。

  2. 设置请求头:点击“新增 Header”,配置 Key/Value,支持变量替换。

  3. 配置查询参数:在 Query Params 列表中填写参数名与对应变量。

  4. 构建请求体:根据 API 要求选择 JSON、Form 或 Binary:

    • JSON:在 Body 区域输入 JSON 模板,支持 Jinja2 变量。
    • Form:逐个添加表单字段和值。
    • Binary:选中文件变量,自动将文件以二进制形式上传。
  5. 认证配置:在 Auth 面板选择认证类型,填写凭据或 Token。

  6. 输出处理:请求完成后,节点会生成:

    • statusCode(Number)
    • headers(Object)
    • body(String/Object,自动 JSON 解析)
    • file(File,当响应为文件时)

高级功能

错误重试

  • 开启重试:启用后,节点在遇到网络抖动或临时错误时会自动重试。
  • 配置项:最大重试次数(默认 3,可设至 10);重试间隔(毫秒)。

异常处理

  • 启用异常分支:在节点配置开启“异常处理”,可针对超时、4xx/5xx 响应定义分支策略。
  • 自定义流程:可将错误结果导入专用 LLM、通知或日志记录节点中,避免流程中断。

示例:客户评价系统

  1. 用户输入customerId = 12345, comment = "服务非常好!"

  2. HTTP 请求节点

    • Method:POST

    • URL:https://api.example.com/feedback

    • Body (JSON):

      {
        "id": "${customerId}",
        "comment": "${comment}"
      }
      
  3. 下游节点:根据 statusCode 判断是否成功,若失败则走异常分支提示用户重试。


网站公告

今日签到

点亮在社区的每一天
去签到