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作者代码走读、软件公司初始示例的更多相关文章

  1. Atitit.研发管理软件公司的软资产列表指南

    Atitit.研发管理软件公司的软资产列表指南 1. Isv模型下的软资产1 2. 实现层面implet1 3. 规范spec层1 4. 法则定律等val层的总结2 1. Isv模型下的软资产 Sof ...

  2. [转]美国的软件公司是什么样?---- 以Fog Creek为例

    作者: 阮一峰 日期: 2009年2月15日 Joel写过一篇文章,关于软件公司如何雇到优秀的程序员. 他说,软件公司的头等大事,就是找到第一流的人才.不同于其他行业,软件是一种纯智力产品,你有什么样 ...

  3. 软件公司的两种管理方式 总体来说,这个世界上存在两种不同的软件公司的组织结构。我把他们叫做 Widget Factory(小商品工厂) 和 Film Crews(电影工作组

    软件公司的两种管理方式 一个简单的回答应该是——“因为在我们的社会里,我们总是会认为薪水和会和职位的层次绑在一起”.但是,这个答案同时也折射出一个事实——我们的薪资是基于我们的所理解的价值,但这并没有 ...

  4. DevOps infra | 互联网、软件公司基础设施建设(基建)哪家强?

    国内公司普遍不注重基础设施建设,这也是可以理解的.吃饭都吃不饱,就别提什么荤素搭配,两菜一汤了.但也不能全说是这样,还是有很多公司投入大量的人力物力去做好公司的基建,比如很多阿里和美团的小伙伴对公司的 ...

  5. 4.2w起步的软件公司创业历程

    调查说,中国民营企业的生命期平均是2.8年,如今我的企业已走过近四年,而这一年却是我的迷茫期,不知道何去何从,现在写下 来与大家一起分享一下,写得较为凌乱,大家将就着看一下吧:) 先交待一下自己,我来 ...

  6. 技术总监和CTO的区别 浅谈CTO的作用----软件公司如何开源节流(一)[转]

    我一直在思考软件公司如何开源节流.当然,老板也在思考开源节流.当然,老板思考的开源节流在公司运营层面上,而我作为CTO,我考虑的则是在产品运营角度上来思考这个问题.否则,一个软件公司,它的生存与发展就 ...

  7. 小试.NET代码保护软件(代码混淆、加密)

    有着微软人性化的开发工具VISUAL STUDIO和MSDN详尽的帮助,.NET 的开发效率的确高. 但是由于.NET同JAVA一样都采用中间语言.虚拟机/SDK等诸多特质,而且高等语言的类库编码规范 ...

  8. OD调试9—实例:深入分析代码完成软件破解

    OD调试9—实例:深入分析代码完成软件破解  爆破,是最初级的解决方案,不到万不得已,我们不直接修改JNZ通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出 ...

  9. 报表软件公司悬赏 BUG,100块钱1个的真实用意

    上一篇文章我讲到,报表软件FineReport一反常态,做了个<提BUG,拿现金>的活动,1个BUG,100块钱.纵览软件行业,如金蝶用友浪潮IBM微软等国内外巨头,均没有这样的举动去征集 ...

  10. UNIMRCP 代码走读

    基于UNIMRCP1.5.0的代码走读 与 填坑记录 1. server启动配置加载 入口:unimrcp_server.c static apt_bool_t unimrcp_server_load ...

随机推荐

  1. SNN_TIPS

    脉冲神经网络的研究思路: ANN2SNN 代表: 梯度下降法 代表: STDP 代表: 神经网络代差划分 以神经元实现功能为准: 优势 SNN是一个动态系统,在动态识别中发挥出色,比如语音识别和动态图 ...

  2. “技能兴鲁”职业技能大赛-网络安全赛项-学生组初赛 Crypto WP

    babyRSA 查看代码 from gmpy2 import * from Crypto.Util.number import * flag = 'flag{I\'m not gonna tell y ...

  3. CART算法解密:从原理到Python实现

    本文深入探讨了CART(分类与回归树)算法的核心原理.实现方法以及应用场景.文章首先介绍了决策树的基础知识,然后详细解析了CART算法的工作机制,包括特征选择和树的构建.接着,通过Python和PyT ...

  4. .NET生成微信小程序推广二维码

    前言 对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了.今天接到一个需求就是生成小程序码,并且与运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种二 ...

  5. Excel表格函数公式出现溢出怎么办?

    Excel是一款广泛使用的电子表格软件,它可以帮助我们进行各种计算.数据分析与处理等操作.在使用Excel时,我们通常需要使用到各种函数公式来完成不同的任务.然而,在使用函数公式时有时会出现" ...

  6. [ARC144D] AND OR Equation

    Problem Statement You are given positive integers $N$ and $K$. Find the number, modulo $998244353$, ...

  7. [AGC034D] Manhattan Max Matching

    Problem Statement Snuke is playing with red and blue balls, placing them on a two-dimensional plane. ...

  8. spring报错

    C:\Users\dell\.jdks\openjdk-19.0.2\bin\java.exe "-javaagent:E:\idea图片\IntelliJ IDEA 2022.2.3\li ...

  9. JDK1.8下载 用阿里云盘

    JDK1.8下载 用阿里云盘 jdk-8u202-windows-x64.exe https://www.aliyundrive.com/s/jJhWUk17jMt 点击链接保存,或者复制本段内容,打 ...

  10. StingBuilder与StringBuffer包含的常见方法(图示)

    StingBuilder与StringBuffer包含的常见方法