Agent(智能体)和 MetaGPT,一句话实现整个需求应用代码

前面 2 篇文章,我们使用文生文文生图文生音频三个大模型共同实现了图文并茂的儿童绘本故事绘本故事音频需求:

  1. 第一篇 根据主题生成儿童绘本故事:GLM-4-Flash 大模型 API 免费了,手把手构建“儿童绘本”应用实战(附源码)
  2. 第二篇 根据儿童绘本故事生成长音频:ChatTTS 长音频合成和本地部署 2 种方式,让你的“儿童绘本”发声的实战教程(文末有福利)

友情提示:第二篇有送书活动,活动还在继续,欢迎大家参与~

我们可以看出,儿童绘本故事的整个流程如下:

儿童绘本故事应用整体流程

在整个流程中,其实我们核心就做了 2 件事:设定主题明确需求、编排整个流程让应用跑起来。而其他的包括构思文案、故事内容、图片生成、长音频合并等,其实都是围绕大模型不同阶段的交付物(构思和故事内容)进一步的交付物,即我们的需求目标

假如我们有一个基于大模型的程序,它能准确地理解我们的需求内涵,然后进一步把需求拆分成小任务,最终组织整个任务的流程和依赖,并执行达成我们的需求目标。那么这个应用就是我们常说的大模型Agent(或者叫智能体):大模型 Agent 是基于大语音模型(LLM)之上构建的、具备环境感知自主理解决策制定执行能力的智能体。

大模型 Agent 能够模拟独立思考过程、调用各类工具,逐步达成我们的需求目标。从我们应用架构设计上讲,大模型 Agent 从原来面向过程的架构(如:儿童绘本应用)转变为面向目标的架构(提交需求后静待结果),它可以实现复杂的目标任务。

一般来说,大模型 Agent 主要由四个部分组成:规划记忆工具行动,分别负责任务拆解与策略评估、信息存储与回忆、环境感知与决策辅助、和将思维转换为实际行动。

大模型Agent组成模块

我们还是以儿童绘本故事应用来举例:

  1. 规划(Planning):我们通过儿童绘本故事主题,期望大模型给我们生成一本儿童绘本故事;那么大模型 Agent 需要准确识别我们的意图,然后进行任务拆分(包括:构思、故事内容、插图、音频等),制定整个处理流程。
  2. 记录(Memory):包括我们的主题、构思、故事等内容,分为短期记忆和长期记忆;短期记忆主要是上下文信息,包括多轮对话(如:绘本故事是面向多大年龄、插入风格等);长期记忆可能包括用户特征,需要使用特征数据库存储。
  3. 工具(Tools):包括 API 调用、图片存储等,是 Agent 执行决策的辅助手段。
  4. 行动(Action):将规划、记忆转化为具体输出过程,在这个过程中可能需要使用到不同的工具与外部环境交互。

接下来,老牛同学和大家看看,一些常见的大模型 Agent 框架和应用:

Agent 框架简单介绍

目前,开源和闭源大模型 Agent 可谓是百家争鸣、百花齐放:https://github.com/e2b-dev/awesome-ai-agents

根据业务需求复杂度和大模型 Agent 的实现方式的差异,目前 Agent 框架可以简单分为单 Agent 和多 Agent 框架。单 Agent 框架包括如:BabyAGI 和 AutoGPT 等。

