import gradio as gr from langchain_community.embeddings import HuggingFaceEmbeddings from langchain_openai import ChatOpenAI from langchain.chains import RetrievalQA from langchain.vectorstores import FAISS def recipe_generator(ingredients): """ This function takes a list of ingredients as input and returns a recipe using the LangChain library and OpenAI API. """ # Load the LangChain model and vector store embedd = HuggingFaceEmbeddings(model_name="intfloat/multilingual-e5-large") vector_store = FAISS.load_local("faiss_index", embedd,allow_dangerous_deserialization=True) # Create the LangChain chain llm = ChatOpenAI( openai_api_key="sk-proj-JjAAcDuAsxPkm3zg9Iz2T3BlbkFJ5txMWIx2TS6T24rPYhjN", model="gpt-3.5-turbo", temperature=0.3 ) qa_chain = RetrievalQA.from_chain_type( llm, retriever=vector_store.as_retriever(), return_source_documents=True ) # Generate the recipe question = f"Make a recipe using the following ingredients: {ingredients}" result = qa_chain({"query": question}) return result["result"] # Create the Gradio interface interface = gr.Interface( fn=recipe_generator, inputs=[ gr.Textbox( show_label=False, placeholder="Enter your ingredients separated by commas" ), ], outputs=[ "textbox", ], examples=[ ["chicken, rice, vegetables"], ["pasta, tomato sauce, cheese"], ], title="Recipe Generator", description="Enter a list of ingredients and I will generate a recipe for you." ) # Launch the Gradio app interface.launch()