项目介绍:llm-movieagent
llm-movieagent 是一个创新项目,旨在通过语义层利用 OpenAI 的函数调用与图形数据库(如 Neo4j)进行互动。语义层为智能体提供了一套强大的工具,使其能够根据用户的意图与图形数据库进行交互。
项目背景和愿景
该项目的核心是实现一个能够与图数据库交互的智能体。这种交互是通过语义层来实现的,语义层可以解读用户意图,并将其转化为数据库可以理解的操作。这种设计大大提高了智能体处理复杂用户请求的能力,使用户体验更加个性化和高效。
工具介绍
智能体使用了多种工具来高效地与 Neo4j 图数据库进行交互:
-
信息工具:
- 该工具负责检索关于电影或个人的数据,确保智能体获得最新且最相关的信息。
-
推荐工具:
- 根据用户的喜好和输入提供电影推荐,帮助用户发现更多感兴趣的影片。
-
记忆工具:
- 在知识图中存储用户的偏好信息,通过多次交互提供个性化的体验。
环境配置
开始使用项目之前,需要在 .env
文件中定义以下环境变量:
OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>
NEO4J_URI=<YOUR_NEO4J_URI>
NEO4J_USERNAME=<YOUR_NEO4J_USERNAME>
NEO4J_PASSWORD=<YOUR_NEO4J_PASSWORD>
Docker容器
项目中的服务均封装为 Docker 容器,具体包括:
-
Neo4j:
- 作为图数据库,用于存储演员、电影和评分等信息。
-
API:
- 使用 LangChain 的
neo4j-semantic-layer
模板来实现 OpenAI LLM 和函数调用功能。
- 使用 LangChain 的
-
UI:
- 提供简单的 Streamlit 聊天用户界面,通过
localhost:8501
访问。
- 提供简单的 Streamlit 聊天用户界面,通过
数据填充
如果希望用示例电影数据集填充数据库,可以运行 ingest.py
脚本。脚本将导入关于电影及用户评分的信息。推荐在 API Docker 容器中运行此脚本,具体步骤如下:
# 访问容器 Shell
docker exec -it <llm-movieagent-api的容器ID> bash
# 运行脚本
python ingest.py
此外,该脚本创建了两个全文索引,用于将用户输入的信息映射到数据库中。数据集基于 MovieLens 数据集,该数据集也在 Neo4j Sandbox 中作为“Recommendation”项目提供。
欢迎贡献
项目热烈欢迎各类贡献,期待与更多开发者合作。
总体来说,llm-movieagent 项目通过集成先进的技术和简明的界面设计,为用户提供了一种新颖而高效的电影推荐和信息检索体验。