Prathamesh1420 commited on
Commit
f6d5136
·
verified ·
1 Parent(s): 9f8d517

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -0
app.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import streamlit as st
3
+ from langchain_community.graphs import Neo4jGraph
4
+ from langchain_groq import ChatGroq
5
+ from langchain.chains import GraphCypherQAChain
6
+ from dotenv import load_dotenv
7
+
8
+ # Load environment variables
9
+ load_dotenv()
10
+ NEO4J_URI = os.getenv("NEO4J_URI")
11
+ NEO4J_USERNAME = os.getenv("NEO4J_USERNAME")
12
+ NEO4J_PASSWORD = os.getenv("NEO4J_PASSWORD")
13
+ GROQ_API_KEY = os.getenv("GROQ_API_KEY")
14
+
15
+ # Initialize Neo4j graph
16
+ graph = Neo4jGraph(url=NEO4J_URI, username=NEO4J_USERNAME, password=NEO4J_PASSWORD)
17
+
18
+ # Load movie dataset into Neo4j
19
+ moview_query = """
20
+ LOAD CSV WITH HEADERS FROM
21
+ 'https://raw.githubusercontent.com/tomasonjo/blog-datasets/main/movies/movies_small.csv' as row
22
+ MERGE(m:Movie{id:row.movieId})
23
+ SET m.released = date(row.released),
24
+ m.title = row.title,
25
+ m.imdbRating = toFloat(row.imdbRating)
26
+ FOREACH (director in split(row.director, '|') |
27
+ MERGE (p:Person {name:trim(director)})
28
+ MERGE (p)-[:DIRECTED]->(m))
29
+ FOREACH (actor in split(row.actors, '|') |
30
+ MERGE (p:Person {name:trim(actor)})
31
+ MERGE (p)-[:ACTED_IN]->(m))
32
+ FOREACH (genre in split(row.genres, '|') |
33
+ MERGE (g:Genre {name:trim(genre)})
34
+ MERGE (m)-[:IN_GENRE]->(g))
35
+ """
36
+ graph.query(moview_query)
37
+ graph.refresh_schema()
38
+
39
+ # Initialize LLM
40
+ llm = ChatGroq(groq_api_key=GROQ_API_KEY, model_name="Gemma2-9b-It")
41
+
42
+ # Create QA Chain
43
+ chain = GraphCypherQAChain.from_llm(graph=graph, llm=llm, verbose=True)
44
+
45
+ # Streamlit UI
46
+ st.title("Movie Director Finder")
47
+
48
+ query = st.text_input("Enter your query:", "Who was the director of the movie Casino")
49
+ if st.button("Find Director"):
50
+ response = chain.invoke({"query": query})
51
+ st.write(response)