AgentLuo旨在设计并实现一个具备角色扮演能力的虚拟歌手洛天依(Luo Tianyi)智能对话Agent。该Agent整合了Live2D模型功能和GPT-SoVITS提供的语音合成(TTS)功能,并实现了基于嵌入(Embedding)的向量记忆检索和洛天依歌曲的知识库。
本项目旨在为用户提供沉浸式的洛天依互动体验。本项目包含三个部分:
- server:服务端,负责处理用户请求,管理对话状态,调用LLM生成回复,调用TTS生成语音,以及管理知识库和记忆。
- client:PC客户端,提供用户界面,展示Live2D模型,播放语音,并与服务端进行通信。
- app:实际上是安卓客户端,提供和PC客户端类似的功能,但界面和交互方式适配移动设备。
- 角色扮演:基于洛天依的官方设定和现有作品,塑造符合其性格和背景的对话风格。
- 多模态交互:集成Live2D模型,实现动态表情和口型同步。
- 语音合成:利用GPT-SoVITS技术,实现自然流畅的语音输出。
- 歌曲演唱:支持少量洛天依歌曲的演唱功能。
- 图片识别:通过集成图像识别技术,能够识别用户上传的图片内容,并进行相关对话。
- 无限上下文管理:支持长时间对话的上下文记忆,提升交互连贯性。
- 知识库集成:结合向量数据库和图数据库,实现基于知识的智能回答,使得天依能够记住用户信息和偏好,并且对圈子内的知识有较好的理解。
- 可拓展性:模块化设计,原则上通过替换资源文件可以将该项目用于其他虚拟角色的构建。
注意,服务端的配置难度要远高于客户端。下面简要介绍服务端的技术栈:
- 编程语言:Python 3.10
- Web框架:FastAPI
- 数据库:sqlite(使用 SQLAlchemy 进行 ORM 操作)
- 缓存:Redis
- 向量数据库:ChromaDB
- TTS合成:GPT-SoVITS
- 异步任务:使用 asyncio 和 FastAPI 的 BackgroundTasks 实现异步
- 公网访问:使用 sakurafrpp 实现内网穿透,支持公网访问
在Releases页面下载最新版本的安装包,解压后运行Chat with Luotianyi.exe。
第一次运行需要向服务器注册,注册时填写账号、密码、邀请码即可。邀请码需要通过QQ与作者联系获取。
注册成功之后即可登录。勾选自动登录后,下一次运行将直接进入主界面。
- 克隆仓库:
git clone https://github.com/SheepLiu712/Agent-Luotianyi- 进入项目目录并运行setup.bat,按照提示创建并激活conda环境,安装依赖。
- 运行
main.py启动客户端。
在Releases页面下载最新版本的apk文件,安装之。由于现在这个版本没有上架应用商店(没有任何鉴权),所以需要允许安装未知来源的应用。
第一次运行需要向服务器注册,注册时填写账号、密码、邀请码即可。邀请码需要通过QQ与作者联系获取。
注册成功之后即可登录。勾选自动登录后,下一次运行将直接进入主界面。
- 克隆仓库:
git clone https://github.com/SheepLiu712/Agent-Luotianyi后面我也不会了,开摆。
- 内存:至少 4GB RAM
- 存储:至少 7GB 可用空间
- 网络连接:需要访问外部API服务
- 运算能力:最消耗算力的部分是GPT-SoVITS的语音合成模块,其余均使用外部API,请访问GPT-SoVITS的官方仓库了解配置要求。
-
克隆项目仓库:
git clone https://github.com/SheepLiu712/Agent-LuoTianyi-server.git cd Agent-LuoTianyi-server -
确保conda已安装,随后运行安装脚本(在命令行中运行,或者双击运行快速启动脚本)
setup.bat
注意,该脚本运行过程需要进行两次输入。第一次输入是确定conda环境的名称,第二次输入是确认是否安装GPU版本的pytorch(如果你的电脑没有NVIDIA显卡,请选择否)
-
设置环境变量:
- 根据config中所需要的api_key,配置对应的api密钥为环境变量。
- 在Windows上,可以通过“系统属性”->“高级”->“环境变量”进行设置,或者在命令行中运行:
setx SILICONFLOW_API_KEY "your_api_key_here" - 所配置的环境变量需要和config.json中的占位符一致,并不局限于硅基流动的api_key,如果你使用了其他需要密钥的服务(如OpenAI、Azure等),也需要按照同样的方式配置环境变量。
-
下载资源:
- 联系开发者获取资源文件和数据文件。
- 将res文件解压到根目录
- 将data文件解压到根目录
- 运行redis服务(如果你已经安装了redis,并且将其添加到了环境变量中,可以直接在命令行中运行
redis-server来启动服务) - 在命令行中启动对应conda环境,运行以下命令启动服务:
python server_main.py
- 打开sakurafrp的隧道接入公网(如果需要公网访问的话)
本项目基于 MIT 许可证 开源。
本项目的知识库内容来源于 VCPedia,遵循其版权声明和使用条款。该站全部内容禁止商业使用。文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0中国大陆 (CC BY-NC-SA 3.0 CN) 许可协议下提供。其余开发者确保在使用和分发时遵守相关规定。
根据规定,本项目需要标明是否(对原始作品)作了修改。本项目在使用VCPedia内容时,大部分为直接引用,对歌曲的爬取使用了自动化脚本,并使用LLM进行了结构化,因此绝大部分均为原文引用。在此基础上
关于AI生成内容。我们认识到VC社区对AI生成内容的关注和担忧。为了透明起见,我们在此声明:
- 本项目大量使用了LLM,场景包括:
- 对爬取的文本内容进行结构化处理
- 生成对话回复
- 生成语音合成的情感标签
- 生成Live2D模型的表情标签
- 压缩对话上下文
- 生成记忆检索和写入的指令
- 本项目使用的语音合成技术为GPT-SoVITS,该项目基于AI技术,我们对公开的语音合成模型进行了微调;此外,生成的语音内容为AI生成。
- 在美术资源上,本项目使用了火爆鸡王发布的洛天依Live2D模型,该模型为非商业用途免费使用,感谢火爆鸡王的分享。在其他的美术资源(目前仅包括背景图和Logo)上,我们使用了网络上公开的免费资源,并且保证这些资源不是由AI生成的。
- 本项目在编写过程中使用了AI辅助编程工具(如GitHub Copilot),以提高开发效率。但核心逻辑和设计均由开发者完成。
- 我们力求确保AI生成内容的准确性和合规性,但由于技术限制,可能会存在错误或偏差。如果发现AI生成内容存在明显错误或不当之处,欢迎反馈。
- 感谢洛天依官方提供的角色设定
- 感谢VCPedia项目组提供的丰富知识库
- 感谢GPT-SoVITS项目提供的开源语音合成技术
- 感谢火爆鸡王发布的Live2D模型
- 感谢硅基流动平台提供的API服务
- 感谢Gemini3,这是我大爹,我的代码基本都是它写的。
- 感谢所有贡献者的努力和支持!