Skip to main content
⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考英文原版
Agent 策略插件帮助 LLM 执行推理或决策等任务,包括选择和调用工具以及处理结果。这使系统能够更自主地解决问题。 下面,你将看到如何开发一个支持 Function Calling 来自动获取当前时间的插件。

前置条件

  • Dify 插件脚手架工具
  • Python 环境(版本 ≥ 3.12)
有关准备插件开发工具的详细信息,请参阅初始化开发工具
提示:在终端中运行 dify version 以确认脚手架工具已安装。

1. 初始化插件模板

运行以下命令为你的智能体插件创建开发模板:
按照屏幕提示操作,并参考示例注释获取指导。
初始化完成后,你将获得一个包含插件开发所需全部资源的文件夹。熟悉Agent 策略插件的整体结构将简化开发过程:
此插件的所有关键功能都在 strategies/ 目录中。

2. 开发插件

Agent 策略插件的开发围绕两个文件展开:
  • 插件声明strategies/basic_agent.yaml
  • 插件实现strategies/basic_agent.py

2.1 定义参数

要构建智能体插件,首先在 strategies/basic_agent.yaml 中指定必要的参数。这些参数定义了插件的核心功能,例如调用 LLM 或使用工具。 我们建议首先包含以下四个参数:
  1. model:要调用的大语言模型(例如 GPT-4、GPT-4o-mini)。
  2. tools:增强插件功能的工具列表。
  3. query:发送给模型的用户输入或提示词内容。
  4. maximum_iterations:防止过度计算的最大迭代次数。
示例代码:
配置好这些参数后,插件将自动生成用户友好的界面,以便你轻松管理它们: Agent Strategy Plugin UI

2.2 获取参数并执行

用户填写这些基本字段后,你的插件需要处理提交的参数。在 strategies/basic_agent.py 中,为智能体定义一个参数类,然后在你的逻辑中获取并应用这些参数。 验证传入参数:
获取参数后,执行具体的业务逻辑:

3. 调用模型

在Agent 策略插件中,调用模型是工作流的核心。你可以使用 SDK 中的 session.model.llm.invoke() 高效地调用 LLM,处理文本生成、对话等任务。 如果你希望 LLM 处理工具,请确保它输出结构化参数以匹配工具的接口。换句话说,LLM 必须根据用户的指令生成工具可以接受的输入参数。 构造以下参数:
  • model
  • prompt_messages
  • tools
  • stop
  • stream
方法定义示例代码:
要查看完整的功能实现,请参阅模型调用的示例代码。 此代码实现以下功能:用户输入命令后,Agent 策略插件自动调用 LLM,根据生成的结果构造工具调用所需的参数,并使模型能够灵活调度集成的工具以高效完成复杂任务。 生成工具的请求参数

4. 处理工具

指定工具参数后,Agent 策略插件必须实际调用这些工具。使用 session.tool.invoke() 来发起这些请求。 构造以下参数:
  • provider
  • tool_name
  • parameters
方法定义示例代码:
如果你希望 LLM 自己生成工具调用所需的参数,可以将模型的输出与工具调用代码结合起来实现。
完成这些设置后,你的Agent 策略插件可以自动执行 Function Calling——例如,获取当前时间。 工具调用

5. 创建日志

Agent 策略插件中,通常需要多个步骤才能完成复杂任务。对于开发者来说,跟踪每个步骤的结果、分析决策过程和优化策略至关重要。使用 SDK 中的 create_log_messagefinish_log_message,你可以在调用前后记录实时状态,有助于快速诊断问题。 例如:
  • 在调用模型之前记录”开始模型调用”消息,明确任务的执行进度。
  • 模型响应后记录”调用成功”消息,确保模型的输出可以端到端追踪。
设置完成后,工作流日志将输出执行结果: 智能体输出执行结果 如果出现多轮日志,你可以通过在日志调用中设置 parent 参数来分层组织它们,使其更易于跟踪。 参考方法:

智能体插件功能示例代码

调用模型

以下代码演示了如何为Agent 策略插件赋予调用模型的能力:

6. 调试插件

完成插件的声明文件和实现代码后,在插件目录中运行 python -m main 以重新启动它。接下来,确认插件运行正常。Dify 提供远程调试功能——前往插件管理获取你的调试密钥和远程服务器地址。 返回你的插件项目,将 .env.example 复制为 .env 并填入相关的远程服务器和调试密钥信息。
然后运行:
你将看到插件已安装到你的工作区中,团队成员也可以访问它。 浏览插件

打包插件(可选)

一切正常后,你可以通过运行以下命令打包你的插件:
当前文件夹中会出现一个名为 google.difypkg(示例)的文件——这就是你的最终插件包。 恭喜! 你已经完整地开发、测试和打包了你的Agent 策略插件。

发布插件(可选)

你现在可以将其上传到 Dify 插件仓库。在此之前,请确保它符合插件发布指南。一旦获得批准,你的代码将合并到主分支,插件将自动在 Dify Marketplace 上线。

进一步探索

复杂任务通常需要多轮思考和工具调用,通常重复模型调用 → 工具使用直到任务结束或达到最大迭代限制。在此过程中,有效管理提示词至关重要。查看完整的 Function Calling 实现,了解让模型调用外部工具并处理其输出的标准化方法。
编辑此页面 | 报告问题