接下来,老牛同学主要介绍一个多 Agent 框架:MetaGPT,它是一个国内研发开源的多 Agent 框架(https://github.com/geekan/MetaGPT)

软件公司多角色架构

MetaGPT以软件公司方式组成多个 Agent,实现了一个软件公司的全过程与精心调配的标准流程;它的目的是根据老板的一句话需求,完成一个软件研发整体流程(包括:用户故事、竞品分析、需求、数据结构 API 等);内部多个 Agent 划分为多个角色(包括:产品经理、架构师、项目经理、研发工程师等),他们按照标准流程实现业务需求。

MetaGPT 多智能体框架应用

接下来,我们来当一回老板:我们输入一句话需求,让MetaGPT实现我们的目标。

第一步MetaGPT环境准备】

工欲善其事,必先利其器,我们通过Miniconda管理 Python 虚拟环境,Miniconda的安装和使用可以参考老牛同学之前的文章:大模型应用研发基础环境配置(Miniconda、Python、Jupyter Lab、Ollama 等)

# Python虚拟环境名:MetaGPT,版本号:3.10
conda create --name MetaGPT python=3.10 -y# 激活虚拟环境
conda activate MetaGPT

第二步:安装MetaGPT依赖】

我们可以安装MetaGPT的稳定版本和最新的研发版本(老牛同学使用的是稳定版本):

  • 稳定版本:pip install metagpt
  • 研发版本:pip install --upgrade git+https://github.com/geekan/MetaGPT.git

如果我们想保留MetaGPT画的设计图(如:类图、序列图等),那么还需要安装 Node.js 包:sudo npm install -g @mermaid-js/mermaid-cli

MetaGPT产出的类图

第三步:配置MetaGPT大模型】

前面已经介绍,大模型 Agent 是基于大模型的,因此我们需要配置一下MetaGPT的大语言模型。

我们可以通过命令初始化配置文件:metagpt --init-config

默认情况下,MetaGPT自动创建默认配置文件:~/.metapgt/config2.yaml

我们修改这个配置文件,配置我们自己的大语言模型信息(老牛同学使用的是 Ollama,其它的配置类同):

llm:api_type: "ollama"model: "qwen2:7b"base_url: "http://127.0.0.1:11434/api"api_key: "EMPTY"

有关 Ollama 详细介绍和使用,参见老牛同学之前的文章,本文不在赘述:Ollama 完整教程:本地 LLM 管理、WebUI 对话、Python/Java 客户端 API 应用

第四步:当老板,提供一句话需求,静候结果】

老牛同学之前使用大模型,一步一步通过 Prompt 提示词,完成了消消乐小游戏研发:AI 已来,我与 AI 一起用 Python 编写了一个消消乐小游戏

今天老牛同学想玩一玩贪吃蛇小游戏,体验一下当老板的乐趣,需求就一句话:write a cli snake game

(MetaGPT) $ metagpt "write a cli snake game"

接下来,我们就开始等待了,在MetaGPT实现需求的标准流程中,我们也可以看到它的每一步的输出:

首先,名为 Alice 的产品经理登场:他根据老板的需求,产出产品需求文档

产品经理的需求文档

有了 PRD,接下来是名为 Bob 的架构师来了:他根据需求文档,完成产品架构设计

架构师的设计文档

接下来,名为 Eve 的项目经理上场:他根据架构设计,整理研发任务

项目经理整理任务清单

有了研发任务,进行排期锁定资源,研发工程师开始研发了:

snake.py 代码实现

代码研发完成,就需要进行代码 Review 了:

Code Review第1轮

其它研发的截图,老牛同学就省略了。经过多轮的研发任务和 CR,终于完成了整个需求,可以把代码、文件等存档:

项目存档

最后,我们就可以看到最终的产出物了:

  • 代码源文件目录:./workspace/cli_snake_game/cli_snake_game
(MetaGPT) $ tree
├── food.py
├── game.py
├── main.py
└── snake.py
  • 项目实现文档目录:./workspace/cli_snake_game/docs
  • 项目实现资源目录:./workspace/cli_snake_game/resources

我们运行一下小游戏:python main.py

可以看到,还真能跑起来了,可是有 Bug(如:蛇吃食物自动退出,蛇撞墙异常退出):

贪吃蛇小游戏

至此,MetaGPT按照标准流程,确实帮我们完成了项目,可是我们当老板的并没有享受到什么乐趣,因为我们还得去改 Bug!

最后,(多)大模型 Agent 到底能解决什么问题?

上面MetaGPT帮我们写了一个有 Bug 的程序,这肯定不是我们所期望的,分析其背后原因,其实也并不是大模型 Agent 的错:

我们可以查看MetaGPT源代码:https://github.com/geekan/MetaGPT/tree/main/metagpt/roles

期核心逻辑都在role.py文件中:https://github.com/geekan/MetaGPT/blob/main/metagpt/roles/role.py

它的核心还是通过 Prompt 提示词和大模型进行交互,大模型产出质量的好坏,决定了需求结构的优劣!

那么,大模型 Agent 到底在什么场景能更有优势呢?首先能肯定的是:那些底层大模型擅长的领域!

  • 复杂问题场景,大模型的初衷就是用来解决复杂问题的
  • 需要多角色交互场景(如:游戏故事生成、素材生成),内容生成,部分工作提效(如:项目代码框架等)

vLLM CPU 和 GPU 模式署和推理 Qwen2 等大语言模型详细教程

基于 Qwen2/Lllama3 等大模型,部署团队私有化 RAG 知识库系统的详细教程(Docker+AnythingLLM)

使用 Llama3/Qwen2 等开源大模型,部署团队私有化 Code Copilot 和使用教程

基于 Qwen2 大模型微调技术详细教程(LoRA 参数高效微调和 SwanLab 可视化监控)

MiniCPM-V 2.6 面壁“小钢炮”,多图、视频理解多模态模型,部署和推理实战教程

微信公众号:老牛同学

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nuxt3入门:过渡效果(第5节)

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 Nuxt 利用 Vue 的 <Transition> 组件在页面和布局之间应用过渡效果。 一、页面过渡效果 你可以启用页面过渡效果&#xff0c;以便对所有页面应用自动过渡效果。 nuxt.config.js export defaul…

概率DP (由一道绿题引起的若干问题。目前为一些老题,蒟蒻的尝试学习1.0)

概率DP&#xff1a; 利用动态规划去解决 概率 期望 的题目。 概率DP 求概率&#xff08;采用顺推&#xff09; 从 初始状态推向结果&#xff0c;同一般的DP类似&#xff0c;只是经历了概率论知识的包装。 老题&#xff1a; 添加链接描述 题意&#xff1a; 袋子里有w只白鼠&am…

linux编译器——gcc/g++

1.gcc linux上先要安装&#xff0c; sudo yum install gcc gcc --version 可以查看当前的版本 &#xff0c;我们默认安装的是4.8.5的版本&#xff0c;比较低&#xff0c; gcc test.c -stdc99 可以使他支持更高版本的c标准 -o 可以殖指明生成文件的名字&#xff0c;可以自己…

跨越技术壁垒:EasyCVR为何选择支持FMP4格式,重塑视频汇聚平台标准

随着物联网、大数据、云计算等技术的飞速发展&#xff0c;视频监控系统已经从传统的安防监控扩展到智慧城市、智能交通、工业制造等多个领域。视频流格式作为视频数据传输与存储的基础&#xff0c;其兼容性与效率直接影响到整个视频监控系统的性能。 在众多视频流格式中&#…

TCP Analysis Flags 之 TCP Port numbers reused

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

十大口碑最好开放式蓝牙耳机是哪些?五款热销好用产品测评!

​开放式耳机现在超火&#xff0c;成了时尚、好看又舒服的代名词&#xff0c;迅速俘获了一大波粉丝&#xff0c;成了耳机界的新宠儿。跟那些传统的入耳式耳机比起来&#xff0c;开放式耳机戴着更稳&#xff0c;对耳朵也更友好。不过&#xff0c;也有人觉得这玩意儿不值&#xf…

系统找不到指定的文件怎么解决?

把U盘插在电脑上&#xff0c;当我打开U盘中的文件时&#xff0c;弹窗提示系统找不到指定的文件&#xff0c;这是什么情况&#xff1f;有谁遇到过吗&#xff1f;大家有没有解决办法&#xff1f; 这个问题可能大家并不陌生&#xff0c;可能也曾遇到过&#xff0c;造成问题出现的原…

现代计算机中数字的表示与浮点数、定点数

现代计算机中数字的表示与浮点数、定点数 导读&#xff1a;浮点数运算是一个非常有技术含量的话题&#xff0c;不太容易掌握。许多程序员都不清楚使用操作符比较float/double类型的话到底出现什么问题。这篇文章讲述了浮点数的来龙去脉&#xff0c;所有的软件开发人员都应该读…

sqli-lab靶场学习(一)——Less1-4

前言 最近一段时间想切入安全领域&#xff0c;因为本身有做数据库运维工作&#xff0c;就打算从sql注入方向切入。而sql注入除了学习日常书本上的概念外&#xff0c;需要有个实践的环境&#xff0c;刚好看到sqli-lab这个靶场&#xff0c;就打算先用这个来学习。 安装部署 网上…

小阿轩yx-Kubernertes日志收集

小阿轩yx-Kubernertes日志收集 前言 在 Kubernetes 集群中如何通过不同的技术栈收集容器的日志&#xff0c;包括程序直接输出到控制台日志、自定义文件日志等 有哪些日志需要收集 日志收集与分析很重要&#xff0c;为了更加方便的处理异常 简单总结一些比较重要的需要收集…

数据分析面试题:如何分析每日平均每件商品的锁定时长问题?

目录 0 题目描述 2 数据准备 3 数据分析 3.1 需求1:计算 2014/03/22-2014/04/30 每天的购买客户数、订单量、销售件数、销售额 3.2 计算 2014 年 4 月各品类的销售额、晚上 20-24 点销售额 3.3 提取 2014 年 3-5 月销售额排名前三的客户信息(排名/客户号/客户姓名/总销…

华为OD机试真题 - 二叉树的广度优先遍历 - 二叉树(Python/JS/C/C++ 2024 D卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

Github 2024-09-07Rust开源项目日报Top10

根据Github Trendings的统计,今日(2024-09-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10CUE项目1Python项目1Go项目1Polars: Rust中的DataFrame接口和OLAP查询引擎 创建周期:1354 天开发语言:Rust, Python协议类型:MIT …

Ubuntu之源码编译安装nginx

参考&#xff1a;Ubuntu之源码编译安装nginx_ubuntu编译安装nginx-CSDN博客 1.下载源码后进入源码目录&#xff0c;如下&#xff1a; cd /home/jq/wf/nginx-1.26.1 2.下载相应依赖库&#xff1a; apt-get install libpcre3-dev apt-get install openssl libssl-dev apt-get…

神经网络骨架nn.Module

文章目录 一、认识nn.Module二、nn.Module的基础加1操作 一、认识nn.Module nn.Module 是 PyTorch 中的一个核心类&#xff0c;它是所有神经网络模块的基类。在 PyTorch 中构建模型时&#xff0c;通常会继承这个类来创建自定义的网络结构。nn.Module 提供了一系列用于构建神经…

如何在Word中插入复选框

如何在Word中插入复选框&#xff1a;详细教程与技巧 在Word中插入复选框是一项非常实用的技巧&#xff0c;尤其是在制作问卷调查、待办事项清单、交互式表单或文档中需要用户进行选择时&#xff0c;复选框不仅能提高文档的功能性&#xff0c;还能显得更加专业。本文将详细讲解…

嵌入式软件--51单片机 DAY 4

一、蜂鸣器 当电流通过线圈时会产生电磁场&#xff0c;电磁场与永磁体相互作用&#xff0c;从而使金属膜产生震动而发声。为使金属膜持续震动&#xff0c;蜂鸣器需要使用震荡电路进行驱动。有些蜂鸣器元件内部自带震荡驱动电路&#xff0c;这种蜂鸣器叫做有源蜂鸣器&#xff0…

计算机网络 TCP/IP协议篇

今天学习了TCP/IP协议的相关知识&#xff0c;学习笔记如下&#xff1a; 在学习之前&#xff0c;我们先抛出几个问题&#xff0c;什么是TCP/IP协议簇&#xff1f;TCP/IP协议簇是怎么工作的&#xff1f; TCP/IP模型 协议分层 每层通过协议完成各自特定的功能上层依赖下层提供…

24/9/6算法笔记 kaggle 房屋价格

预测模型主要分为两大类&#xff1a; 回归模型&#xff1a;当你的目标变量是连续的数值时&#xff0c;你会使用回归模型进行预测。回归模型试图找到输入特征和连续输出之间的关联。一些常见的回归模型包括&#xff1a; 线性回归&#xff08;Linear Regression&#xff09;岭回归…

学不会虚拟列表?10分钟带你实现高度固定的Vue虚拟列表方案及原理

前言 本文主要介绍长列表的一种优化方案&#xff1a;虚拟列表。本文主要是对传统的虚拟列表方案进行更加详尽的刨析&#xff0c;以便我们能够更加深入理解虚拟列表的原理。 虚拟列表目录 1、为什么需要使用虚拟列表2、什么是虚拟列表与懒加载的区别(重要) 3、实现思路4、通过节…