Multi Agent Dialogue
我一直挺好奇的,如果让两个AI聊起天来,会是什么样。为了满足自己的好奇心,写了这个框架:Multi Agent Dialogue(https://github.com/SmileXie/multi_agent_dialogue)
这个框架基于大语言模型,快速配置两个相互对话AI Agent。打印并记录两个AI的对话文字。 两个对话的AI Agent可以完全按照用户的人物设定进行的对话。
比如:基于这个框架,你可以:
- 让秦始皇和康熙爷聊天
- 让测试工程师和程序员相互PK,得出最佳的程序代码
- 可以观察一对暗恋情侣如何通过对话升级感情……
原理说明
在框架中设置了三个AI:
- AI1和AI2从配置文件中获取角色定义,以配置文件要求的角色的视角展开对话。AI1和AI2都存有一定量的对话历史,以保证对话的前后一致性。
- END Porbability monitor AI用于监控AI1和AI2的对话,根据对话内容判断对话应该结束的概率。例如,当两个角色互相道别“再见”后,对话应该结束的概率就在90%以上。
程序根据END Porbability monitor AI计算出的对话结束概率,适时结束对话。
Quick Start
首先,你要申请一个兼容openai SDK的LLM API接口。例如:DeepSeek API Docs 或 大模型服务平台百炼。向LLM服务提供商申请API KEY并充值。
python3环境中安装openai SDK:
1 | pip3 install openai |
拷贝项目代码到本地:
1 | git clone https://github.com/SmileXie/multi_agent_dialogue.git |
在multi_agent_diaglue目录下新增配置文件config.json
:
1 | { |
配置文件的字段说明:
- api_key:你的LLM的API_KEY
- base_url:你的LLM的url(请查阅您的LLM API文档)
- model:你的LLM的模型名(请查阅您的LLM API文档)
- AI1_name:第一个AI Agent的名字
- AI2_name:第二个AI Agent的名字
- AI1_character:第一个AI Agent的人物设定
- AI2_character:第二个AI Agent的人物设定
- trigger_message:触发对话的第一句话,由AI2向AI1发起
- end_flag:当对话中出现end_flag时,即结束对话
- max_turns:最大对话轮次。即AI1+AI2总共的输出文字的次数限制
- record_file:对话记录的文件
- history_length:每次向LLM请求时携带的最大历史记录数
执行对话
1 | $ python3 main.py -f config.json |
我的好奇心实验
秦始皇与康熙皇帝
1 | 秦始皇: 朕的大秦帝国是不是已经延续了千秋万代啦?哈哈,你是哪位? |
一对相互暗恋的大学生
1 | 顾成: 小馨,又遇见你啦。 |
几个我玩过的配置
1 | { |
欢迎大家都去玩一玩,一起交流。