当前位置: 首页 > news >正文

Dify 从入门到精通(第 10/100 篇):使用 Dify 工具集扩展功能

Dify 从入门到精通(第 10/100 篇):使用 Dify 工具集扩展功能

在 Dify 博客系列:从入门到精通(100 篇) 的前九篇文章中,我们系统地探索了 Dify 的核心概念与实践。

Dify 入门到精通系列文章目录

  • 第一篇《Dify 究竟是什么?真能开启低代码 AI 应用开发的未来?》介绍了 Dify 的定位与优势
  • 第二篇《Dify 的核心组件:从节点到 RAG 管道》深入剖析了 Dify 的功能模块
  • 第三篇《Dify vs 其他 AI 平台:LangChain、Flowise、CrewAI》对比了 Dify 与其他平台的优劣
  • 第四篇《快速上手 Dify 云端:5 分钟创建第一个应用》带您实践了云端部署的问答机器人
  • 第五篇《Dify 本地部署入门:Docker Compose 指南》讲解了本地部署
  • 第六篇《配置你的第一个 LLM:OpenAI、Claude 和 Ollama》介绍了 LLM 配置
  • 更多文章:Dify 博客系列:从入门到精通(100 篇)

本文是系列的第十篇,聚焦 Dify 的工具集功能,深入讲解如何通过内置工具(如 Serper、JinaReader)和自定义工具扩展 Dify 应用的能力。我们将通过实践构建一个结合搜索和网页抓取的实时信息查询系统。本文侧重知识干货,确保您在 30-40 分钟内掌握工具集的配置与应用。本文适合初学者、开发者以及希望扩展 Dify 功能的从业者。完成本文后,您将为后续文章(如第 11 篇《Dify 从入门到精通(第 11/100 篇):优化 Prompt 工程:提升 LLM 性能》)做好准备。跟随 逻极,解锁 Dify 的工具集扩展之旅!

什么是 Dify 工具集?

Dify 的工具集(Tools)是扩展应用功能的关键组件,允许用户在 Chatflow 和 Workflow 中调用外部 API 或自定义代码,获取实时数据或执行特定任务。工具集分为内置工具和自定义工具:

  • 内置工具:Dify 提供预配置工具,如 Serper(实时搜索)、JinaReader(网页抓取)、Yahoo Finance(金融数据)。
  • 自定义工具:通过 Code 节点(Python/Node.js)或 API 集成实现特定功能。
  • 核心优势
    • 实时数据:补充知识库,获取最新信息。
    • 灵活性:支持多种场景,如搜索、数据分析、自动化任务。
    • 无代码配置:内置工具通过可视化界面快速集成。

适用场景

  • 实时问答:结合 Serper 回答最新问题。
  • 内容抓取:用 JinaReader 提取网页数据。
  • 数据分析:通过 Yahoo Finance 获取市场数据。
  • 自定义逻辑:用 Code 节点处理复杂任务。

注意:本文假设您已完成 Dify 云端(第四篇)或本地部署(第五篇),并配置了 LLM(第六篇)。若未完成,建议先参考前文。

前置准备

