日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

MetaGPT day01: MetaGPT作者代码走读、软件公司初始示例

發布時間:2024/1/18 windows 35 coder
生活随笔 收集整理的這篇文章主要介紹了 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作者代码走读、软件公司初始示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。