MetaGPT day01: MetaGPT作者代码走读、软件公司初始示例
LLM发展历史
- 2013年word2vec提出,但效果不好
- 2017年Transformer结构提出,降低网络复杂度
- 2018年BERT预训练语言模型效果显著提升
- 2019年GPT-3推出,采用大规模预训练
- 2020年Instruction Tuning提出,实现零样本学习
- 2022年InstructGPT解决模型毒性问题
- 当前GPT-4成本高但效果最好
SOP
# 定义
所谓SOP,是 Standard Operation Procedure三个单词中首字母的大写,即'标准作业程序'(标准操作程序),就是将某一事件的标准操作步骤和要求以统一的格式描述出来,用来指导和规范日常的工作。
metagpt设计哲学
# metagpt定位:
多智能体框架。Metagpt是一个多智能体框架,构建了由多个智能体组成的软件公司。这些智能体在软件公司内协同工作完成实际项目。
# metagpt设计哲学:
软件公司核心资产:
1.可运行的代码
2.SOP(标准操作程序)
3.团队
可运行的代码的实现取决于SOP和团队的协同努力。这三者构成了软件公司的核心资产,形成了Metagpt的设计哲学。
可运行的代码=sop+团队
# SOP的价值
SOP的重要性体现在其价值上,如华为花费100亿美元找ABIBN做SOP。
SOP是一项困难的工作,因为它涉及到对工作的抽象和总结。
例如,让一个创业公司编写今日头条的推荐系统。这样的工作对于一个架构师可能需要数月时间,需要绘制今日头条推荐系统的架构图。今日头条的推荐系统的架构图具有很高的价值,但是闭源。LLM可以通过互联网上的信息和各种猜测,进行整体总结翻译推理,最终得到一个架构图。(如下图所示)
# SOP提高智能体能力
例如,使用llm推理数学公式、证明数学假设,gpt4推理一次有20%成功率,如果有sop监督,1000次测试能做到80%成功率。
SOP在提高智能体推理和执行任务的准确性和效率方面有重要作用。
示例:启动一个创业公司
安装可以参考官方文档:MetaGPT: 多智能体框架 | MetaGPT (deepwisdom.ai)
import asyncio
from metagpt.roles import (
Architect,
Engineer,
ProductManager,
ProjectManager,
)
from metagpt.team import Team
async def startup(idea: str):
company = Team()
company.hire(
[
ProductManager(),
Architect(),
ProjectManager(),
Engineer(),
]
)
company.invest(investment=3.0) # 提供3美元的资金,如果超出就停止
company.run_project(idea=idea)
await company.run(n_round=5) # 这个项目跑5轮
asyncio.run(startup(idea="write a cli blackjack game")) # blackjack: 二十一点
'''
问题:
UserWarning: Pydantic serializer warnings in Pydantic V2
解决:
pip install -U pydantic datamodel-code-generator
问题:
metagpt.utils.common:log_it:438 - Finished call to 'metagpt.actions.action_node.ActionNode._aask_v1' after 285.140(s)
原因:
通过调试,我确定了问题的关键,这可能是由两个原因引起的。
1.zhipuAPI在很多情况下都无法返回正确的JSON格式。
例如:
"标题": "MySQL教程",
"目录": [{
"目录1": [{
"标题1": "MySQL简介",
"内容1": "本章节将介绍MySQL的基本概念、特点和应用场景。"
2.太小的 LLM 模型(<13b 等)可能无法识别 json 是什么。
例如:
# MySQL 教程
## 一、MySQL概述
### 1.1 MySQL简介
### 1.2 MySQL的发展历程
### 1.3 MySQL的应用场景
### 1.4 MySQL的优势
解决:
开启重试 REPAIR_LLM_OUTPUT: true
由于它是一个多代理/多操作管道,我们需要从 llm 输出中解析的结构来继续该过程。也许您可以定义自定义解析器来处理输出,但这会花费时间。
'''
运行代码会自动创建workspace和以下文件:(建议不要修改config.yaml,新建key.yaml配置apikey,靠上面的api优先使用。)
gpt-3.5-turbo
上下文长度不够,使用gpt-3.5-turbo-16k
跑通,给了8轮运行,结果写出来的代码不能运行。
zhipuai
跑不通,github上issue提到因为无法返回正确的JSON格式。
metagpt项目结构
# metagpt产品规划蓝图(road map)
长远目标:希望metagpt能够实现自我进化,不断提升自身的智能水平和适应能力。
短期目标:实现2000行左右代码的自动化,通过精细化的编程,使metagpt在短期内能够执行各种任务和行为。
# 项目目录说明
actions
定义了metagpt执行的各种行为。
例如写一篇文章、进行代码审查等。actions和工具不同,而是一种操作模式。
document_store
用于统一管理和存储各种文档和信息。
类似于腾讯文档或飞书文档,是一个聚拢所有智能体输入键的地方。
learn
包含了标准化的学习流程和复用流程。
指导大模型如何学习并提高性能。为metagpt提供更高效的学习路径。
management
用于自动化生成智能体角色。
类似于人类世界通过职业培训培养各种人才,management模块旨在标准化和完整撰写智能体的培训过程,以完成团队的生产和管理。
memory
包括短期记忆和长期记忆。
使metagpt能够更好地理解和记忆先前的信息,实现更加智能和连贯的交互。
prompt
定义了提示词。
用于触发metagpt执行特定的任务或生成特定类型的内容。
provider
规定了如何调用第三方API。
使metagpt能够支持更多的LLM(Language Model)并且不耦合于本地LLM或组件,提高灵活性。
roles
定义了各种角色。
metagpt不局限于多智能体,也就是说可以将多智能体中的某个角色拿出来单独使用,在不同场景中灵活应用。
比如程序员可以在公司工作也可以在外面接单。
例如,销售、客服在多个场景都有用处。
tools
定义了第三方工具、api。
比如:stable diffusion、Midjourney等
utils
表示实现通用功能或算法的代码,这些功能或算法可以被多个模块或应用程序使用。
environment.py:环境,这个环境是有记忆的。承载一批角色,角色可以向环境发布消息,可以被其他角色观察到。类比于工作群:微信群、飞书群。
inspect_module.py:为了后续进行已有模块接管的工作。比如我们有一个已有的工程,我们希望能够接管已有的模块。
先反解已有模块的数据结构和api -反解-> 画出流程图、写出需求文档
在此之上进行思考如何修改代码。
比如将贪吃蛇的颜色改成红色,这看起来程序员直接修改即可,但是实际上不行,需要产品经理先改需求文档,这涉及到了工作流。
因此我们需要将某个具体事情,反解出来,因此需要inspect_module.py。
company.run_project(idea=idea):每次去看看有没有余额,然后让环境中的每个智能体都跑起来。
hire:往环境里面雇佣(增加)智能体。
invest:设置一个最大预算。
check_balance:查看当前开销是否高于最大预算。
QA
整场直播回放:https://www.bilibili.com/video/BV1Ru411V7XL/
# https://github.com/geekan/MetaGPT/blob/main/docs/ROADMAP.md
Q: 智能体在运行中可以加入反馈吗?
A: 支持人类确认和修改。
贪吃蛇软件。人类提出意见,修改贪吃蛇颜色为橙色。
这需要一个路由系统确定这个意见给谁?
比如给了程序员,但是ui角色已经将贪吃蛇的图画成了绿色。
所有应该按照顺序:
意见 --> 产品经理 --> 架构师 --> 程序员评估哪些重写、哪些不重写
Q: METAGPT不需要其他模型的训练过程吗?
A: metagpt的训练和运行是独立的。训练的部分在标准化产品act里:https://act-canary.test.metadl.com/。
Metagpt只有运用的功能,如果需要训练需要调这个act平台的api。
补充:
# ReAct
# 来源: https://juejin.cn/post/7259018705786339385
ReAct是Reasoning and Acting缩写,意思是大模型可以根据逻辑推理(Reason),构建完整系列行动(Act),从而达成期望目标。
ReAct方式的关键就是协调大语言模型和外部的信息获取,与其他功能交互:大模型是大脑,通过ReAct框架可以让大脑来控制手和脚。
在ReAct流程中,我们可以抓住三个关键的元素:
思考(Thought): 思考是由大模型创建的,为其行为和决定提供理论支撑。我们可以通过分析大模型的思考过程,来评估其即将采取的行动是否符合逻辑。它作为一个关键指标,能够帮助我们判断其决策的合理性。相比于人类的决策,Thought的存在赋予了大模型更出色的可解释性和可信度。
行动(Act): 行动代表大模型认为需要采取的具体行为。行动一般由两个部分构成:动作和目标,这在编程中对应着API名称和其输入参数。大模型的一大优点在于,它可以根据思考的结果,选择合适的API并生成所需的参数。这确保了ReAct框架在执行方面的实用性。
观察(Obs): 观察代表大模型如何获取外部输入。它就像大模型的感知系统,将环境的反馈信息同步给大模型,帮助它进一步进行分析或者决策。
MetaGPT day01: MetaGPT作者代码走读、软件公司初始示例的更多相关文章
- Atitit.研发管理软件公司的软资产列表指南
Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...
- [转]美国的软件公司是什么样?---- 以Fog Creek为例
作者: 阮一峰 日期: 2009年2月15日 Joel写过一篇文章,关于软件公司如何雇到优秀的程序员. 他说,软件公司的头等大事,就是找到第一流的人才.不同于其他行业,软件是一种纯智力产品,你有什么样 ...
- 软件公司的两种管理方式 总体来说,这个世界上存在两种不同的软件公司的组织结构。我把他们叫做 Widget Factory(小商品工厂) 和 Film Crews(电影工作组
软件公司的两种管理方式 一个简单的回答应该是——“因为在我们的社会里,我们总是会认为薪水和会和职位的层次绑在一起”.但是,这个答案同时也折射出一个事实——我们的薪资是基于我们的所理解的价值,但这并没有 ...
- DevOps infra | 互联网、软件公司基础设施建设(基建)哪家强?
国内公司普遍不注重基础设施建设,这也是可以理解的.吃饭都吃不饱,就别提什么荤素搭配,两菜一汤了.但也不能全说是这样,还是有很多公司投入大量的人力物力去做好公司的基建,比如很多阿里和美团的小伙伴对公司的 ...
- 4.2w起步的软件公司创业历程
调查说,中国民营企业的生命期平均是2.8年,如今我的企业已走过近四年,而这一年却是我的迷茫期,不知道何去何从,现在写下 来与大家一起分享一下,写得较为凌乱,大家将就着看一下吧:) 先交待一下自己,我来 ...
- 技术总监和CTO的区别 浅谈CTO的作用----软件公司如何开源节流(一)[转]
我一直在思考软件公司如何开源节流.当然,老板也在思考开源节流.当然,老板思考的开源节流在公司运营层面上,而我作为CTO,我考虑的则是在产品运营角度上来思考这个问题.否则,一个软件公司,它的生存与发展就 ...
- 小试.NET代码保护软件(代码混淆、加密)
有着微软人性化的开发工具VISUAL STUDIO和MSDN详尽的帮助,.NET 的开发效率的确高. 但是由于.NET同JAVA一样都采用中间语言.虚拟机/SDK等诸多特质,而且高等语言的类库编码规范 ...
- OD调试9—实例:深入分析代码完成软件破解
OD调试9—实例:深入分析代码完成软件破解 爆破,是最初级的解决方案,不到万不得已,我们不直接修改JNZ通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出 ...
- 报表软件公司悬赏 BUG,100块钱1个的真实用意
上一篇文章我讲到,报表软件FineReport一反常态,做了个<提BUG,拿现金>的活动,1个BUG,100块钱.纵览软件行业,如金蝶用友浪潮IBM微软等国内外巨头,均没有这样的举动去征集 ...
- UNIMRCP 代码走读
基于UNIMRCP1.5.0的代码走读 与 填坑记录 1. server启动配置加载 入口:unimrcp_server.c static apt_bool_t unimrcp_server_load ...
随机推荐
- adb从基础到进阶
一.adb的工作原理 adb是cs架构,由三部分组成,分别是client,server,daemon,他们的关系见下图 server是整个架构的核心 server负责接收client的指令,然后将指令 ...
- 在ASP.NET Core 中使用 .NET Aspire 消息传递组件
前言 云原生应用程序通常需要可扩展的消息传递解决方案,以提供消息队列.主题和订阅等功能..NET Aspire 组件简化了连接到各种消息传递提供程序(例如 Azure 服务总线)的过程.在本教程中,小 ...
- 空间三维模型的编码结构光方法实现:基于EinScan-S软件
本文介绍基于EinScan-S软件,实现编码结构光方法的空间三维模型重建的具体操作. 目录 1 相关原理 1.1 编码结构光成像原理 1.2 编码结构光编码方式 1.3 编码结构光与侧影轮廓方法比 ...
- dev-c++ 使用教程
Dev C++ 支持单个源文件的编译,如果你的程序只有一个源文件(初学者基本都是在单个源文件下编写代码),那么不用创建项目,直接运行就可以:如果有多个源文件,才需要创建项目. 一.新建源文件 1.通过 ...
- 编辑linux服务启动命令(app-script.sh命令编写)
#!/bin/sh# 注:这里可替换为你自己的执行程序,其他代码无需更改APP_NAME=app-biz.jar #使用说明,用来提示输入参数usage() { echo "Usage: s ...
- C和C++练习
要点: 1.数组 2.冒泡排序BubbleSort 3.带指针的结构体(malloc,free) 4.字符串操作(拷贝.逆序.比较) 5.格式化输出printf,sprintf 6.格式化输入,sca ...
- ElasticSearch-Mapping类型映射-增删改查
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/mapping.html 7.x版本后默认都是_doc类型 增加Mapping映 ...
- 华企盾DSC在苹果电脑上加密文件不显示加密图标
1.首先mac端暂时只支持在访达内显示加密图标,且新建的加密文件需要切换目录才可查看 2.检查DSCFinderSync进程是否启动,若没有启动重启一下DSC进程 3.若还没有显示直接重启系统的访达进 ...
- 算法2:Hanoi塔
汉诺(Hanoi)塔 一.背景介绍 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了 ...
- HTB - CozyHosting - WriteUp
CozyHosting 前言:抓紧赛季末上一波分,错过开vip才能练了 信息收集 扫描看看端口的开放情况,开了22,80,5555.这里fscan显示会跳转到cozyhosting.htb. 那就需要 ...