在开始之前,您需要:

  1. Dify 环境
    • 云端:登录 Dify 官网,确保有 API 调用额度。
    • 本地:完成第五篇的 Docker Compose 部署,访问 http://localhost:3000.
  2. LLM 配置
    • 已配置 OpenAI GPT-4o、Claude 3.5 或 Ollama Llama 3(参考第六篇)。
  3. 工具 API 密钥
    • Serper API 密钥(从 Serper 获取)。
    • 可选:Yahoo Finance API 密钥(或其他数据源)。
  4. 数据源
    • 准备知识库(如“company_faq.pdf”)或网页 URL(如 https://company.com/news)。
  5. 工具
    • 浏览器:访问 Dify 仪表板。
    • 可选:curl 或 Postman,测试 API 调用。
    • 可选:代码编辑器(如 VS Code),编写自定义工具。
  6. 时间预估:30-40 分钟(含配置和测试)。

干货:Serper 提供免费试用额度(100 次搜索),适合测试;优先选择 GPT-4o 作为 LLM,快速响应且适合工具集场景;本地部署用户需确保网络支持外部 API(如 api.serper.dev)。

步骤 1:配置内置工具

我们将配置 Serper(实时搜索)和 JinaReader(网页抓取),构建一个实时信息查询系统。

  1. 配置 Serper

    • 登录 Dify 仪表板,点击“Tools” > “Add Tool” > “Serper”.
    • 输入 Serper API 密钥(从 Serper 获取)。
    • 配置:
      Name: Serper Search
      API Key: <your_serper_key>
      
    • 点击“Test Connection”,确认返回搜索结果。
    • 点击“Save”。
  2. 配置 JinaReader

    • 点击“Tools” > “Add Tool” > “JinaReader”.
    • 配置:
      Name: JinaReader
      Base URL: https://r.jina.ai/
      
    • 无需 API 密钥,JinaReader 免费使用(有限制)。
    • 点击“Test Connection”,输入 URL(如 https://company.com/news),确认返回网页内容。
    • 点击“Save”。

干货

  • Serper 配置:确保 API 密钥有效,测试查询(如“AI trends 2025”)检查结果质量。
  • JinaReader 限制:免费版支持简单网页,复杂动态网页(如需登录)可能需付费版。
  • 工具测试:在“Tools”面板手动输入查询,验证输出格式(JSON 或文本)。

步骤 2:创建 Workflow 应用

我们将构建一个 Workflow,结合 Serper 和 JinaReader,回答用户关于行业的最新问题(如“AI in healthcare trends”)。

  1. 创建应用

    • 点击“Create Application” > “Workflow”.
    • 命名应用(如“Real-Time Query Bot”)。
    • 选择“Blank Workflow”。
  2. 配置工作流

    • Start 节点
      • 定义输入:
        query: string (e.g., "AI in healthcare trends")
        
      • 输出变量:query.
    • Tools 节点(Serper)
      • 选择“Serper Search”.
      • 配置:
        Query: {{start.query}}
        Max Results: 5
        
      • 输出变量:search_results(类型:数组)。
    • Tools 节点(JinaReader)
      • 选择“JinaReader”.
      • 配置:
        URL: {{search_results[0].url}} (提取搜索结果的第一个 URL)
        
      • 输出变量:web_content(类型:字符串)。
    • LLM 节点
      • 选择模型:GPT-4o.
      • 配置 Prompt:
        Based on the search results {{search_results}} and webpage content {{web_content}}, answer {{start.query}} in a concise tone, under 100 words. Provide key trends and insights.
        
      • 参数:
        Temperature: 0.5
        Max Tokens: 100
        
      • 输出变量:answer_text(类型:字符串)。
    • Answer 节点
      {{llm.answer_text}}
      

干货

  • 节点连接:确保 search_results[0].url 有效,添加 If/Else 节点检查 URL 可用性。
  • Prompt 优化:明确“key trends” 和“under 100 words”控制输出质量。
  • 工具顺序:Serper 先于 JinaReader,确保网页抓取基于搜索结果。

步骤 3:测试与调试

  1. 预览测试

    • 点击“Preview”,输入:
      query: AI in healthcare trends
      
    • 预期输出:
      AI in healthcare trends include improved diagnostics (95% accuracy in imaging), predictive analytics reducing costs by 20%, and chatbots adopted by 30% of clinics, per recent studies.
      
  2. 调试常见问题

    • 搜索结果不相关
      • 优化 query(如“AI healthcare trends 2025”)。
      • 检查 Serper API 配额。
    • 网页抓取失败
      • 验证 search_results[0].url 是否可访问。
      • 测试 JinaReader 独立抓取(如 https://company.com/news)。
    • LLM 输出冗长
      • 调整 Max Tokens(100)或 Prompt 字数限制。
    • 使用“Workflow Process”面板:
      • 检查 search_results 是否包含有效数据。
      • 验证 web_content 是否提取完整网页文本。
  3. API 测试

    • 获取 API 端点(“API Access”面板):
      Endpoint: http://localhost:5001/v1/workflows/run (本地) 或 https://api.dify.ai/v1/workflows/run (云端)
      Authorization: Bearer <your_api_key>
      
    • 测试:
      curl -X POST http://localhost:5001/v1/workflows/run \
      -H "Authorization: Bearer <your_api_key>" \
      -H "Content-Type: application/json" \
      -d '{"inputs": {"query": "AI in healthcare trends"}, "app_id": "real-time-query-bot"}'
      

干货

  • 调试技巧:启用“Workflow Process”查看工具输出(Dify v1.5.0 功能),快速定位问题。
  • API 优化:使用 response_format=json 确保结构化输出。
  • 日志监控:检查 Dify 日志(云端:仪表板“Logs”;本地:docker logs dify-api)。

步骤 4:配置自定义工具

我们将通过 Code 节点创建一个自定义工具,提取搜索结果中的关键词。

  1. 创建 Code 节点

    • 在 Workflow 中添加“Code”节点,放置在 Serper 节点之后。
    • 选择语言:Python.
    • 输入代码:
      from collections import Counter
      import redef main(search_results):text = " ".join([result["snippet"] for result in search_results])words = re.findall(r'\w+', text.lower())keywords = Counter(words).most_common(5)return [{"keyword": k, "count": c} for k, c in keywords]
      
    • 输入变量:search_results(从 Serper 节点)。
    • 输出变量:keywords(类型:数组)。
  2. 更新 LLM 节点

    • 修改 Prompt:
      Based on {{search_results}}, {{web_content}}, and keywords {{keywords}}, answer {{start.query}} in a concise tone, under 100 words. Highlight top keywords.
      
    • 示例输出:
      AI in healthcare trends include diagnostics (95% accuracy), predictive analytics (20% cost reduction), and chatbots (30% clinic adoption). Top keywords: AI, diagnostics, analytics.
      

干货

  • 代码调试:在 Code 节点面板测试输入(如 [{"snippet": "AI diagnostics..."}]),验证输出。
  • 性能优化:限制关键词数量(如 5 个)减少 LLM 输入长度。
  • 可复用性:保存 Code 节点为自定义工具,复用至其他 Workflow。

步骤 5:发布与集成

  1. 发布 WebApp

    • 点击“Publish”,生成 WebApp 链接:
      • 云端:https://cloud.dify.ai/apps/real-time-query-bot
      • 本地:http://localhost:3000/apps/real-time-query-bot
    • 测试 WebApp 界面,输入查询,确认回答准确。
  2. 嵌入网站

    • 使用 iframe 嵌入:
      <iframe src="http://localhost:3000/apps/real-time-query-bot" width="100%" height="600px"></iframe>
      
    • 调整 CSS 匹配品牌风格。
  3. API 集成

    • 集成到分析系统,示例请求:
      curl -X POST https://api.dify.ai/v1/workflows/run \
      -H "Authorization: Bearer <your_api_key>" \
      -H "Content-Type: application/json" \
      -d '{"inputs": {"query": "AI in healthcare trends"}, "app_id": "real-time-query-bot", "response_format": "json"}'
      

干货

  • WebApp 定制:使用 Dify WebApp SDK 调整 UI(如按钮颜色)。
  • API 安全:设置 IP 白名单,定期轮换密钥。
  • 批量查询:修改 Start 节点接受数组(如 queries: ["AI in healthcare", "AI in finance"])。

进阶技巧

  1. 工具组合

    • 添加 Yahoo Finance 工具:
      • 配置:
        Query: {{start.query}} + "stock market"
        
      • Prompt:
        Combine {{search_results}}, {{web_content}}, and {{yahoo_finance_data}} to answer {{start.query}}.
        
  2. 动态工具选择

    • 添加 If/Else 节点:
      If {{start.query}} contains "stock", use Yahoo Finance; else use Serper.
      
  3. 自定义工具扩展

    • 创建 API 工具:
      Name: Custom API
      Endpoint: https://api.example.com/data
      Method: GET
      Headers: {"Authorization": "Bearer <your_key>"}
      
    • 输出变量:custom_data.
  4. 批量处理

    • 使用 Iteration 节点循环处理多个查询:
      Input: {{start.queries}}
      Max Iterations: 5
      

干货:定期检查工具 API 配额(如 Serper 每日限制),保存常用工具配置为模板,复用至其他项目。

常见问题与排查

  • Q:Serper 返回无关结果?

    • A:优化查询(如“AI healthcare trends 2025”),检查 API 密钥有效性。
  • Q:JinaReader 抓取失败?

    • A:验证 URL 可访问,尝试静态网页,或使用付费版 JinaReader。
  • Q:Code 节点报错?

    • A:检查输入格式(search_results 为数组),测试代码逻辑。
  • Q:API 调用超时?

    • A:检查网络连接,验证 app_id 和密钥。

干货:使用“Tools”面板测试工具输出,记录 API 调用日志(Dify 仪表板“Logs”)分析性能。

实践案例:实时信息查询系统

背景:一家咨询公司需实时查询行业趋势(如 AI 在医疗领域),结合搜索和网页数据生成回答。

  • 环境:Dify 云端,GPT-4o,Serper,JinaReader.
  • 配置
    • Workflow:Blank Workflow.
    • Start 节点:
      query: AI in healthcare trends
      
    • Tools 节点:Serper({{start.query}}),JinaReader({{search_results[0].url}})。
    • Code 节点:提取关键词(Python)。
    • LLM Prompt:
      Answer {{start.query}} using {{search_results}}, {{web_content}}, {{keywords}}. Concise, under 100 words.
      
  • 测试
    • 输入:AI in healthcare trends
    • 输出:
      AI diagnostics achieve 95% accuracy in imaging, predictive analytics cut costs by 20%, and chatbots are adopted by 30% of clinics. Top keywords: AI, diagnostics, analytics.
      
  • 发布:API 集成到 BI 系统。

成果:30 分钟完成配置,提供实时精准回答,节省 80% 人工研究时间。

结论

通过本文,您掌握了 Dify 工具集的配置与应用,学会了使用 Serper、JinaReader 和自定义工具扩展功能。从内置工具配置到 Workflow 设计,再到测试和优化,我们提供了详细步骤和实用技巧。工具集的灵活性使 Dify 能应对实时数据和复杂任务需求。本文的实践为后续高级功能开发奠定了基础。

在 Dify 博客系列:从入门到精通(100 篇) 的下一篇文章——第 11 篇《Dify 从入门到精通(第 11/100 篇):优化 Prompt 工程:提升 LLM 性能》中,我们将深入探讨 Prompt 工程技巧,提升 Dify 应用的回答质量。继续跟随 逻极,解锁 Dify 从入门到精通的完整学习路径!

http://www.lryc.cn/news/607954.html

相关文章:

  • 测试环境 PostgreSQL 库连接不上—案例分享
  • 设计Mock华为昇腾GPU的MindSpore和CANN的库的流程与实现
  • 音视频学习(四十六):声音的三要素
  • 【故障处理】redis会话连接满导致业务系统某个模块数据不显示
  • 【Flutter3.8x】flutter从入门到实战基础教程(八):公共state的集中管理机制
  • Kafka——关于Kafka动态配置
  • LeetCode 65:有效数字
  • OSPF综合实验(一)
  • 如何在 Ubuntu 24.04 或 22.04 LTS Linux 上安装 Guake 终端应用程序
  • 切换python多版本
  • Spring 中 Bean 的生命周期
  • 机器学习sklearn:聚类
  • 深入 Go 底层原理(四):GMP 模型深度解析
  • 深入 Go 底层原理(八):sync 包的实现剖析
  • 中科院自动化所机器人视觉中的多模态融合与视觉语言模型综述
  • Python 程序设计讲义(54):Python 的函数——函数概述
  • Java 集合框架: LinkedHashSet
  • innoDB的buffer pool
  • API征服者:Python抓取星链卫星实时轨迹
  • k8s集群部署(脚本版)
  • 【CVPR2025】计算机视觉|即插即用|GCNet:炸裂!实时语义分割新星GCNet,性能速度双突破!
  • 前端应用权限设计面面观
  • JVM中的垃圾回收暂停是什么,为什么会出现暂停,不同的垃圾回收机制暂停对比
  • 题解:P4447 [AHOI2018初中组] 分组
  • rabbitmq消息队列详述
  • python创建一个excel文件
  • PHP 与 MySQL 详解实战入门(2)
  • Removing Digits(Dynamic Programming)
  • 【第三章】变量也疯狂:深入剖析 Python 数据类型与内存原理
  • Android13文件管理USB音乐无专辑图片显示的是同目录其他图片