这几天,有几位新魔法师(开发者)使用了MoFA框架。他们觉得如果能把MoFA编程的一些经验总结一下,会对新魔法师们理解和上手有帮助。这篇短文就简单地坐而论道,给新魔法师们一些参考建议。
构建Hello_World
图:GitHub代码仓里的MoFA Hello_World文档
编写Hello_World是往往是程序员学习一门编程语言所编写的第一个程序。能够编写和运行Hello_World程序,就意味着系统安装成功和获得了最为基础的编程能力。
虽然MoFA并不是编程语言,但类似编程的逻辑,我们提供了帮助Agent 魔法师构建Hello World程序的指导。魔法师们不妨一试。具体的文档在GitHub(https://github.com/moxin-org/mofa/tree/main)。如果你克隆MoFA到本地,也可以在以下目录里找到:mofa_root/python/documents/examples/hello_world_dora.md
使用智能体模版
图:GitHub代码仓里的MoFA 提供了几种类型智能体的模版
在开始构建智能体时,可以考虑使用MoFA提供的智能体模版(Agent Templates)。在mofa_root/python/mofa/agent_templates/
下,MoFA准备了几个Templates,比如,在以上Hello_World程序中使用到的最基础的reasoner
;由多个智能体构成实现智能体Reflection模式的self_refiner
模版;以及crewAI智能体模版。
将智能体模版拷贝到您的项目空间,对其进行修改、定制,对于新的魔法师而言,不失为一个有效的探索方式。
图:GitHub代码仓里的MoFA 提供了若干案例程序
另外,在mofa_root/python/examples/
目录下,MoFA也提供了多个例子程序。魔法师们也可以借鉴。
智能体组合
魔法师们(1)可以考虑开发简单的智能体实现原子能力;(2)再将这些智能体形成简单的数据流(Data Flow),形成更加复杂和强大的功能。还可以(3)考虑通过将第三方实现的MoFA智能体加入Data Flow,生成您的Super Agent,施展您的魔法。
以代码仓中的Arxiv research Agent样例程序 (mofa_root/python/examples\arxiv_research
)为例,它就是由多个智能体组合而成。在这个例子里,智能体们各司其职,有的负责拆解任务,有的负责搜索,有的负责下载信息,有的负责分析,有的负责写报告,然后通过数据流(dataflow)组合在一起,成为了一个智能体的组合。
迭代渐进开发
基于MoFa的模块化架构,它将复杂的智能体分解为独立的、可组合的模块。每一块都可以进行独立开发与测试。因此,魔法师们可以采用迭代和渐进开发的方法,逐步构建复杂的智能体。初期可以通过搭建简单的智能体入手,包括基础的大模型提示、基础的算子程序、以及简单的智能体交互模式。随着项目的推进,魔法师们可以在每一轮迭代中引入新的功能模块,通过调整算子、扩展提示、优化交互模式等方式,逐步增强智能体的性能与适应性。每一次的递进,不仅可以提升智能体的功能性,还能确保其稳定性和可维护性,使开发过程更加灵活、高效、可控。
智能体封装:Everything Agent
在DORA的基础上,MoFA支持将一切Python算法程序生成Agents。具体的实现方法是,通过Python程序经过简单的包装,任何程序碎片就都可以成为Dora算子(Operator)被执行,从而成为Agent。以这样的封装方式,传统编程和智能体编程融为一体。可以封装的“东西”包括但不限于:
LLM App as Agent:当然,使用MoFA Agent 框架的主要目的就是构建LLM驱动的应用。
LLM Service as Agent:Agent往往需要具备Memory、RAG、Action、Planning等基础能力服务,也可以被包装成为Agent的形式实现。这样,各具特色的服务可以共存于系统,让开发者根据需要使用。
LLM as Agent:大语言模型推理API也可以被封装为智能体。这样进一步降低了大语言模型API使用的复杂性。
Program as Agent:传统的程序也可以被封装为MoFA智能体。对外只暴露输入输出。Agent不一定必须LLM驱动。
API as Agent:同理,REST API也可以通过Python程序的简单封装,成为对外只暴露输入输出的智能体。
Composition as Agent:智能体与智能体的组合,也是智能体。可以被进一步被组合成更加复杂和强大的智能体。
通过试着编写Hello_World程序,拷贝模版进行定制,看一些案例程序,编程中注意使用迭代渐进的方法,考虑使用模块组合和封装封装的手段,超级智能体就做好了。魔法师的超级魔法,也练成了。