学习Agent,从dify开始
Key Takeaway
- Agent平台分为生态流派(如钉钉)和工具流程流派(如dify),dify通过提供知识库和工具来创建Multi-Agent System。
- 学习Agent应从dify入手,因为它将代码逻辑以直观的流程图形式呈现,便于理解和实践。
- dify的工作流设计强调逻辑和流程的整体性,大模型仅在需要时介入,而非主导一切。
- 工作流可以根据用户输入进行条件判断和分支处理,实现更精细化的任务执行。
- dify的工作流示例(如文本总结)展示了如何结合知识库和Prompt来提升大模型的专业能力。
- 通过dify实践Agent,有助于建立对Multi-Agent System的基本认知,并为学习其他Agent框架打下基础。
Full Content
Agent平台有两大流派:
一是生态。比如钉钉这种。
在钉钉上边,已经承载了大量企业的部分业务,沉淀了很多内部数据。这时候你在原有生态基础上添加Agent,让企业能调用大模型的能力,并且围绕这个能力去构建智能化的工作流,是非常顺理成章的事儿。
二是工具流程。比如dify这种。
dify提供了创建Multi-Agent System需要的两个基础:
知识库和工具。其中,工具你可以用现成的,也可以自己创建。在这两个基础上,你再去搭建Chatbot、Agent,或者一大套工作流。
很多小伙伴看了我前几期视频,跑来私信问我该怎么学习Agent。我的建议是,通过擅长工具和流程的dify来上手。两个原因:
第一,之前在知识星球newtype里反复讲的——Agent最核心的,不是技术,而是工作流,是你想让它们具体怎么做。
dify在这方面做得特别直观——它把代码的逻辑,用流程的方式,在画板上呈现出来。你一用就明白。我待会儿会演示。
第二,也是我之前总强调的,Learning by Doing,边做边学。
对咱们来说,AI不是一个理论问题,而是一个实操问题。而dify特别适合拿来拆卸和组装。你就把它当作玩具、当作积木。当你把一个Workflow跑通了,不仅能学到点东西,而且还挺有成就感的。
那么,具体该怎么上手好呢?很简单:
先看看人家是怎么做的。dify官方提供了好多现成的工作流,你随便挑一个感兴趣的,拆开研究研究。然后再自己亲自动手,搭建一个简单的试试。
我带大家过一遍官方提供的工作流Sample,这个叫“文本总结工作流”。
一般来说,一套工作流是以用户的输入作为起点的。在这个文本总结工作流里,它要求用户输入需要总结的文本,并且选择总结之后是个概述,还是技术摘要:
如果只是概述的话,那很简单,直接让大模型搞就好;如果是技术摘要的话,就会涉及到很多专业的概念和表述,这就需要用到知识库,毕竟大模型的预训练资料中不包含这些Domain Knowledge。
第一步让用户二选一,那么在第二步,就需要根据用户的选择,做一个条件判断,用到if、else——这个对有编程经验的小伙伴来说,应该非常亲切。
因为有了条件判断,所以在第三步出现分叉,就像前边说的:
如果用户要的东西会涉及到专业内容,那么就去知识库里检索一下。然后把用户要总结的文本,以及从知识库里找到的相关内容一起给到GPT-3.5。
如果用户单纯只是要一个文本的概述,那就直接把需要总结的文本给到GPT-3.5,省掉知识库检索的步骤,速度会快一些。
当分叉的第四步完成之后,第五步就是把两个分支进行合并。不管是哪种情况,反正把结果拿过来,给到第六步,套进一个模板,最后全部完成。
这就是一个典型的工作流。我之所以拿出来介绍,是希望大家能理解人家的思路:
第一,大模型并不是全部,而是在一些需要它发挥作用的环节才出手。最重要的还是逻辑、流程,是一个整体性的东西,需要你有全局观。
就像刚才那个分叉,你如果在一开始没有特意让用户帮你做一个选择,以及后边不加条件判断环节的话,那你只能不管三七二十一都去知识库里做检索,这样速度会慢很多。
第二,如果涉及到知识库的话,需要给大模型提供两个东西:知识库里检索到的信息,和最初用户的需求。这一步跟RAG里的流程是一样的。
这两个输入,可以在大模型的Prompt里交代清楚。你愿意的话,可以在这边把你期望的格式也告诉大模型,其实也就是CrewAI里的expected output。
除了我刚演示的官方Sample,其它的也建议大家看看,就知道一般都有哪些玩法了。举个例子:
如果需要根据用户的输入来判断后边怎么执行的话,除了刚才那个if、else的条件判断,还可以用“问题分类条件”——根据不同的内容,去对应的知识库里找参考资料,然后再给大模型回答。
当你把这些现成的工作流都吃透了,就可以自己上手组装一个了。一旦跑通了,你对Multi-Agent System的基本认知就有了。
假如你之后学了某个Agent框架(比如AutoGen)就会发现,逻辑都是一样的。而有了在dify上建立起来的理解,你再用Agent框架应该会顺手得多。
OK,以上就是本期内容。有什么想聊的,来知识星球newtype找我,我都在。咱们下期见!