AgentScope框架簡介與你的第一個AgentScope程序
這是我們學習的第四款智能體框架了。
前面我們學習了 AutoGPT、MetaGPT、LangGraph 等智能體應(yīng)用開發(fā)框架,各有優(yōu)缺點。今天我們開始學習AgentScope這一款多智能體開發(fā)框架。在AI快速發(fā)展的現(xiàn)在,多上手體驗一下各個框架,更能加深對AI大模型應(yīng)用開發(fā)中各種知識的深入理解。AI界大佬吳恩達也督促大家今年關(guān)注 AI Agent 工作流的發(fā)展和應(yīng)用。所以,卷起來吧,多看看,多用用,沒壞處。
0. AgentScope簡介
AgentScope是阿里開源的一款全新的多智能體協(xié)同的Multi-Agent應(yīng)用框架,旨在幫助開發(fā)者更輕松地構(gòu)建基于大語言模型的多智能體應(yīng)用程序。它具有以下特點:
1. 易用性:AgentScope注重易用性,為開發(fā)者提供了簡潔明了的編程模式,豐富的語法工具和內(nèi)置資源,使得編程多智能體應(yīng)用程序變得更加輕松愉快。
2. 魯棒性:AgentScope集成了全面的服務(wù)級重試機制和規(guī)則性修正工具,以處理LLMs響應(yīng)中的明顯格式問題。此外,AgentScope還提供了可定制的容錯配置,使開發(fā)者能夠通過參數(shù)來自定義容錯機制。
3. 支持多模態(tài)數(shù)據(jù):AgentScope支持多模態(tài)數(shù)據(jù)在對話呈現(xiàn)、消息傳輸和數(shù)據(jù)存儲中的應(yīng)用,通過統(tǒng)一的基于URL的屬性來解耦多模態(tài)數(shù)據(jù)的傳輸和存儲,從而最大限度地減少了消息在每個智能體內(nèi)的復(fù)雜性。
4. 分布式部署:針對分布式應(yīng)用程序帶來的額外編程難題和系統(tǒng)設(shè)計挑戰(zhàn),AgentScope也提供了支持。
1. 安裝
因為我的目的是學習,不光要會用,有時候還會深入源碼去看一下實現(xiàn)原理,所以我這里使用源碼安裝。其它安裝方法請參考官方安裝教程。
# 從GitHub上拉取AgentScope的源代碼
git clone https://github.com/modelscope/agentscope.git
cd agentscope
# 針對本地化的multi-agent應(yīng)用
pip install -e .
如果報錯 Timeout:
使用以下命令重新安裝:
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 快速上手 - 快速跑通第一個Demo
2.1 完整代碼
老規(guī)矩,先上完整代碼,大家復(fù)制粘貼,先跑通再說。
import agentscope
import os
openai_api_key = os.getenv('OPENAI_API_KEY')
# 一次性初始化多個模型配置
openai_cfg_dict = {
"config_name": "openai_cfg", # A unique name for the model config.
"model_type": "openai", # Choose from "openai", "openai_dall_e", or "openai_embedding".
"model_name": "gpt-3.5-turbo", # The model identifier used in the OpenAI API, such as "gpt-3.5-turbo", "gpt-4", or "text-embedding-ada-002".
"api_key": openai_api_key, # Your OpenAI API key. If unset, the environment variable OPENAI_API_KEY is used.
}
agentscope.init(model_configs=[openai_cfg_dict])
from agentscope.agents import DialogAgent, UserAgent
# 創(chuàng)建一個對話智能體和一個用戶智能體
dialogAgent = DialogAgent(name="assistant", model_config_name="openai_cfg", sys_prompt="You are a helpful ai assistant")
userAgent = UserAgent()
x = None
x = dialogAgent(x)
print("diaglogAgent: \n", x)
x = userAgent(x)
print("userAgent: \n", x)
運行結(jié)果:
2.2 代碼詳解
下面來解釋下上面的代碼。
2.2.1 配置
像其它框架一樣,我們也需要配置我們使用的大模型以及API Key等參數(shù)。AgentScope的配置方式是創(chuàng)建一個字典類型的變量,在變量里填入相應(yīng)值,然后通過初始化接口傳遞給AgentScope:
openai_cfg_dict = {
"config_name": "openai_cfg", # A unique name for the model config.
"model_type": "openai", # Choose from "openai", "openai_dall_e", or "openai_embedding".
"model_name": "gpt-3.5-turbo", # The model identifier used in the OpenAI API, such as "gpt-3.5-turbo", "gpt-4", or "text-embedding-ada-002".
"api_key": openai_api_key, # Your OpenAI API key. If unset, the environment variable OPENAI_API_KEY is used.
}
agentscope.init(model_configs=[openai_cfg_dict])
注意看下配置的Key值:config_name, model_type, model_name 和 api_key。通過 agentscope.init 函數(shù)設(shè)置進去。
關(guān)于配置的疑問
沒搞懂的是,這里的配置是必須傳入?還是只要環(huán)境變量中存在了 OPENAI_API_KEY 值就可以不用傳 “api_key” ?
? 為什么有這個疑問:因為我并沒有找到在哪里設(shè)置 代理地址,而我的API Key不是原生的OpenAI Key,必須通過代理才能使用OpenAI的接口。但是以上代碼在沒有傳遞代理地址的情況下竟然運行成功了,那么,是不是只要環(huán)境變量中有了,不傳遞這個config也行?
? 我將api_key去掉,也運行成功了…
? 不傳模型名字倒是不行,會報錯:
2.2.2 創(chuàng)建智能體
接下來,代碼中創(chuàng)建了兩個智能體:一個對話智能體DialogAgent 和 一個用戶智能體 userAgent
# 創(chuàng)建一個對話智能體和一個用戶智能體
dialogAgent = DialogAgent(name="assistant", model_config_name="openai_cfg", sys_prompt="You are a helpful ai assistant")
userAgent = UserAgent()
2.2.3 運行智能體
然后是運行智能體:
x = None
x = dialogAgent(x)
print("diaglogAgent: \n", x)
x = userAgent(x)
print("userAgent: \n", x)
從運行效果來看,對話智能體就是與用戶進行對話。用戶智能體,其實就是接收用戶的輸入,讓人參與其中進行干預(yù)。
好了,本文就先寫到這里,主要是帶大家認識一下AgentScope,并搭建好運行環(huán)境。運行了一個簡單的示例,讓大家對AgentScope的使用有一個簡單的認識,沒有深入。后面我們隨著更多案例的實踐,會逐漸深入探索AgentScope的原理及應(yīng)用。
參考:https://developer.aliyun.com/article/1490439
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

AgentScope是一款阿里開源的多智能體協(xié)同框架,旨在幫助開發(fā)者輕松構(gòu)建基于大語言模型的多智能體應(yīng)用程序,它具有易用性、魯棒性、支持多模態(tài)數(shù)據(jù)和分布式部署等特點。