Spaces:
Running
Running
File size: 2,481 Bytes
8f835ef 90f787c 8f835ef e2275e6 cacb7f3 47f7c8e 4056dee e2275e6 8f835ef cacb7f3 8f835ef 8b0630a 4056dee 6d50512 8b0630a 6d50512 d327699 8f835ef ec6ee59 2dbbcec 199da43 4335e3d 2dbbcec 4335e3d 2dbbcec cacb7f3 8f835ef 1df8064 8f835ef |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import time
import gradio as gr
import os
import asyncio
from pymongo import MongoClient
from langchain_community.vectorstores import MongoDBAtlasVectorSearch
from langchain_openai import OpenAIEmbeddings
from langchain_community.llms import OpenAI
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
# from langchain_community.prompts import PromptTemplate
# from langchain.chains import LLMChain
import json
## Connect to MongoDB Atlas local cluster
MONGODB_ATLAS_CLUSTER_URI = os.getenv('MONGODB_ATLAS_CLUSTER_URI')
client = MongoClient(MONGODB_ATLAS_CLUSTER_URI)
db_name = 'sample_mflix'
collection_name = 'embedded_movies'
collection = client[db_name][collection_name]
#try:
vector_store = MongoDBAtlasVectorSearch(embedding=OpenAIEmbeddings(), collection=collection, index_name='vector_index', text_key='plot', embedding_key='plot_embedding')
llm = ChatOpenAI()
prompt = ChatPromptTemplate.from_messages([
("system", "You are a movie recommendation engine please elaborate on movies."),
("user", "List of movies: {input}")
])
chain = prompt | llm
#except:
# If open ai key is wrong
# print ('Open AI key is wrong')
# vector_store = None
def get_movies(message, history):
# try:
movies = vector_store.similarity_search(message, 3)
retrun_text = ''
for movie in movies:
retrun_text = retrun_text + 'Title : ' + movie.metadata['title'] + '\n------------\n' + 'Plot: ' + movie.page_content + '\n\n'
print_llm_text = chain.invoke({"input": retrun_text})
for i in range(len(retrun_text['content'])):
time.sleep(0.05)
yield "Found: " + "\n\n" + retrun_text['content'][: i+1]
# except:
# yield "Please clone the repo and add your open ai key as well as your MongoDB Atlas UR in the Secret Section of you Space\n OPENAI_API_KEY (your Open AI key) and MONGODB_ATLAS_CLUSTER_URI (0.0.0.0/0 whitelisted instance with Vector index created) \n\n For more information : https://mongodb.com/products/platform/atlas-vector-search"
demo = gr.ChatInterface(get_movies, examples=["What movies are scary?", "Find me a comedy", "Movies for kids"], title="Movies Atlas Vector Search",description="This small chat uses a similarity search to find relevant movies, it uses an MongoDB Atlase Vector Search read more here: https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-tutorial",submit_btn="Search").queue()
if __name__ == "__main__":
demo.launch() |