9 月 19 日,阿里開源了 Qwen2.5 系列大模型全家桶:除常規的語言模型 Qwen2.5 之外,還發布了專門針對編程的Qwen2.5-Coder模型和數學的 Qwen2.5-Math 模型,并且針對每個模型都提供了不同規模參數版本,包括:
Qwen2.5 系列模型性能和推理能力對比,老牛同學不在贅述,我們可以到 Qwen 官網博客查看詳細介紹:https://qwenlm./zh/blog/qwen2.5/ 在國內開源大模型中,老牛同學用遙遙領先做為 Qwen2.5 模型系列總結一點也不為過,國內開源大模型能真打的實在是太少了! 老牛同學對Qwen2.5-Coder比較感興趣,可能是老牛同學專業的原因,非常期待能有一個智能編程的模型或應用,真所謂:碼無止境,學無止境! 今天,老牛同學就基于Qwen2.5-Coder模型,結合CrewAI多智能體框架,實現一個能根據軟件需求編寫程序代碼的系統,同時感受一下Qwen2.5-Coder的能力。因此本文大致分為以下三部分:
Qwen2.5-Coder 本地部署通過老牛同學前面的文章可以看到,我們至少有 3 種方式在本地部署和推理大模型,本文就是不在詳細介紹其過程了(感興趣的朋友可以翻看一下老牛同學之前文章)。 為了盡快實現我們的目標,我們將使用Ollama快速在本地部署Qwen2.5-Coder模型;關于 Ollama 的詳細介紹和使用教程,可以參考老牛同學之前文章:https://mp.weixin.qq.com/s/majDONtuAUzN2SAaYWxH1Q 我們安裝好Ollama程序之后,通過以下一條命令,即可完成大模型的下載和部署: ollama run qwen2.5-coder:7b 下載和部署成功之后,Ollama默認自帶了一個終端對話窗口: 至此,Qwen2.5-Coder模型本地部署就成功了,接下來我們來實現多智能體代碼邏輯~ CrewAI 多智能體設計和實現CrewAI是一個多智能體框架,關于它的詳細介紹和使用教程,可以參考老牛同學之前文章:https://mp.weixin.qq.com/s/wqOqupVIDsKDW-Kmj3IRYw 工欲善其事,必先利其器,我們先準備一下CrewAI的研發環境,我們通過Miniconda管理 Python 虛擬環境,Miniconda的安裝和使用可以參考老牛同學之前的文章:https://mp.weixin.qq.com/s/P_ufvz4MWVSqv_VM-rJp9w
我們的編程智能體為游戲智能編程團隊(姑且就叫這個名吧),這個團隊由3 個角色組成(即:3 個智能體),他們的工作職責設定如下:
我們通過以下步驟,完成游戲智能編程團隊整體邏輯(Python 文件:CrewAI-Game.py),首先我們需要導入程序的均依賴類: import os
from textwrap import dedent
from crewai import Agent, Task, Crew 【第一步:配置Qwen2.5-Coder大模型】
【第二步:定義3 個角色(即:3 個智能體)】 3 個智能體分別是:高級軟件工程師、高級質量工程師和首席質量工程師 #
# 3個智能體邏輯
#
def senior_engineer_agent():
'''高級軟件工程師智能體'''
return Agent(
role='高級軟件工程師',
goal='根據需求完成軟件編程',
backstory=dedent('''你是一位國際領先的科技公司的高級軟件工程師。
你非常擅長Python編程,并盡自己的最大努力編寫功能齊全、運行良好的完美代碼。
'''),
allow_delegation=False,
verbose=True
)
def qa_engineer_agent():
'''高級軟件質量工程師智能體'''
return Agent(
role='高級軟件質量工程師',
goal='分析程序代碼,找出其中的錯誤,并修復這些錯誤代碼',
backstory=dedent('''你是一位檢測代碼的高級工程師。
你對代碼細節很敏銳,非常擅長找出代碼中的Bug,包括檢查是否缺少導入、變量聲明、不匹配括號和語法錯誤等。
您還能檢查出代碼的安全漏洞和邏輯錯誤。
'''),
allow_delegation=False,
verbose=True
)
def chief_qa_engineer_agent():
'''首席軟件質量工程師智能體'''
return Agent(
role='首席軟件質量工程師',
goal='確保代碼實現了需求',
backstory='''你懷疑程序員沒有按照需求編寫軟件,你特別專注于編寫高質量的代碼。''',
allow_delegation=True,
verbose=True
) 【第三步:定義3 個任務(即:3 個智能體的任務)】 與 3 個智能體對應,每個智能體均對應有 1 個任務:
【第四步:定義團隊,組織智能體協同執行任務】 CrewAI中,Crew代表團隊,它有agents和tasks這 2 個核心屬性,最終通過kickoff()方法觸發執行整個流程: #
# 團隊邏輯
#
print('')
game = input('# 您好,我們是游戲智能編程團隊,請輸入游戲的詳細描述:\n\n')
print('')
# 智能體
senior_engineer_agent = senior_engineer_agent()
qa_engineer_agent = qa_engineer_agent()
chief_qa_engineer_agent = chief_qa_engineer_agent()
# 任務
code_game = code_task(senior_engineer_agent, game)
review_game = review_task(qa_engineer_agent, game)
approve_game = evaluate_task(chief_qa_engineer_agent, game)
# 團隊
crew = Crew(
agents=[
senior_engineer_agent,
qa_engineer_agent,
chief_qa_engineer_agent
],
tasks=[
code_game,
review_game,
approve_game
],
verbose=True
)
# 執行
game_code = crew.kickoff() 最后,我們拿到 Python 代碼之后,希望能保存到本地文件(Python 文件:Game.py):
以上步驟即完成了我們只能編程團隊代碼,接下就可以執行了:python CrewAI-Game.py CrewAI 執行過程中,我們看到 3 個智能體執行詳細信息:
最后,我們運行本地存儲的小游戲程序:python Game.py 因為程序使用到了Pygame包,如果虛擬環境沒有的話,需要安裝一下:pip install pygame 最終我們運行起來了貪吃蛇游戲: 至此,本次我們需求基本完成了,我們通過定義的 3 個智能體和對應的任務,最終智能體與Qwen2.5-Coder交互完成軟件需求程序的編寫。 程序最終還能跑起來,這也進一步體現了Qwen2.5-Coder模型的語音和代碼推理能力! 往期推薦文章: vLLM CPU 和 GPU 模式署和推理 Qwen2 等大語言模型詳細教程 基于 Qwen2/Lllama3 等大模型,部署團隊私有化 RAG 知識庫系統的詳細教程(Docker+AnythingLLM) 使用 Llama3/Qwen2 等開源大模型,部署團隊私有化 Code Copilot 和使用教程 基于 Qwen2 大模型微調技術詳細教程(LoRA 參數高效微調和 SwanLab 可視化監控) ChatTTS 長音頻合成和本地部署 2 種方式,讓你的“兒童繪本”發聲的實戰教程 MiniCPM-V 2.6 面壁“小鋼炮”,多圖、視頻理解多模態模型,部署和推理實戰教程 微信公眾號:老牛同學 |
|