Neo4j的各项功能跑通了,应该将其封装进Agent做为应用。LangGraph中有专门的ReAct Agent,可将其Neo4j做为一个工具导入,就是一个好用的Agent啰!
Agent(由AIJoe生成)
from dotenv import dotenv_values
from langchain_openai import ChatOpenAI
from langchain_neo4j import Neo4jGraph
from langchain_neo4j import GraphCypherQAChain
from langchain_core.tools import tool
from pydantic import BaseModel, Field
import json
from langgraph.prebuilt import create_react_agent
env_vars = dotenv_values('.env')
OPENAI_KEY = env_vars['OPENAI_API_KEY']
OPENAI_BASE_URL = env_vars['OPENAI_API_BASE']
# 创建图数据库示例
graph = Neo4jGraph(url='neo4j+s://a2f9xcxx.databases.neo4j.io',
username="a2f9xxxx",
password="gh7EJn9Ik1xxxxx.xx",
database="a2f9xxxx"
)
graph_llm = ChatOpenAI(temperature=0, model_name="gpt-5.4-mini" ,api_key=OPENAI_KEY,base_url=OPENAI_BASE_URL)
class DiseaseQuery(BaseModel):
query: str = Field(description="Questions for disease queries")
@tool(args_schema=DiseaseQuery)
def get_disease_info(query):
"""
get disease information, built on a graph-based knowledge base, excels at answering broad and comprehensive questions.
"""
cypher_chain = GraphCypherQAChain.from_llm(
graph=graph,
cypher_llm=graph_llm,
qa_llm=graph_llm,
validate_cypher=True,
verbose=True,
allow_dangerous_requests=True
)
response = cypher_chain.invoke({"query": query})
print(362, response["result"])
data = response["result"]
return json.dumps(data)
tools = [get_disease_info]
agentGraph = create_react_agent(graph_llm, tools=tools)
finan_response = agentGraph.invoke({"messages":["苯中毒要如何防治"]})
print(668, finan_response["messages"][-1].content)
逻辑还是比较简洁直接,将Neo4j封装成ReAct Agent的一个工具,直接跑就可以啰!