IFX-sandbox / tools /vector.py
aliss77777's picture
Upload folder using huggingface_hub
06cb2a3 verified
import sys
import os
# Add parent directory to path to access gradio modules
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from gradio_llm import llm, embeddings
from gradio_graph import graph
# Create the Neo4jVector
from langchain_neo4j import Neo4jVector
neo4jvector = Neo4jVector.from_existing_index(
embeddings, # (1)
graph=graph, # (2)
index_name="gameSummary", # (3)
node_label="Game", # (4)
text_node_property="summary", # (5)
embedding_node_property="embedding", # (6)
retrieval_query="""
RETURN
node.summary AS text,
score,
{
id: node.id,
date: node.date,
result: node.result,
location: node.location,
home_team: node.home_team,
away_team: node.away_team,
game_id: node.game_id
} AS metadata
"""
)
# Create the retriever
retriever = neo4jvector.as_retriever()
# Create the prompt
from langchain_core.prompts import ChatPromptTemplate
instructions = (
"Use the given context to answer the question."
"If you don't know the answer, say you don't know."
"Context: {context}"
)
prompt = ChatPromptTemplate.from_messages(
[
("system", instructions),
("human", "{input}"),
]
)
# Create the chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain.chains import create_retrieval_chain
question_answer_chain = create_stuff_documents_chain(llm, prompt)
game_summary_retriever = create_retrieval_chain(
retriever,
question_answer_chain
)
# Create a function to call the chain
def get_game_summary(input_text):
"""Function to call the chain with error handling"""
try:
return game_summary_retriever.invoke({"input": input_text})
except Exception as e:
print(f"Error in get_game_summary: {str(e)}")
return {"output": "I apologize, but I encountered an error while searching for game summaries. Could you please rephrase your question?"}