五分钟够做什么?刷几个短视频?看一篇新闻?
你是不是感觉最近大模型的各种应用层出不穷?你有没有想过自己可以很轻松地复刻或者创造出一些有趣的基于大模型和(多)智能体的应用,比如由多智能体组成的狼人杀?如果告诉你,现在有一款开源的多智能体编程框架,能让你很轻松地实现这些应用,你会不会很心动?
这篇文章让你5分钟内快速上手一款多智能体编程框架,AgentScope!就5分钟,让你跨过多智能体开发的第一道门槛!5分钟能让你搭建一个属于你自己的、大模型驱动的多智能体聊天小应用!
欢迎关注AgentScope,在github上(https://github.com/modelscope/agentscope) 为我们star ?。我们会在接下来几天,陆续推出一些教程,让大家每天花5~10分钟,搭建出不同的由简单到复杂的有趣的多智能体应用!
没有显卡?别担心,现在很多公司提供了大模型api。只要能连接网络,用这些api,我们用一般的个人电脑也可以运行自己的智能体程序。开始前请做好连接大语言模型的准备
有阿里云DashScope或OpenAI的api 访问API key,
或者其他能接收设的http post-request的大模型端口。
从github上clone AgentScope仓库(https://github.com/modelscope/agentscope),安装最新代码~
git clone git@github.com:modelscope/agentscope.gitcd AgentScope# On macpip install -e .\[full\]# On windowspip install -e .[full]
第一步:如何连接大模型?
作为智能体(agent)的“大脑”,我们首先需要为我们的智能体准备一个大模型。
比如,在AgentScope中配置DashScope支持的通义(qwen-max)模型配置:
import os
"""
在环境变量中设置了'DASHSCOPE_API_KEY':
命令行中执行:export DASHSCOPE_API_KEY='替换成你的apikey'
可以通过命令行:echo $DASHSCOPE_API_KEY 来检查是否真的设置成功
"""
dashscope_example_config = {
"model_type": "dashscope_chat",
"config_name": "tongyi_qwen_config",
"model_name": "qwen-max",
"api_key": f"{os.environ.get('DASHSCOPE_API_KEY')}",
}
除了DashScope的API,在AgentScope中也可以配置其他流行的模型 (只需要所有这些配置(config)中的一个,就足以完成本次任务~)
# 使用OpenAI模型(gpt-3.5-turbo,或者替换成其他openai模型)的配置
# 相似的可以echo $OPENAI_API_KEY 来检查OPENAI_API_KEY是否设置成功
openai_example_config = {
"model_type": "openai",
"config_name": "gpt-3.5-config",
"model_name": "gpt-3.5-turbo",
"api_key": f"{os.environ.get('OPENAI_API_KEY')}",
"generate_args": {
"temperature": 0.5,
},
}
# 其他可以通过post 访问的LLM接口
# 下面的my_postapi_config可以对应的open ai的post ai端口规则
# curl $YOUR_URL_TO_MODEL \
# -H "Content-Type: application/json" \
# -H "Authorization: Bearer $YOUR_API_KEY_IF_ANY" \
# -d '{
# "model": "XXX",
# "messages": [
#.....
# ]
# }'
postapi_example_config = {
"model_type": "post_api_chat",
"config_name": "my_postapi_config",
"api_url": "$YOUR_URL_TO_MODEL",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY_IF_ANY"
},
"messages_key": "messages",
"json_args": {
"model": "XXX",
}
}
除了对话模型,AgentScope还支持很多其他的模型调用,比如本地只用cpu跑的ollama的模型,又比如embedding生成、文生图、图生文等等。将来大家需要进一步开发更酷炫的多智体应用的时候,更多配置详情可以参考教程(https://modelscope.github.io/agentscope/zh_CN/tutorial/203-model.html)。
第二步:如何配置简单的智能体(agent)?
有了模型的配置,AgentScopet提供了一个非常方便的初始化方法,可以一步就帮你把所有的模型引入AgentScope环境中:
import agentscope
# 让config生效
agentscope.init(
model_configs=[
dashscope_example_config,
openai_examaple_config,
# 其他模型配置也可以继续添加在这里~
],
)
作为最基础的一种agent,DialogAgent可能是最简单上手的一个agent。创建一个实例,只需要给dialog agent命名、简单的系统提示词和一个模型的配置(config)的名字:
from agentscope.agents import DialogAgent
dialog_agent = DialogAgent(
name="Assistant",
sys_prompt="You're a helpful assistant.",
model_config_name="tongyi_qwen_config",# 其中一个你在上面步骤准备好的配置名字(config_name对应的值)
)
第三步:如何把agent包装成一个简单程序
好了,有了一个有记忆、能和你对话的智能体dialog_agent,现在我们创建一个user_agent作为你在电子世界的代理,用来接收用户输入信息。
from agentscope.agents.user_agent import UserAgent
user_agent = UserAgent()
现在我们已经创建好了user_agent和dialog_agent,再有几行代码,就能搭建出一个完整的小程序啦!
# start the conversation between user and assistantx = Nonewhile x is None or x.content != "exit":x = dialog_agent(x)x = user_agent(x)
一键启动UI界面
什么,嫌弃命令行的应用不够酷炫?AgentScope懂你,为你提供一键生成图形界面!你只需要把上面的代码包装在一个main函数中,把程序保存成.py文件,比如conversation.py。
import os
import agentscope
from agentscope.agents import DialogAgent
from agentscope.agents.user_agent import UserAgent
def main() -> None:
"""A basic conversation demo"""
dashscope_example_config = {
"model_type": "dashscope_chat",
"config_name": "tongyi_qwen_config",
"model_name": "qwen-max",
"api_key": f"{os.environ.get('DASHSCOPE_API_KEY')}",
}
agentscope.init(
model_configs=[dashscope_example_config],
)
dialog_agent = DialogAgent(
name="Assistant",
sys_prompt="You're a helpful assistant.",
model_config_name="tongyi_qwen_config",
)
user_agent = UserAgent()
x = None
while x is None or x.content != "exit":
x = dialog_agent(x)
x = user_agent(x)
然后,在命令行一键启动~ (需要确保安装的是full verison)
as_studio conversation.py
你会看到类似于下面的输出
bash-3.2$ as_studio conversation.py
Running on local URL:http://127.0.0.1:7860
To create a public link, set `share=True` in `launch()`.
在浏览器中打开http://127.0.0.1:7860, 一个简易的网页版就对话应用就准备好啦!