LivCourse-聊天机器人是一个基于知识图谱(KG)和大型语言模型(LLM)融合的关于利物浦大学课程聊天机器人,它结合了 LLM 和 KG 的优势,既能回答通用问题,也能回答特定领域的问题,例如有关利物浦大学课程模块的信息。
💡下图显示了部署后的聊天机器人演示
- 基于记忆: 模型可以理解用户之前问题的上下文,从而产生有时序性的输出
- 特定领域: 该模型可回答有关利物浦大学课程信息的具体问题
- 可扩展性: 开发人员可为模型学习添加额外的个性化语料库
下图展示了模型的结构:
在第一个模块中,大语言模型将把用户的原始问题与历史对话结合起来,生成一个经过处理的问题。
在第二个模块中,经过处理的问题将被发送给代理,代理将产生一连串的思考,以确定该问题属于哪个类别,并将其交给相应类别的函数,以生成最终答案
- Generic_func: 用于回答通用知识领域的问题,如问候语
- Retrival_func: 用于回答额外语料库中的问题,例如本项目中的校园体育馆信息
- Graph_func: 用于回答有关图数据库 neo4j 中存储的节点和关系的问题,如利物浦大学课程、学位、模块等
- Search_func: 用于在其他功能无法生成正确答案时,通过搜索引擎(Google)回答问题
创建虚拟 conda 环境,激活并安装软件包:
conda create -n LivCourse python=3.9
conda activate LivCourse
pip install -r requirements.txt
在其 网站 申请 OpenAI API 密钥。
进入.env
文件,设置OPENAI_API_KEY
、NEO4J_URI
和NEO4J_PASSWORD
。
运行以下代码在 neo4j 数据库中生成知识图谱:
python gen_kg.py
访问 LangSmith 网站申请 API 密钥,并创建名为 LivCourse-ChatBot
的项目,配置连接 LangSmith 的环境。
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY="<your langchain smith api>"
export LANGCHAIN_PROJECT="LivCourse-ChatBot"
python app.py
文件结构如下:
.
├── LICENSE
├── README.md
├── __pycache__
│ ├── agent.cpython-39.pyc
│ ├── config.cpython-39.pyc
│ ├── prompt.cpython-39.pyc
│ ├── service.cpython-39.pyc
│ └── utils.cpython-39.pyc
├── agent.py
├── app.py
├── config.py
├── data
│ └── db
│ ├── chroma.sqlite3
│ └── f4e6c6f1-3933-4325-b4d3-51ea2dceec57
│ ├── data_level0.bin
│ ├── header.bin
│ ├── length.bin
│ └── link_lists.bin
├── data_process.py
├── dataset
│ └── dataset.json
├── gen_kg.py
├── img
│ ├── demo.png
│ ├── diagram.png
│ └── diagram.svg
├── inputs
│ └── gym.txt
├── prompt.py
├── requirements.txt
├── service.py
└── utils.py
本项目相关资源仅供学术研究使用,严禁用于商业用途。在使用涉及第三方代码的部分时,请严格遵守相应的开源协议。对于模型输出的任何内容,本项目不承担任何法律责任,也不承担因使用相关资源和输出结果而可能产生的任何损失。
如果您喜欢这个项目,请不要忘记给这个仓库打上星✨。