MetaGPT day01: MetaGPT作者代码走读、软件公司初始示例
生活随笔
收集整理的這篇文章主要介紹了
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作者代码走读、软件公司初始示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ictclas,ansj,结巴分词,St
- 下一篇: java信息管理系统总结_java实现科