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. Educational Codeforces Round 103 (Rated for Div. 2) A~D题解

    写在前边 链接:Educational Codeforces Round 103 (Rated for Div. 2) A. K-divisible Sum 链接:A题链接 题目大意: 要求构造一个\ ...

  2. Ubuntu 20.04 挂载局域网络共享硬盘

    创建挂载目录 mkdir /media/nas 创建认证文件.若无密码可以忽略这一步. sudo vim /root/.examplecredentials 按照以下格式写入用户名密码: userna ...

  3. 匿名远程启动jenkins的job

    安装jenkins插件Build Authorization Token Root job配置中的构建触发器,勾选触发远程构建,输入要用的令牌,如soul 通过jenkins地址调用触发 非参数化jo ...

  4. 主界面(零基础适合小白)基础javaweb前端项目实战【包含增删改查,mysql】三

    首先编写sp文件(index.jsp) <%@ page contentType="text/html;charset=UTF-8" language="java& ...

  5. Golang中如何自定义时间类型进行xml、json的序列化/反序列化

    在日常开发工作中,我们进行会遇到将 struct 序列化 json字符串以及将 json字符串 反序列化为 struct 的场景,大家也对此十分熟悉. 最近工作中,遇到了需要将 struct 序列化 ...

  6. AntDesignBlazor示例——列表查询条件

    本示例是AntDesign Blazor的入门示例,在学习的同时分享出来,以供新手参考. 示例代码仓库:https://gitee.com/known/AntDesignDemo 1. 学习目标 重构 ...

  7. Nougat:结合光学神经网络,引领学术PDF文档的智能解析、挖掘学术论文PDF的价值

    Nougat:结合光学神经网络,引领学术PDF文档的智能解析.挖掘学术论文PDF的价值 这是Nougat的官方存储库,Nougat是一种学术文档PDF解析器,可以理解LaTeX数学和表格. Proje ...

  8. The fourth day learning summary

    一.for 循环循环就是重复做某件事,for循环是python提供第二种循环机制(第一种是while循环),理论上for循环能做的事情,while循环都可以做.目的:之所以要有for循环,是因为for ...

  9. RIPEMD加密算法:原理、应用与安全性

    一.引言 在信息时代,数据安全愈发受到重视,加密算法作为保障信息安全的关键技术,其性能和安全性备受关注.RIPEMD(RACE Integrity Primitives Evaluation Mess ...

  10. 华企盾DSC发送白名单提示“解密发送失败”(被中转服务器判定为垃圾邮箱)

    解决方法:用DebugView监控,发现含有550错误,说明中转服务器被判定为垃圾邮箱,换一个中转邮箱或者设置为无中转发送 还有一种可能:邮箱设置了收到邮箱后自动删除 ​ DebugView中显示上图 ...