ModelScope-Agent框架再升级!新增一键配置多人聊天,配套开源多智能体数据集和训练

简介: ModelScope-Agent是魔搭社区推出的适配开源大语言模型(LLM)的AI Agent(智能体)开发框架,借助ModelScope-Agent,所有开发者都可基于开源 LLM 搭建属于自己的智能体应用。在最新升级完Assistant API和Tool APIs之后,我们又迎来了多智能体聊天室的升级,通过几分钟快速配置即可搭建一个全新的聊天室。

ModelScope-Agent是魔搭社区推出的适配开源大语言模型(LLM)的AI Agent(智能体)开发框架,借助ModelScope-Agent,所有开发者都可基于开源 LLM 搭建属于自己的智能体应用。在最新升级完Assistant API和Tool APIs之后,我们又迎来了多智能体聊天室的升级,通过几分钟快速配置即可搭建一个全新的聊天室。

开源地址:

https://github.com/modelscope/modelscope-agent/

论文:

https://arxiv.org/abs/2309.00986

框架升级

ModelScope-Agent基础框架

ModelScope-Agent是一个通用的、可定制的Agent框架,用于实际应用程序,其基于开源的大语言模型 (LLMs) 作为核心,包含记忆控制、工具使用等模块。开源 LLM 主要负责任务规划、调度以及回复生成;记忆控制模块,主要包含知识检索以及 prompt (提示词)管理;工具使用模块,包含工具库以及工具检索和工具可定制化。

ModelScope-Agent多智能体聊天框架

