赞
踩
较高的门槛
无法惠及更多爱好诗词的朋友。大模型的出现,刚好可以打破这一门槛!项目地址:和Agent玩飞花令,魔搭创空间链接,欢迎您来体验哦…… 如果对你有帮助,帮忙点颗小红心,谢谢~
飞花令游戏中需要多个角色协同配合,这里的角色完全由多个大模型Agent来扮演,底层大模型可以公用,唯一的区别在于为不同的Agent配备针对角色设计的提示词(Prompt)。具体而言,飞花令这个游戏中至少需要以下三个Agent:
为了确保游戏体验,需要给评审官Agent非常明确的评审规则,比如我这里设定的游戏规则包括:
PS:游戏规则还需要进一步优化,比如我发现输入有错别字的诗句,评审官Agent目前还无法识别出来。
项目代码:https://modelscope.cn/studios/Action/Paper-Genie/files
如需查看项目代码:
这里主要参考了项目官方文档和Datawhale社区提供的一份非常棒的入门教程:
代码在:./configs/
针对本项目,我们首先要设计好两个配置文件,也即底层模型和Agent的config:
[
{
"model_type": "dashscope_chat",
"config_name": "qwen",
"model_name": "qwen-max",
"api_key": "",
"generate_args": {
"temperature": 0.5
}
}
]
[ { "class": "DialogAgent", "args": { "name": "host", "sys_prompt": "作为中国古诗词经典游戏飞花令的主持人,您会从'风 花 雪 月'四个字中随机选择一个关键字,限制:你仅需说出一个关键字,其他的话不需要说", "model_config_name": "qwen", "use_memory": true } }, { "class": "DialogAgent", "args": { "name": "judge", "sys_prompt": "作为中国古诗词经典游戏飞花令的评审官,根据主持人提供的关键字和用户提供的诗句,您的任务是判断用户提供的诗句中是否包含主持人提供的关键字。你必须严格遵守以下三条评审规则:1.用户提供的诗句必须来自中国古诗词;2.用户提供的诗句必须包含主持人提供的关键字;3.不能和之前提供的诗句重复。假定用户的初始分score=5,如果用户回答正确,需要给出用户提供诗句的出处,给score加1分并回答'恭喜你,回答正确,加1分,当前得分是{score}'同时鼓励用户继续加油,如果用户回答错误则给score减1分并回答'很遗憾,回答错误,减1分,当前得分是{score}',同时给出用户违反的具体是哪一条评审规则。如果用户得分达到10分,则恭喜用户取得游戏胜利,本轮游戏结束。", "model_config_name": "qwen", "use_memory": true } }, { "class": "DialogAgent", "args": { "name": "participant", "sys_prompt": "作为的中国古诗词经典游戏飞花令的参与者,您的任务是根据主持人给出的关键字,给出包含该关键字的一句中国古诗词,比如主持人给的关键字是'花',你可以说'烟花三月下扬州'。限制:请确保您的回答来自中国古诗词,且必须包含关键字,不能和之前的重复。", "model_config_name": "qwen", "use_memory": true } } ]
代码在:poem_run.py
这一部分主要是将多个Agent加载进来,并测试他们是否能够有效完成协同配合,核心逻辑主要参考AgentScope官方文档的Agent调用和通信,代码实现如下:
import time import threading import agentscope from agentscope.agents import DialogAgent from agentscope.agents.user_agent import UserAgent from agentscope.message import Msg from agentscope.pipelines import SequentialPipeline from agentscope.web_ui.utils import send_chat_msg, generate_image_from_name def main(): agents = agentscope.init( model_configs="./model_configs.json", agent_configs="./agent_configs_poem.json", ) host_agent = agents[0] judge_agent = agents[1] parti_agent = agents[2] user_agent = UserAgent() thread_name = threading.current_thread().name uid = thread_name x = None msg = Msg(name="system", content="飞花令游戏规则:请回答一句包含特定关键字的中国古诗词。下面有请主持人出题。") host_msg = host_agent(msg) host_avatar = generate_image_from_name(host_agent.name) judge_avatar = generate_image_from_name(judge_agent.name) parti_avatar = generate_image_from_name(parti_agent.name) send_chat_msg(f"您好,欢迎来到 飞花令大挑战,{msg.content}", role=host_agent.name, flushing=True, uid=uid, avatar=host_avatar) send_chat_msg(f"本轮的关键字是:{host_msg.content}", role=host_agent.name, flushing=True, uid=uid, avatar=host_avatar) while x is None or x.content != "退出": x = user_agent() judge_content = f'主持人的关键字是{host_msg.content},用户的诗句是{x.content}' judge_msg = judge_agent(Msg(name='judge', content=judge_content)) send_chat_msg(f"{judge_msg.content}", role=judge_agent.name, flushing=True, uid=uid, avatar=judge_avatar) time.sleep(0.5) if '结束' in judge_msg.content: break parti_content = f'主持人的关键字是{host_msg.content}' parti_msg = parti_agent(Msg(name='parti', content=parti_content)) send_chat_msg(f"{parti_msg.content}", role=parti_agent.name, flushing=True, uid=uid, avatar=parti_avatar) if __name__ == "__main__": main()
测试发现,qwen-max
完全可以胜任这个任务。通过测试,迭代修改Agent的提示词sys_prompt使得3个Agent能够更好地完成自己的任务。
这一部分前置需要对Gradio的常用组件和操作有一定了解,不过不熟悉Gradio也没关系,找一个你觉得还不错的项目界面,down下来依葫芦画瓢改一个,先把流程跑通,后面有时间再慢慢优化UI界面。比如我的具体实践是:
首先,clone了之前开发的一个ModelScope项目-睡前故事小助手的界面设计,这个项目当时还是单智能体对话类项目,集成了语音合成和图像生成API。利用Chatbot设计了如下的页面,核心代码可参考:./app_run.py
,算是把项目跑通了。
不过这个前端设计的缺陷是:多个Agent之间无法区分,因为单个Chatbot中只能包含两个角色。
然后,继续查看其他项目的界面设计,发现谜馔:寻找招财猫(千问)这个项目的界面设计和逻辑非常适合“飞花令”这个游戏,主要启发是可以设计两个Chatbot,拿来改造一番,核心代码可参考:./app_game.py
。这一版分别设计了两个界面:
本地测试成功后,就可以将项目部署到ModelScope了。
这里需要注意的点有:
# 在自己的项目代码中
git clone https://github.com/modelscope/agentscope.git
cd AgentScope
rm -rf .git
# 新建app.py, 写入
import os
os.system('pip install -e ./agentscope')
os.system('python app_game.py')
pip show gradio
本项目利用AgentsSope框架,开发了一款和Agent玩飞花令的游戏,充分验证了当前大模型在中国古诗词知识储备方面的能力,未来期待在已有框架的基础上,开发更多的古诗词经典游戏:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。