使用Dify的Agent模块实现复杂能力

文章目录

龙云尧个人博客,转载请注明出处。 CSDN地址:http://blog.csdn.net/michael753951 个人blog地址:http://yaoyl.cn

在之前的《实现一个简单的Agent》文章中,我们使用Dify创建了一个能够创作单篇短篇小说的Agent。

但面对更复杂的任务,如撰写多章节长篇小说时,简单的LLM调用就显得力不从心了。

本文将详细介绍如何利用Dify的官方agent组件实现一个plan-act模式的复杂Agent,让它能够规划并撰写多章节小说。

什么是Plan-Act模式?

我们在前文Continue插件模式分析:Chat、Plan与Agent模式深度解析中,已经分析过Continue插件的Plan模式。

而Agent设计范式中,Plan-Act模式是Plan模式的增强版,能够的Agent具有更强的任务分解和执行能力:

  • Plan阶段:Agent分析用户需求,制定详细的执行计划,包括分解复杂任务为多个可执行的子任务;
  • Act阶段:Agent按计划逐步执行各个子任务,并在执行过程中根据情况动态调整计划。

这种模式让Agent具备了类似人类的规划思维能力,能够处理更加复杂的任务。

为什么需要复杂Agent?

简单Agent在面对多章节小说创作这类任务时存在以下局限:

  • 上下文长度限制:无法一次性处理长篇内容的创作;(大模型会限制每次对话时上下文的总token长度)
  • 缺乏一致性:一旦生成的文章过长,各章节之间的人物设定、情节发展容易出现矛盾;(大模型本质上是概率模型,过长的推理内容输出会造成误差累计,从而产生幻觉)
  • 缺乏整体规划:难以保证小说的整体结构和逻辑连贯性;(每次请求过程中,如果请求内容过长,大模型在生成响应式,可能会遗忘某些输入内容,因此长篇小说很容易出现前文遗忘的问题,导致结构松散,逻辑不连贯)
  • 错误传播:某一部分的错误会影响后续内容的创作质量。

创建实现Plan-Act模式的Agent

基于我们之前的分析,我们需要调用两次LLM,第一次创建一个Plan,第二次生成Act。

步骤1:创建Planning Agent

系统提示词如下:

1你是一位资深小说架构师。请根据用户提供的主题,生成一个完整的中篇小说规划,规划内容包括:
21. 世界观设定(时代、地点、核心规则)
32. 主要角色档案(姓名、背景、动机、性格弧光)
43. 章节大纲(共N章,每章1000字以内,含关键事件;规划三幕结构,安排高潮、转折、伏笔)
54. 伏笔清单(格式:ID | 埋设章节 | 预期回收章节 | 描述)

为了方便后续的Act agent生成结果,我们使用结构化输出,将结果格式化为JSON。

大模型配置结构化输出

结构化输出

结构化输出planning结果

我的输出JSON样例如下:

1{
2  "world": "...",
3  "characters": [{"name": "...", "background": "..."}],
4  "chapters": ["第一章:...", "第二章:..."],
5  "foreshadowings": [{"id": "F001", "placed_in": 2, "resolve_by": 6, "desc": "..."}]
6}

测试Planning Agent

测试Planning Agent

因为我们是新部署的项目,我们需要先安装Agent模块,安装入口如下:

选择Agent模块

Dify官方Agent模块

步骤2:配置Planning Agent

步骤3:配置Agent的系统提示(System Prompt)

这是整个Agent的核心部分,我们要定义Agent的角色、能力和行为准则:

 1你是一个专业的长篇小说创作助手。你需要帮助用户创作一部多章节的小说,要求有完整的世界观、一致的人物性格、合理的情节发展。
 2
 3具体要求如下:
 4
 51. 小说需包含背景设定(世界观、时间、地点、社会结构等);
 62. 需要建立完整的角色档案(姓名、性格、外貌、背景、动机等);
 73. 需要规划章节大纲(章节标题、主要内容、角色互动、冲突发展、关系变化等);
 84. 每个章节应保持800-1500字的长度;
 95. 保证人物性格前后一致,情节发展合理连贯。
