Agent(智能体)和 MetaGPT,一句话实现整个需求应用代码
<p>前面 2 篇文章,我们使用<strong>文生文</strong>、<strong>文生图</strong>和<strong>文生音频</strong>三个大模型共同实现了图文并茂的<strong>儿童绘本故事</strong>和<strong>绘本故事音频</strong>需求:</p><ol>
<li>第一篇 根据<strong>主题</strong>生成儿童<strong>绘本故事</strong>:GLM-4-Flash 大模型 API 免费了,手把手构建“儿童绘本”应用实战(附源码)</li>
<li>第二篇 根据儿童绘本故事生成<strong>长音频</strong>:ChatTTS 长音频合成和本地部署 2 种方式,让你的“儿童绘本”发声的实战教程(文末有福利)</li>
</ol>
<p><strong>友情提示</strong>:第二篇有送书活动,活动还在继续,欢迎大家参与~</p>
<p>我们可以看出,儿童绘本故事的整个流程如下:</p>
<p><img src="https://ntopic.cn/p/2024090701/01.jpg"></p>
<p>在整个流程中,其实我们核心就做了 2 件事:设定主题明确<strong>需求</strong>、编排整个<strong>流程</strong>让应用跑起来。而其他的包括构思文案、故事内容、图片生成、长音频合并等,其实都是围绕大模型不同阶段的交付物(构思和故事内容)进一步的交付物,即我们的需求<strong>目标</strong>。</p>
<p>假如我们有一个基于大模型的程序,它能准确地理解我们的需求内涵,然后进一步把需求拆分成小任务,最终组织整个任务的流程和依赖,并执行达成我们的需求目标。那么这个应用就是我们常说的大模型<strong>Agent</strong>(或者叫<strong>智能体</strong>):大模型 Agent 是基于大语音模型(LLM)之上构建的、具备<strong>环境感知</strong>、<strong>自主理解</strong>、<strong>决策制定</strong>和<strong>执行</strong>能力的智能体。</p>
<p>大模型 Agent 能够模拟独立思考过程、调用各类工具,逐步达成我们的需求目标。从我们应用架构设计上讲,大模型 Agent 从原来面向过程的架构(如:儿童绘本应用)转变为面向目标的架构(提交需求后静待结果),它可以实现复杂的目标任务。</p>
<p>一般来说,大模型 Agent 主要由四个部分组成:<strong>规划</strong>、<strong>记忆</strong>、<strong>工具</strong>和<strong>行动</strong>,分别负责任务拆解与策略评估、信息存储与回忆、环境感知与决策辅助、和将思维转换为实际行动。</p>
<p><img src="https://ntopic.cn/p/2024090701/02.jpg"></p>
<p>我们还是以<strong>儿童绘本故事应用</strong>来举例:</p>
<ol>
<li>规划(Planning):我们通过儿童绘本故事主题,期望大模型给我们生成一本儿童绘本故事;那么大模型 Agent 需要准确识别我们的意图,然后进行任务拆分(包括:构思、故事内容、插图、音频等),制定整个处理流程。</li>
<li>记录(Memory):包括我们的主题、构思、故事等内容,分为短期记忆和长期记忆;短期记忆主要是上下文信息,包括多轮对话(如:绘本故事是面向多大年龄、插入风格等);长期记忆可能包括用户特征,需要使用特征数据库存储。</li>
<li>工具(Tools):包括 API 调用、图片存储等,是 Agent 执行决策的辅助手段。</li>
<li>行动(Action):将规划、记忆转化为具体输出过程,在这个过程中可能需要使用到不同的工具与外部环境交互。</li>
</ol>
<p>接下来,老牛同学和大家看看,一些常见的大模型 Agent 框架和应用:</p>
<h1 id="agent-框架简单介绍">Agent 框架简单介绍</h1>
<p>目前,开源和闭源大模型 Agent 可谓是百家争鸣、百花齐放:https://github.com/e2b-dev/awesome-ai-agents</p>
<p>根据业务需求复杂度和大模型 Agent 的实现方式的差异,目前 Agent 框架可以简单分为单 Agent 和多 Agent 框架。单 Agent 框架包括如:BabyAGI 和 AutoGPT 等。</p>
<p>接下来,老牛同学主要介绍一个多 Agent 框架:<strong>MetaGPT</strong>,它是一个国内研发开源的多 Agent 框架(https://github.com/geekan/MetaGPT)</p>
<p><img src="https://ntopic.cn/p/2024090701/04.jpg"></p>
<p><strong>MetaGPT</strong>以软件公司方式组成多个 Agent,实现了一个软件公司的全过程与精心调配的标准流程;它的目的是根据老板的一句话需求,完成一个软件研发整体流程(包括:用户故事、竞品分析、需求、数据结构 API 等);内部多个 Agent 划分为多个角色(包括:产品经理、架构师、项目经理、研发工程师等),他们按照标准流程实现业务需求。</p>
<h1 id="metagpt-多智能体框架应用">MetaGPT 多智能体框架应用</h1>
<p>接下来,我们来当一回<strong>老板</strong>:我们输入一句话需求,让<strong>MetaGPT</strong>实现我们的目标。</p>
<p>【<strong>第一步</strong>:<strong>MetaGPT</strong>环境准备】</p>
<p><strong>工欲善其事,必先利其器</strong>,我们通过<strong>Miniconda</strong>管理 Python 虚拟环境,<strong>Miniconda</strong>的安装和使用可以参考老牛同学之前的文章:大模型应用研发基础环境配置(Miniconda、Python、Jupyter Lab、Ollama 等)</p>
<pre><code class="language-shell"># Python虚拟环境名:MetaGPT,版本号:3.10
conda create --name MetaGPT python=3.10 -y
# 激活虚拟环境
conda activate MetaGPT
</code></pre>
<p>【<strong>第二步</strong>:安装<strong>MetaGPT</strong>依赖】</p>
<p>我们可以安装<strong>MetaGPT</strong>的稳定版本和最新的研发版本(老牛同学使用的是<strong>稳定版本</strong>):</p>
<ul>
<li>稳定版本:<code>pip install metagpt</code></li>
<li>研发版本:<code>pip install --upgrade git+https://github.com/geekan/MetaGPT.git</code></li>
</ul>
<p>如果我们想保留<strong>MetaGPT</strong>画的设计图(如:类图、序列图等),那么还需要安装 Node.js 包:<code>sudo npm install -g @mermaid-js/mermaid-cli</code></p>
<p><img src="https://ntopic.cn/p/2024090701/05.jpg"></p>
<p>【<strong>第三步</strong>:配置<strong>MetaGPT</strong>大模型】</p>
<p>前面已经介绍,大模型 Agent 是基于大模型的,因此我们需要配置一下<strong>MetaGPT</strong>的大语言模型。</p>
<p>我们可以通过命令初始化配置文件:<code>metagpt --init-config</code></p>
<p>默认情况下,<strong>MetaGPT</strong>自动创建默认配置文件:<code>~/.metapgt/config2.yaml</code></p>
<p>我们修改这个配置文件,配置我们自己的大语言模型信息(老牛同学使用的是 Ollama,其它的配置类同):</p>
<pre><code class="language-yaml">llm:
api_type: "ollama"
model: "qwen2:7b"
base_url: "http://127.0.0.1:11434/api"
api_key: "EMPTY"
</code></pre>
<p>有关 Ollama 详细介绍和使用,参见老牛同学之前的文章,本文不在赘述:Ollama 完整教程:本地 LLM 管理、WebUI 对话、Python/Java 客户端 API 应用</p>
<p>【<strong>第四步</strong>:当<strong>老板</strong>,提供一句话需求,静候结果】</p>
<p>老牛同学之前使用大模型,一步一步通过 Prompt 提示词,完成了<strong>消消乐</strong>小游戏研发:AI 已来,我与 AI 一起用 Python 编写了一个消消乐小游戏</p>
<p>今天老牛同学想玩一玩<strong>贪吃蛇</strong>小游戏,体验一下当<strong>老板</strong>的乐趣,需求就一句话:<strong>write a cli snake game</strong></p>
<pre><code class="language-shell">(MetaGPT) $ metagpt "write a cli snake game"
</code></pre>
<p>接下来,我们就开始等待了,在<strong>MetaGPT</strong>实现需求的标准流程中,我们也可以看到它的每一步的输出:</p>
<p>首先,名为 Alice 的<strong>产品经理</strong>登场:他根据老板的需求,产出产品需求文档</p>
<p><img src="https://ntopic.cn/p/2024090701/11.jpg"></p>
<p>有了 PRD,接下来是名为 Bob 的<strong>架构师</strong>来了:他根据需求文档,完成产品架构设计</p>
<p><img src="https://ntopic.cn/p/2024090701/12.jpg"></p>
<p>接下来,名为 Eve 的<strong>项目经理</strong>上场:他根据架构设计,整理研发任务</p>
<p><img src="https://ntopic.cn/p/2024090701/13.jpg"></p>
<p>有了研发任务,进行排期锁定资源,研发工程师开始研发了:</p>
<p><img src="https://ntopic.cn/p/2024090701/14.jpg"></p>
<p>代码研发完成,就需要进行代码 Review 了:</p>
<p><img src="https://ntopic.cn/p/2024090701/15.jpg"></p>
<p>其它研发的截图,老牛同学就省略了。经过多轮的研发任务和 CR,终于完成了整个需求,可以把代码、文件等存档:</p>
<p><img src="https://ntopic.cn/p/2024090701/16.jpg"></p>
<p>最后,我们就可以看到最终的产出物了:</p>
<ul>
<li>代码源文件目录:<code>./workspace/cli_snake_game/cli_snake_game</code></li>
</ul>
<pre><code class="language-shell">(MetaGPT) $ tree
├── food.py
├── game.py
├── main.py
└── snake.py
</code></pre>
<ul>
<li>项目实现文档目录:<code>./workspace/cli_snake_game/docs</code></li>
<li>项目实现资源目录:<code>./workspace/cli_snake_game/resources</code></li>
</ul>
<p>我们运行一下小游戏:<code>python main.py</code></p>
<p>可以看到,还真能跑起来了,可是有 Bug(如:蛇吃食物自动退出,蛇撞墙异常退出):</p>
<p><img src="https://ntopic.cn/p/2024090701/17.jpg"></p>
<p>至此,<strong>MetaGPT</strong>按照标准流程,确实帮我们完成了项目,可是我们当<strong>老板</strong>的并没有享受到什么乐趣,因为我们还得去改 Bug!</p>
<h1 id="最后多大模型-agent-到底能解决什么问题">最后,(多)大模型 Agent 到底能解决什么问题?</h1>
<p>上面<strong>MetaGPT</strong>帮我们写了一个有 Bug 的程序,这肯定不是我们所期望的,分析其背后原因,其实也并不是大模型 Agent 的错:</p>
<p>我们可以查看<strong>MetaGPT</strong>源代码:<code>https://github.com/geekan/MetaGPT/tree/main/metagpt/roles</code></p>
<p>期核心逻辑都在<code>role.py</code>文件中:<code>https://github.com/geekan/MetaGPT/blob/main/metagpt/roles/role.py</code></p>
<p>它的核心还是通过 Prompt 提示词和大模型进行交互,大模型产出质量的好坏,决定了需求结构的优劣!</p>
<p>那么,大模型 Agent 到底在什么场景能更有优势呢?首先能肯定的是:那些底层大模型擅长的领域!</p>
<ul>
<li>复杂问题场景,大模型的初衷就是用来解决复杂问题的</li>
<li>需要多角色交互场景(如:游戏故事生成、素材生成),内容生成,部分工作提效(如:项目代码框架等)</li>
</ul>
<p>vLLM CPU 和 GPU 模式署和推理 Qwen2 等大语言模型详细教程</p>
<p>基于 Qwen2/Lllama3 等大模型,部署团队私有化 RAG 知识库系统的详细教程(Docker+AnythingLLM)</p>
<p>使用 Llama3/Qwen2 等开源大模型,部署团队私有化 Code Copilot 和使用教程</p>
<p>基于 Qwen2 大模型微调技术详细教程(LoRA 参数高效微调和 SwanLab 可视化监控)</p>
<p>MiniCPM-V 2.6 面壁“小钢炮”,多图、视频理解多模态模型,部署和推理实战教程</p>
<p><img src="https://ntopic.cn/WX-21.png"></p>
</div>
<div id="MySignature" role="contentinfo">
<p>本文作者:<b>奔跑的蜗牛</b>,转载请注明原文链接:https://ntopic.cn</p><br><br>
来源:https://www.cnblogs.com/obullxl/p/18402096/NTopic2024090701
頁:
[1]