Updated app
Browse files
app.py
CHANGED
@@ -1,3 +1,5 @@
|
|
|
|
|
|
1 |
from datasets import load_dataset
|
2 |
from langchain.embeddings import CacheBackedEmbeddings
|
3 |
from langchain.storage import LocalFileStore
|
@@ -11,9 +13,13 @@ from langchain_community.vectorstores import FAISS
|
|
11 |
from langchain_openai import OpenAIEmbeddings
|
12 |
from langchain_openai import ChatOpenAI
|
13 |
|
14 |
-
|
15 |
-
|
16 |
-
|
|
|
|
|
|
|
|
|
17 |
|
18 |
loader = CSVLoader(file_path='imdb.csv')
|
19 |
data = loader.load()
|
@@ -24,8 +30,6 @@ text_splitter = RecursiveCharacterTextSplitter(
|
|
24 |
)
|
25 |
chunked_documents = text_splitter.split_documents(data)
|
26 |
|
27 |
-
import os
|
28 |
-
|
29 |
openai_api_key = os.getenv("openai_api_key")
|
30 |
embedding_model = OpenAIEmbeddings(model="text-embedding-3-small", openai_api_key=openai_api_key)
|
31 |
|
@@ -33,8 +37,12 @@ store = LocalFileStore("./cache/")
|
|
33 |
cached_embedder = CacheBackedEmbeddings.from_bytes_store(embedding_model, store, namespace=embedding_model.model)
|
34 |
|
35 |
vector_file = "local_vector"
|
36 |
-
|
37 |
-
|
|
|
|
|
|
|
|
|
38 |
|
39 |
prompt_template = ChatPromptTemplate.from_template(
|
40 |
"You are a movie recommendation system, for a given {query} find recommendations from {content}."
|
@@ -50,5 +58,19 @@ runnable_chain = (
|
|
50 |
| StrOutputParser()
|
51 |
)
|
52 |
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import chainlit as cl
|
3 |
from datasets import load_dataset
|
4 |
from langchain.embeddings import CacheBackedEmbeddings
|
5 |
from langchain.storage import LocalFileStore
|
|
|
13 |
from langchain_openai import OpenAIEmbeddings
|
14 |
from langchain_openai import ChatOpenAI
|
15 |
|
16 |
+
|
17 |
+
imdb_csv_file="./imdb.csv"
|
18 |
+
|
19 |
+
if not os.path.exists(imdb_csv_file):
|
20 |
+
dataset = load_dataset('ShubhamChoksi/IMDB_Movies')
|
21 |
+
dataset_dict = dataset
|
22 |
+
dataset_dict["train"].to_csv('imdb.csv')
|
23 |
|
24 |
loader = CSVLoader(file_path='imdb.csv')
|
25 |
data = loader.load()
|
|
|
30 |
)
|
31 |
chunked_documents = text_splitter.split_documents(data)
|
32 |
|
|
|
|
|
33 |
openai_api_key = os.getenv("openai_api_key")
|
34 |
embedding_model = OpenAIEmbeddings(model="text-embedding-3-small", openai_api_key=openai_api_key)
|
35 |
|
|
|
37 |
cached_embedder = CacheBackedEmbeddings.from_bytes_store(embedding_model, store, namespace=embedding_model.model)
|
38 |
|
39 |
vector_file = "local_vector"
|
40 |
+
|
41 |
+
if not os.path.exists(imdb_csv_file):
|
42 |
+
vector_store = FAISS.from_documents(chunked_documents, cached_embedder)
|
43 |
+
vector_store.save_local(vector_file)
|
44 |
+
else:
|
45 |
+
vector_store = FAISS.load_local(vector_file, cached_embedder)
|
46 |
|
47 |
prompt_template = ChatPromptTemplate.from_template(
|
48 |
"You are a movie recommendation system, for a given {query} find recommendations from {content}."
|
|
|
58 |
| StrOutputParser()
|
59 |
)
|
60 |
|
61 |
+
@cl.on_chat_start
|
62 |
+
async def on_chat_start():
|
63 |
+
await cl.Message(content="Hello, i am your movie recommender, how can i help you today?").send()
|
64 |
+
cl.user_session.set("chain", runnable_chain)
|
65 |
+
|
66 |
+
|
67 |
+
@cl.on_message
|
68 |
+
async def main(message):
|
69 |
+
chain = cl.user_session.get("chain")
|
70 |
+
cb = cl.AsyncLangchainCallbackHandler()
|
71 |
+
user_input = cl.Message(content="")
|
72 |
+
|
73 |
+
async for stream in chain.astream(user_input, cb):
|
74 |
+
await user_input.stream_token(stream)
|
75 |
+
|
76 |
+
await user_input.send()
|