AutoGen從入門到高階系列一:如何從零開始構(gòu)建你的第一個(gè)智能體? 原創(chuàng)
最近團(tuán)隊(duì)里的小伙伴都在討論AutoGen,作為一個(gè)去年還在手搓智能體的"老派"開發(fā)者,我也決定跟上技術(shù)潮流。經(jīng)過一段時(shí)間的實(shí)踐,我發(fā)現(xiàn)這個(gè)框架確實(shí)能極大提升開發(fā)效率。今天開始,我將通過一系列文章,帶大家從零開始掌握AutoGen。文章大致目錄是這么安排的:
- 基礎(chǔ)入門
- 內(nèi)置智能體
- 自定義智能體及高級(jí)技巧
- 智能體到底是如何進(jìn)行團(tuán)隊(duì)協(xié)作的
- 狀態(tài)管理
- swarm模式
- 分布式智能體
作為開篇,我們先來認(rèn)識(shí)這個(gè)強(qiáng)大的工具。
初識(shí)AutoGen
想象一下,你面前擺著一盒特殊的樂高積木。與其他樂高不同的是,這里的每個(gè)積木塊都是一個(gè)活生生的"智能體"——它們能思考、會(huì)交流、可以執(zhí)行任務(wù)。AutoGen就是這樣一個(gè)神奇的"樂高盒子",它讓開發(fā)者能夠像搭積木一樣,自由組合各種智能體來完成復(fù)雜任務(wù)。
在我的上一個(gè)電商客服系統(tǒng)項(xiàng)目中,需要同時(shí)處理客戶咨詢、訂單查詢、售后跟進(jìn)等多個(gè)環(huán)節(jié)。如果按照傳統(tǒng)方式開發(fā),光是設(shè)計(jì)各個(gè)模塊的交互邏輯就讓人頭疼。而使用AutoGen后,我只需要?jiǎng)?chuàng)建幾個(gè)專門的智能體:一個(gè)負(fù)責(zé)理解客戶意圖,一個(gè)專精訂單查詢,另一個(gè)處理售后流程,再讓它們協(xié)同工作,整個(gè)系統(tǒng)的開發(fā)時(shí)間縮短了60%。
核心概念解析
要掌握AutoGen,首先需要理解其核心組件:
智能體(Agent)作為系統(tǒng)的基礎(chǔ)單元,每個(gè)都具備獨(dú)特的功能特性。系統(tǒng)內(nèi)置了多種即用型智能體:
- 助手智能體(AssistantAgent):集成語言模型并支持工具調(diào)用
- 用戶代理(UserProxyAgent):處理用戶輸入并返回響應(yīng)
- 代碼執(zhí)行器(CodeExecutorAgent):專長于代碼運(yùn)行
- OpenAI助手(OpenAIAssistantAgent):基于OpenAI的智能體,支持自定義工具
- 多模態(tài)瀏覽器(MultimodalWebSurfer):具備網(wǎng)頁搜索和內(nèi)容獲取能力
- 文件瀏覽器(FileSurfer):本地文件搜索專家
- 視頻解析器(VideoSurfer):專業(yè)處理視頻內(nèi)容
消息機(jī)制是智能體間的溝通橋梁,支持多種格式:
- 文本消息(TextMessage)
- 多模態(tài)消息(MultiModalMessage)
- 工具調(diào)用請(qǐng)求(ToolCallRequestEvent)
工具(Tool)作為能力擴(kuò)展模塊,為智能體提供額外功能支持,如網(wǎng)絡(luò)搜索、代碼執(zhí)行等。
團(tuán)隊(duì)協(xié)作模式讓多個(gè)智能體形成有機(jī)整體,系統(tǒng)提供:
- 輪詢團(tuán)隊(duì)(RoundRobinGroupChat)
- 選擇器團(tuán)隊(duì)(SelectorGroupChat)
終止條件定義了協(xié)作流程的結(jié)束規(guī)則,包括:
- 最大消息數(shù)限制(MaxMessageTermination)
- 文本提及檢測(cè)(TextMentionTermination)
- 自定義結(jié)束條件
記憶系統(tǒng)負(fù)責(zé)存儲(chǔ)對(duì)話歷史和用戶偏好,為智能體提供上下文支持。
通過以上組件的有機(jī)組合,AutoGen能夠構(gòu)建出適應(yīng)各種場(chǎng)景的智能體協(xié)作解決方案。在后續(xù)文章中,我們將深入探討每個(gè)組件的具體應(yīng)用。
特點(diǎn)
- 異步和事件驅(qū)動(dòng)架構(gòu):這使得整個(gè)系統(tǒng)在并發(fā)性和響應(yīng)速度上有巨大優(yōu)勢(shì),調(diào)試起來也容易許多。
- 高度可擴(kuò)展性:你可以隨心所欲地添加新的智能體類型、工具和服務(wù),適應(yīng)不同的應(yīng)用場(chǎng)景。
- 豐富的內(nèi)置智能體:比如AssistantAgent(用語言模型并可以調(diào)用工具的智能體),UserProxyAgent(接收用戶輸入并將其作為響應(yīng)返回的智能體)等,為你的開發(fā)省去了大部分基礎(chǔ)工作。
- 人機(jī)協(xié)同:允許在智能體工作流程中加入人類的參與,實(shí)現(xiàn)真正的人機(jī)融合交互。
當(dāng)然,更多的特點(diǎn)我就不一一贅述了,推薦大家自己去探索。接下來,我想分享一個(gè)簡單的示例,演示如何使用 AutoGen 創(chuàng)建一個(gè)基本的智能體團(tuán)隊(duì)
環(huán)境準(zhǔn)備
首先,我們需要安裝必要的軟件包:
pip install autogen-agentchat autogen-ext[openai]組建智能體
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_agentchat.ui import Console
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.agents import AssistantAgent
import asyncio
# 初始化GPT-4o模型
model_client = OpenAIChatCompletionClient(
model="gpt-4o",
base_url=base_url,
api_key=api_key
)
# 創(chuàng)建詩人智能體
poet = AssistantAgent(
name="libai",
system_message="你是個(gè)浪漫的詩人,擅長創(chuàng)作七言絕句",
model_client=model_client
)
# 創(chuàng)建評(píng)論家智能體
critic = AssistantAgent(
name="dufu",
system_message="你是個(gè)嚴(yán)格的評(píng)論家,滿意時(shí)說【通過】",
model_client=model_client,
)
# 設(shè)置團(tuán)隊(duì)協(xié)作規(guī)則
team = RoundRobinGroupChat(
[poet, critic],
termination_condition=TextMentionTermination("通過")
)運(yùn)行協(xié)作系統(tǒng)
async def main():
task = "寫一首關(guān)于明月的七言絕句"
await Console(team.run_stream(task=task))
asyncio.run(main())運(yùn)行效果如下:
---------- TextMessage (user) ----------
寫一首關(guān)于明月的七言絕句
---------- TextMessage (libai) ----------
明月高懸照九州,
清輝如水洗煩憂。
千里共此一時(shí)景,
萬家燈火伴情柔。
---------- TextMessage (dufu) ----------
【通過】總結(jié)
只需幾行代碼,我們就能輕松搭建一個(gè)RoundRobinGroupChat協(xié)作團(tuán)隊(duì)。在這個(gè)團(tuán)隊(duì)中,libai負(fù)責(zé)詩歌創(chuàng)作,dufu則擔(dān)任審閱工作。這種開箱即用的便捷性正是AutoGen的魅力所在。實(shí)際上,AutoGen已經(jīng)內(nèi)置了多種功能各異的智能體,關(guān)于這些內(nèi)置智能體的詳細(xì)介紹,我將在下一篇文章中為大家展開講解。歡迎點(diǎn)贊收藏加關(guān)注,獲取實(shí)時(shí)更新!
本文轉(zhuǎn)載自??AI 博物院?? 作者:longyunfeigu

