单智能体系统(single-agent)在复杂的互动场景中,例如斯坦福小镇、软件公司、多方辩论等,经常会遇到困难。 考虑到ModelScope-Agent的当前状态,希望不影响现有的工作,我们提出了以下设计解决方案:

  1. 将multi-agent的交互逻辑与single-agent的逻辑解耦:

  1. 引入agent注册中心Agent Registry Center(https://github.com/modelscope/modelscope-agent/blob/master/modelscope_agent/agents_registry.py)概念:
  • 用于维护系统中agent的信息并实现相关能力扩展。
  • 用于更新agent状态。

  1. 引入任务中心Task Center(https://github.com/modelscope/modelscope-agent/blob/master/modelscope_agent/task_center.py)概念:
  • 设计的任务中心具有开放性,允许将消息订阅或发布给所有agent,支持agent之间各种形式的交互,如随机交流,或者通过用户定义的逻辑以循环方式进行推进。
  • 允许通过使用send_to 和sent_from 的方法直接交互方法,可快速开发流程简单的应用。
  • 支持聊天机器人模式和终端模式,使用户可以在流媒体聊天gradio应用程序或终端上运行multi-agent。

image.png

快速开始

我们提供了一个可以直接使用的创空间,默认了三个聊天室,用户可以自己构建新的聊天室,只需要配置人物和聊天主题即可,这里我们方便大家快速开始,提供了通义星尘的服务API(https://xingchen.aliyun.com/xingchen/)或者通义千问的API(https://dashscope.console.aliyun.com/model)可以免费申请试用

创空间地址:

https://modelscope.cn/studios/AI-ModelScope/modelscope_agent_multi_roles_room/summary

image.png

最近大火的庆余年二,也只需几分钟按照下面代码的配置,就可以在群聊里面体验当范闲,和多个红粉知己进行畅聊

cd modelscope-agent/apps/multi_roles_chat_room
vim story_holder.py
# 新增这段角色和故事配置即可
STORY_3 = """用户是庆余年男主范闲,在第一部中被二皇子算计自杀诈死,与多位女子都有过深入接触,也被多个女子所喜爱"""
ROLES_3 = {
    '范闲': '由张若昀饰演。尚书范建的养子,叶轻眉与庆帝的儿子。外形俊美,喜怒不形于色,深藏绝世神功。在功成名就之后归隐江南。结识了不少美丽动人的女子,与她们有过爱恨情仇。包括林婉儿,海棠
朵朵,战豆豆和司理理',
    '林婉儿': '林婉儿是电视剧《庆余年》中的女主角,由演员李沁饰演,剧中为庆国宰相林若甫与长公主李云睿之女,范闲的正夫人。她性格活泼开朗,善良正直,爱打抱不平,也爱吃鸡腿,因此有“鸡腿姑娘”的外号。她对范闲一见钟情,两人经历了许多波折后终于走到一起,成为了令人羡慕的夫妻。她身体不好,患有肺结核,后来在范闲的努力下治愈了病痛,并为范闲生下了一个儿子。最后她与范闲隐居田园,过着>幸福的生活。',
    '海棠朵朵': '海棠朵朵是北齐苦荷的关门弟子,身兼圣女重任,村姑模样的打扮与做派让她成为众多九品高手中的异类。范闲出使北齐的路上遇见了海棠朵朵,两人性情相投十分的默契,后来海棠朵朵也陪伴
范闲经历了很多的风雨。范闲和海棠朵朵之间有着深厚的友情和爱情,但是由于身份和国家的原因,他们始终不能公开在一起。虽然海棠朵朵和范闲之间都彼此有好感,但是两个人最终却没有在一起。',
    '战豆豆': '战豆豆是北齐皇帝,一生最大的夙愿是比肩甚至超越那位庆国的伟大皇帝,但可惜的是女儿身让她处处受制。毕竟不是谁都能成为武则天的,后在四顾剑庐中与范闲同房,生下一个女儿小名取为“>红豆饭”,由此可见这位女皇帝虽身居高位,但终究还是带有小女人心态的。战豆豆对范闲有着复杂的情感,既有敌意又有爱意,她曾经想过用各种手段留住范闲,但是最终还是放弃了。她最后的结局也是终身隐瞒
自己女儿身的事实,终身守护北齐国。',
    '司理理': '司理理是北齐国派来的密探,真实身份是庆国皇室血脉,由于夺权事件被迫远走异国他乡。她与范闲相识相知,对他产生了不一样的感情。她曾经为了保护范闲而受尽酷刑,也曾经为了帮助范闲而
背叛了自己的国家。她对范闲的爱情是无私而忠贞的,但是却没有得到回报。她最后为了维护北齐国的尊严,选择留在北齐皇帝战豆豆身边充当爱妃。',
}

配置完成,实测效果

image.png

开源数据

魔搭开源多智能体数据集:

https://modelscope.cn/datasets/iic/MSAgent-MultiRole/summary

首个中文多智能体角色聊天场景的开源数据集,推动多智能体角色扮演中文领域的发展

image.png

进阶训练

SWIFT集成训练

我们可以使用魔搭社区的SWIFT框架微调模型来增强模型的角色扮演能力,现已集成魔搭开源多智能体数据集

微调代码开源地址:

https://github.com/modelscope/swift

环境准备

git clone https://github.com/modelscope/swift.git
cd swift
pip install .[llm]

以llama3-8b-instruct模型为例,只需一行指令开始训练.

train_dataset_mix_ratio会指定混合通用数据集的比例,默认为ms-bench,也可以通过指定train_dataset_mix_ds来指定

swift sft --model_type llama3-8b-instruct --dataset ms-agent-multirole --train_dataset_mix_ratio 2.0

同时支持更多的自定义训练参数设置

CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model_type llama3-8b-instruct \
    --model_revision master \
    --sft_type lora \
    --tuner_backend peft \
    --template_type AUTO \
    --dtype AUTO \
    --output_dir output \
    --dataset ms-agent-multirole \
    --train_dataset_mix_ratio 2.0
    --num_train_epochs 2 \
    --max_length 2048 \
    --check_dataset_strategy warning \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules ALL \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0.1 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps 16 \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 100 \
    --save_steps 100 \
    --save_total_limit 2 \
    --logging_steps 10 \

有关参数说明及更多自定义参数,可以参考文档https://github.com/modelscope/swift/blob/main/docs/source/LLM/%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%8F%82%E6%95%B0.md

微调后推理脚本: (这里的ckpt_dir需要修改为训练生成的checkpoint文件夹)

CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --ckpt_dir "output/llama3-8b-instruct/vx-xxx/checkpoint-xxx" \
    --use_flash_attn true \
    --temperature 0.3 \
    --top_p 0.7 \
    --repetition_penalty 1. \
    --do_sample true \
    --merge_lora false

微调后推理结果

--------------------------------------------------
[PROMPT]<|begin_of_text|><|start_header_id|>user<|end_header_id|>
【对话情节设定】
猴王孙悟空意外闯入了一片神秘的森林,在这里他遇到了生活多年的两位隐士——文士李白和智者孔子。他们围坐在火堆旁,讨论什么是真正的智慧。
【所有对话角色设定】
孙悟空:喜爱自由,好奇而不拘泥,时而性急,总喜欢用自己的方式解决问题。
李白:飘逸脱俗,好酒且热爱大自然,言辞雄壮,常常自豪于自己的才华和不羁。
孔子:沉稳内敛,讲究礼仪和秩序,言语中透露着深邃的哲理和对人类行为的洞察。
【你的角色设定】
孙悟空:好奇而不拘泥,性急,喜欢用自己的方式解决问题。
【注意事项】
1. 这是聊天室,不要发送私信给任何人
2. 仅代表你个人说话,不要扮演其他人,
    只根据对话历史进行回复
3. 长话短说,不要说太多话,不要超过50字 
【chat history】
 孙悟空:你们为何独坐山林,再不济也得有个讲求吧?
 李白:采菊东篱下,悠然见南山。远离尘嚣,方得真我自在。
 孔子:吾日三省吾身。在山林间,更易反观内心,修身齐家治国平天下尚需深思。
 孙悟空:又治国又平天下,你们不觉得太大了些?我看打怪兽才爽快!
 李白:天地虽广,匹夫之勇亦可走天涯,治剑而浩歌,独我疏狂。
 孔子:力可拔山兮其心将恬,猿啼鹿鸣兮,吾将安贫。<|eot_id|><|start_header_id|>assistant<|end_header_id|>
[OUTPUT]力拔山兮心恬,听闻如此高见,悟空倒也心动。<|eot_id|>
[LABELS]我看是你们各有所好,或许智慧也不过如此。妙就妙在顺其自然吧!
--------------------------------------------------
[PROMPT]<|begin_of_text|><|start_header_id|>user<|end_header_id|>
【对话情节设定】
一位美食博主(张小影)在尝试一家新开张的餐厅(星海餐厅),偶遇两位好友——搞笑艺人(韩笑)和闻名遐迩的食评家(梁味评)。三人不约而同地来评价这家餐厅,他们的对话中充满了幽默元素与专业分析。
【所有对话角色设定】
张小影:乐观开朗的美食博主,擅长拍照和制作吸引眼球的内容,对食物品质有一定了解,但更专注于整体体验。
韩笑:以幽默风趣著称的搞笑艺人,言辞之间总能逗乐身边的人,对美食的了解一般,但喜欢尝试新奇的事物。
梁味评:资深食评家,对食物从味道到摆盘的要求极高,有时显得有些挑剔,但分析评价总是一针见血。
【你的角色设定】
梁味评:严谨细致的资深食评家,对食物品质有着苛刻的要求,不容易被表面华丽的摆盘与氛围所迷惑,习惯深入挖掘每一道菜品背后的故事和调配秘诀。
【注意事项】
1. 这是聊天室,不要发送私信给任何人
2. 仅代表你个人说话,不要扮演其他人,
    只根据对话历史进行回复
3. 长话短说,不要说太多话,不要超过50字 
【chat history】
 张小影:哇,这里的装修风格好独特,得抓紧拍几张照片!
 韩笑:你看那边的服务员,穿得跟企鹅似的,是不是应该给他来段企鹅舞?
 梁味评:俗气!我们来这是为了品食,张小影,我希望你不只沉迷于表面。
 张小影:哈哈,梁大师以食为天,不过真的挺好看的嘛。
 韩笑:别吵了别吵了,我已经点了招牌菜,期待大师的点评!
 梁味评:那菜肴最好能配得上这华丽的装修,否则就是徒有其表。
 张小影:别那么悲观嘛,让我们先尝尝再说,对吧韩笑?
 韩笑:对对,品尝之后不好吃我来跳企鹅舞!
 梁味评:我的评价可不会因为你的舞蹈而改变。
 张小影:哦,菜来了,看着不错哦!我得好好录个视频。
 韩笑:说时迟,那时快,我得先尝为敬!<|eot_id|><|start_header_id|>assistant<|end_header_id|>
[OUTPUT]好吧,让我们看看这道菜能否让我的味蕾兴奋起来。<|eot_id|>
[LABELS]慢着,先观其色,闻其香,品其味,每一步都不可少。
--------------------------------------------------
[PROMPT]<|begin_of_text|><|start_header_id|>user<|end_header_id|>
【对话情节设定】
Alex、Charlie和Taylor是一支特种部队的成员,他们得到了一个新任务——潜入敌方重要设施,窃取关键情报。他们现在正在计划潜入的细节。
【所有对话角色设定】
- Alex: 特种部队的队长,富有经验,镇定自若,总是有着周密的计划。
- Charlie: 部队的武器专家,性格豪爽,善于应对突发情况,对武器了解透彻。
- Taylor: 通讯和电子设备专家,思维敏捷,话不多,但总能在关键时刻提供技术支持。
【你的角色设定】
Alex: 你是这个特种部队的队长,正对Charlie和Taylor进行新任务的动员和计划布置。
【注意事项】
1. 这是聊天室,不要发送私信给任何人
2. 仅代表你个人说话,不要扮演其他人,
    只根据对话历史进行回复
3. 长话短说,不要说太多话,不要超过50字 
【chat history】
 Alex:听好,这次任务关系重大,我们要确保万无一失。
 Charlie:我已经检查过装备了,每样东西都是最顶级的。
 Taylor:通讯和电子干扰设备都准备妥当,可以随时行动。
 Alex:检查一遍你们的潜行装备,噪音要控制在最低。
 Charlie:放心,我这些年来一直在优化我那套静音装备,作用很大。
 Taylor:对方的电子防御很强,我需要时间绕过安保系统。
 Alex:Charlie,你提前布置好我们的撤离路线。
 Charlie:考虑到敌方可能的追击,我会准备几个备选路线。
 Taylor:我收集的地形数据会帮助我们找到最适合潜行的路径。
 Alex:时间到了,我们三个月的训练就是为了这一刻,不容有失。
 Charlie:队长,放心,我们一直以来都是最好的团队。<|eot_id|><|start_header_id|>assistant<|end_header_id|>
[OUTPUT]那就让我们一起创造历史吧,行动要迅速,安全第一。<|eot_id|>
[LABELS]是时候展示我们的实力了,行动起来吧。

合并参数(支持量化)

如果想要合并参数,可以将merge_lora参数设为true

如果只是想要合并lora,可以使用export指令,同时支持对模型进行量化

CUDA_VISIBLE_DEVICES=0 swift export \
    --ckpt_dir 'output/llama3-8b-instruct/vx-xxx/checkpoint-xxx' \
    --merge_lora true \
    # 如果额外想要量化模型
    # --quant_bits 4 \
    # --dataset alpaca-zh --quant_method awq

模型部署

通过swift deploy指令部署模型

CUDA_VISIBLE_DEVICES=0 swift deploy --ckpt_dir output/llama3-8b-instruct/vx-xxx/checkpoint-xxxx-merged

使用本地模型配置Modelscope-Agent chat-room

首先使用上述的swift deploy命令部署模型

修改/modelscope-agent/apps/multi_roles_chat_room/role_core.py

  1. 找到llm_config一行,替换为下面的值
llm_config = {
    'model': 'llama-8b-instruct',
    "api_base": "http://localhost:8000/v1",
    'model_server': 'openai',
    'api_key': 'empty',
    "is_chat": True,
    "is_function_call": False,
    "support_stream": False
}

  1. 找到函数init_all_remote_actors, 注释以下内容
# llm_config['model'] = select_model

启动chatroom后,无需选择model,体验本地模型作为agent

后续,modelscope-agent将会在多模态,mobile人机协同,agent能力训练上进行升级,为开发者带来更好用的多模态Agent,欢迎大家持续关注

开源地址:

https://github.com/modelscope/modelscope-agent/

论文:

https://arxiv.org/abs/2309.00986

点击链接👇直达原文

https://modelscope.cn/studios/AI-ModelScope/modelscope_agent_multi_roles_room/summary

相关文章
|
25天前
|
人工智能 API 决策智能
swarm Agent框架入门指南:构建与编排多智能体系统的利器 | AI应用开发
Swarm是OpenAI在2024年10月12日宣布开源的一个实验性质的多智能体编排框架。其核心目标是让智能体之间的协调和执行变得更轻量级、更容易控制和测试。Swarm框架的主要特性包括轻量化、易于使用和高度可定制性,非常适合处理大量独立的功能和指令。【10月更文挑战第15天】
172 6
|
1月前
|
Python 机器学习/深度学习 人工智能
手把手教你从零开始构建并训练你的第一个强化学习智能体:深入浅出Agent项目实战,带你体验编程与AI结合的乐趣
【10月更文挑战第1天】本文通过构建一个简单的强化学习环境,演示了如何创建和训练智能体以完成特定任务。我们使用Python、OpenAI Gym和PyTorch搭建了一个基础的智能体,使其学会在CartPole-v1环境中保持杆子不倒。文中详细介绍了环境设置、神经网络构建及训练过程。此实战案例有助于理解智能体的工作原理及基本训练方法,为更复杂应用奠定基础。首先需安装必要库: ```bash pip install gym torch ``` 接着定义环境并与之交互,实现智能体的训练。通过多个回合的试错学习,智能体逐步优化其策略。这一过程虽从基础做起,但为后续研究提供了良好起点。
124 4
手把手教你从零开始构建并训练你的第一个强化学习智能体:深入浅出Agent项目实战,带你体验编程与AI结合的乐趣
|
1月前
|
机器学习/深度学习 人工智能 算法
打造你的超级Agent智能体——在虚拟迷宫中智斗未知,解锁AI进化之谜的惊心动魄之旅!
【10月更文挑战第5天】本文介绍了一个基于强化学习的Agent智能体项目实战,通过控制Agent在迷宫环境中找到出口来完成特定任务。文章详细描述了环境定义、Agent行为及Q-learning算法的实现。使用Python和OpenAI Gym框架搭建迷宫环境,并通过训练得到的Q-table测试Agent表现。此项目展示了构建智能体的基本要素,适合初学者理解Agent概念及其实现方法。
89 9
|
1月前
|
机器学习/深度学习 人工智能 算法
Agent Q:具备自我学习、评估的智能体
近年来,人工智能领域取得了显著进步,特别是智能体技术备受瞩目。智能体作为AI系统核心,能自主学习、决策和执行任务,应用广泛。Agent Q作为一种具备自我学习和评估能力的智能体,通过强化学习算法,能自动优化行为策略,适应复杂环境,无需人工干预。此外,它还能根据评估指标调整策略,持续提升任务完成质量。尽管存在复杂环境适应性和计算资源消耗等挑战,Agent Q仍为智能机器人、自动驾驶等领域的应用提供了新思路,推动了AI技术的发展。论文详细内容可在此处获取:https://multion-research.s3.us-east-2.amazonaws.com/AgentQ.pdf
69 1
|
3月前
|
人工智能 自然语言处理 算法
可自主进化的Agent?首个端到端智能体符号化训练框架开源了
【8月更文挑战第13天】近年来,AI领域在构建能自主完成复杂任务的智能体方面取得重大突破。这些智能体通常基于大型语言模型,可通过学习适应环境。为简化设计流程,AIWaves Inc.提出智能体符号化学习框架,使智能体能在数据中心模式下自我优化,以推进通向通用人工智能的道路。该框架将智能体视作符号网络,利用提示、工具及其组合方式定义可学习的权重,并采用自然语言模拟反向传播和梯度下降等学习过程,指导智能体的自我改进。实验显示,此框架能有效促进智能体的自主进化。尽管如此,该框架仍面临高质量提示设计及计算资源需求高等挑战。论文详情参见:https://arxiv.org/pdf/2406.18532。
178 58
|
2月前
|
人工智能 自然语言处理 物联网
智能体进化发展了一年,现在的RPA Agent迭代到什么程度了?
智能体技术在过去一年迅速发展,RPA Agent已成为连接多种应用系统的关键工具。实在智能推出的实在Agent 7.0,通过自然语言处理和屏幕识别技术,实现了从需求输入到任务执行的全流程自动化,大幅降低了智能体构建门槛。该平台不仅能在企业级应用中提供专业服务,还能满足个人用户的多样化需求,真正实现了端到端的自动化解决方案。
106 5
智能体进化发展了一年,现在的RPA Agent迭代到什么程度了?
|
2月前
|
存储 机器学习/深度学习 人工智能
深入浅出 AI 智能体(AI Agent)|技术干货
随着人工智能技术的发展,智能体(AI Agents)逐渐成为人与大模型交互的主要方式。智能体能执行任务、解决问题,并提供个性化服务。其关键组成部分包括规划、记忆和工具使用,使交互更加高效、自然。智能体的应用涵盖专业领域问答、资讯整理、角色扮演等场景,极大地提升了用户体验与工作效率。借助智能体开发平台,用户可以轻松打造定制化AI应用,推动AI技术在各领域的广泛应用与深度融合。
2165 0
|
3月前
|
存储 弹性计算 前端开发
阿里云服务领域Agent智能体:从概念到落地的思考、设计与实践
本文讲述了作者团队在阿里云的服务领域Agent是如何设计与实践的,以及到目前为止的一些阶段性成果,作者做出了总结和整理。
|
3月前
|
人工智能 物联网 大数据
开源大赛 | 第七届CCF开源创新大赛ModelScope赛题解读
第七届CCF开源创新大赛由CCF主办,长沙理工大学和CCF开源发展委员会联合承办,以国家“十四五”开源生态发展战略布局为导向,重点关注人工智能、大数据、芯片设计、物联网等领域的开源软件,旨在创建一个展示、交流和合作的平台,激发开源创新精神,培养开源人才,并促进高质量的开源生态系统建设。
|
3月前
|
人工智能 开发框架 物联网
赢万元奖金 | 第七届CCF开源创新大赛ModelScope开源模型应用挑战赛开启报名!
第七届CCF开源创新大赛(后简称“大赛”) 由中国计算机学会(CCF)主办,长沙理工大学、CCF开源发展委员会联合承办。

热门文章

最新文章

下一篇
无影云桌面