? ?如上圖所示:AutoGen使用多智能體對話實現(xiàn)了復雜的基于LLM的工作流。(左)AutoGen代理可以定制,可以基于LLM、工具、人員,甚至是它們的組合。(右上角)代理可以通過對話解決任務。(右下角)該框架支持許多其他復雜的對話模式。

使用AutoGen,構建一個復雜的多智能體對話系統(tǒng)可以歸結為:

? ? ? 這兩個步驟都是直觀的和模塊化的,使這些代理可以重復使用和組合。例如,要構建一個基于代碼的問答系統(tǒng),可以如下圖所示設計代理及其交互,這樣的系統(tǒng)可以在像 supply-chain optimization(https://github.com/microsoft/OptiGuide)的應用中可以將所需的手動交互次數(shù)從3倍減少到10倍。使用AutoGen可以將編碼工作量減少4倍以上。

如上圖所示:Commander接收用戶的問題,并與Writer和Safeguard進行協(xié)調。Writer編寫代碼和注釋,Safeguard確保安全,Commander執(zhí)行代碼。如果出現(xiàn)問題,可以重復此過程,直到問題得到解決。帶陰影的圓表示可以重復多次的步驟。

? ? ? ?在這個框架中,是將每個代理(agents)視為具有其獨特系統(tǒng)指令的單個ChatGPT會話。例如,可以指示一個代理充當編程助手,根據用戶請求生成Python代碼。另一個代理可以是代碼審查器,它獲取Python代碼片段并對其進行故障排除。然后,可以將第一個代理的響應作為輸入傳遞給第二個代理。其中一些代理甚至可以訪問外部工具,比如ChatGPT插件,如Code Interpreter或Wolfram Alpha。

? ? ? ?使用AutoGen內置代理的一種簡單方法是調用助理代理和用戶代理之間的自動聊天。如下圖所示,可以輕松構建ChatGPT+ Code Interpreter+plugins的增強版,具有可定制的自動化程度,可在自定義環(huán)境中使用,并可嵌入更大的系統(tǒng)中。同樣也可以根據歷史交互記錄添加個性化。

以代理會話為中心的設計有許多好處,包括:

? ? ? ?AutoGen支持自動化聊天和多樣化的通信模式,可以輕松地協(xié)調復雜、動態(tài)的工作流程并進行多功能性實驗。下圖展示了一個由AutoGen啟用的會話象棋。

二、Autogen實戰(zhàn)

       下面我們以FizzBuzz游戲進行演示autogen的使用方法,F(xiàn)izzBuzz游戲是一個報數(shù)游戲,從1開始報數(shù),如果這個數(shù)可以被3整除,你就要改為說”Fizz”,如果能被5整除,就改為說”Buzz”。如果同時是3和5的倍數(shù),打印”FizzBuzz”。現(xiàn)在,你的數(shù)學老師開始輪流指向每個同學,他們開心的喊出”1!”、”2!”、”Fizz!”、”4!”、”Buzz!”…

2.1 設置環(huán)境

       Agent創(chuàng)建的代碼可以在各種環(huán)境中執(zhí)行,例如在Colab、Docker或原始環(huán)境中。推薦使用Colab和Docker作為執(zhí)行環(huán)境。

2.2 初始設置

? ? ? 首先,我們必須配置Open API密鑰以及其他內容。為此,我們復制autogen根目錄中的OAI_CONFIG_LIST_sample來生成OAI_CONFIG _LIST文件,并將此文件與稍后運行的腳本放在同一目錄中。

[
{
"model": "gpt-4",
"api_key": "<your OpenAI API key here>"
}
]

2.3 安裝相關包

PS:Python version >= 3.8, < 3.12

pip install pyautogen

??以下代碼中,如果use_docker標志設置為False,它將在本地Python環(huán)境中運行。

from autogen import AssistantAgent, UserProxyAgent, config_list_from_json
code_execution_config = {
"work_dir": "coding",
"use_docker": False
}
config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST")
assistant = AssistantAgent("assistant", llm_config={"config_list": config_list})
user_proxy = UserProxyAgent("user_proxy", code_execution_config=code_execution_config)
message = "Create and run the FizzBuzz code."
user_proxy.initiate_chat(assistant, message=message)

AssistantAgent是一個執(zhí)行LLM的模塊,在FizzBuzz中,它是一個創(chuàng)建源代碼的模塊。輸入要使用的API及其密鑰作為配置,AssistantAgent中的LLM推理配置可以通過LLM_cofing進行配置。

        接下來,讓我們建立一個UserProxyAgent。設計用于與個人互動并執(zhí)行源代碼的模塊。使用code_execution_config配置執(zhí)行環(huán)境和其他相關設置。

? ? ? ? 執(zhí)行的預期結果應該類似于以下內容,將觀察到FizzBuzz代碼的生成

assistant (to user_proxy):
This is a very common coding challenge. The task is to print numbers from 1 to 100, but for multiples of 3 print "Fizz" instead of the number and for the multiples of 5 print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".
Here is the Python code that accomplishes the task:
```python
# filename: fizzbuzz.py
for num in range(1, 101):
if num % 3 == 0 and num % 5 == 0:
print('FizzBuzz')
elif num % 3 == 0:
print('Fizz')
elif num % 5 == 0:
print('Buzz')
else:
print(num)
```
To run this script, save it into a file called fizzbuzz.py, then run it using Python in a terminal: ```shell python3 fizzbuzz.py

參考文獻:

[1] https://www.microsoft.com/en-us/research/blog/autogen-enabling-next-generation-large-language-model-applications/

[2] https://quickaitutorial.com/how-powerful-autogen-is-reshaping-llm/#1_Set_up_your_environment

[3] https://github.com/microsoft/autogen

[4]?https://microsoft.github.io/autogen/

文章轉自微信公眾號@ArronAI

上一篇:

LLM之Agent(六)| 使用AutoGen、LangChian、RAG以及函數(shù)調用構建超級對話系統(tǒng)

下一篇:

API描述語言如何賦能AI
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數(shù)據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費