10
11你的工作流程应该是:
121. 首先规划小说的整体框架;
132. 然后逐章节创作内容;
143. 最后整合成完整的小说。
15
16当遇到需要决策的情况时,优先考虑故事的连贯性和吸引力。

步骤4:配置用户输入

在用户输入区域,我们定义一个变量novel_requirements,用于接收用户对小说的具体要求。

步骤5:配置工具使用权限

为了让Agent更好地完成任务,我们需要授予它适当的工具使用权限:

  • 代码解释器:用于组织和处理数据结构,如角色列表、章节大纲等;
  • 搜索工具:用于获取创作所需的背景资料(如果需要);
  • 记忆工具:用于保持小说设定的一致性。

在"Detailed Configuration" -> "Advanced" -> "Tool Selection"中启用这些工具。

步骤6:设置模型参数

对于复杂任务,我们采用较为平衡的参数设置:

  • Temperature: 0.7(保持创造性的同时确保逻辑性)
  • Top-P: 0.8(平衡词汇选择的质量和多样性)
  • Max Tokens: 3000(允许生成较长的回复)

Agent规划功能详解

小说背景设定规划

Agent首先会根据用户需求创建详细的世界观设定:

  • 时空背景:小说发生的时代、地点和社会环境;
  • 世界规则:物理法则、魔法体系、科技水平等;
  • 文化背景:社会价值观、宗教信仰、风俗习惯等;
  • 政治格局:权力结构、国家关系、势力分布等。

角色档案规划

Agent会为每个重要角色建立完整的档案:

  • 基本信息:姓名、年龄、性别、外貌特征;
  • 性格特点:优点、缺点、兴趣爱好、恐惧等;
  • 背景故事:出身、经历、重要事件、创伤或成就;
  • 角色动机:目标、欲望、恐惧、改变的渴望;
  • 人际关系:与其他角色的关系、冲突点、合作点。

章节内容规划

Agent会制定详细的章节规划:

  • 章节标题:体现本章核心内容的标题;
  • 主要角色:本章中活跃的主要角色;
  • 时空场景:本章发生的时间和地点;
  • 核心事件:本章的关键事件和发展;
  • 冲突发展:本章中出现的冲突和解决方式;
  • 关系变化:角色间关系的演变。

实际应用演示

让我们通过一个实际例子来演示Agent的工作过程:

用户输入:帮我写一部科幻小说,讲述人类首次接触外星文明的故事。

Agent的规划过程

  1. 背景设定:2150年,人类掌握了近光速飞行技术,建立了太阳系内的星际联邦。在火星轨道附近发现神秘信号,追踪至一颗未知行星。

  2. 角色档案

    • 艾琳·卡特船长:女,42岁,经验丰富的探险队指挥官,冷静理性但内心充满好奇心
    • 马克·张:男,35岁,语言学家和外交专家,善于沟通但有时过于理想主义
    • AI助手ARIA:高智能人工智能,负责数据分析,逻辑严密但缺乏情感理解
  3. 章节规划

    • 第1章:神秘信号 - 发现信号,组建探险队
    • 第2章:初次接触 - 遇到外星飞船,尝试通讯
    • 第3章:文明碰撞 - 了解外星文明,文化冲突
    • 第4章:危机降临 - 双方误解引发冲突
    • 第5章:理解与合作 - 找到共同点,达成理解

执行过程

Agent会按计划逐步创作每一章,每章完成后会评估进度并调整后续计划,确保整体连贯性。

Plan-Act模式的优势

相比简单Agent,Plan-Act模式的Agent具有明显优势:

  • 任务分解能力:复杂任务被分解为可管理的子任务;
  • 动态调整能力:执行过程中可以根据情况调整计划;
  • 长期记忆:保持小说设定的一致性;
  • 错误纠正:及时发现并修正创作中的问题;
  • 质量控制:每个步骤都有明确的目标和评估标准。

总结

通过Dify的Agent模块和Plan-Act模式,我们成功构建了一个能够处理复杂任务的AI创作助手。这个Agent不仅能够创作多章节小说,还具备了规划、执行和调整的能力,大大提升了AI应用处理复杂任务的水平。

这种模式的应用远不止于小说创作,还可以扩展到项目管理、研究分析、教学辅导等多个领域,展现了AI Agent在未来的重要价值。

相关系列文章