Demo / app.py
ajuneja23's picture
Update app.py
c8f860b verified
raw
history blame contribute delete
No virus
2.88 kB
from langchain_community.embeddings import GPT4AllEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain import PromptTemplate
from langchain_openai import OpenAI
from time import time
import pandas as pd
import numpy as np
import getpass
import re
import os
import gradio as gr
os.environ['OPENAI_API_KEY']
"""#### Load predefined chroma"""
persist_directory = 'chromadb'
embedding = OpenAIEmbeddings(model='text-embedding-3-large')
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding)
retriever = vectordb.as_retriever(search_type="similarity",search_kwargs={"k":50})
"""## MultiQueryRetriever
"""
from langchain.retrievers.multi_query import MultiQueryRetriever
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model_name="gpt-4-turbo",temperature=0)
retriever_from_llm = MultiQueryRetriever.from_llm(
retriever=vectordb.as_retriever(search_type="mmr",
search_kwargs={"k":50}),
llm=llm
)
import logging
logging.basicConfig()
logging.getLogger("langchain.retrievers.multi_query").setLevel(logging.INFO)
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
qa_prompt = PromptTemplate(
input_variables=['query','contexts'],
template = """
You are a recommendation system that analyze the user's interest and
generate an email subject and body for PETCO. If the
question cannot be answered using the information provided answer
with 'I don't know'.
Context: {context}
Question: {query},
""",
)
qa_chain = LLMChain(llm=llm, prompt=qa_prompt)
def call_rag(question):
docs = retriever_from_llm.get_relevant_documents(query=question)
out = qa_chain.invoke(
input={
"query": question,
"context": "\n---\n".join([d.page_content for d in docs])
}
)
return out["text"]
user_db={
os.environ["username"]:os.environ["password"],
}
interface = gr.Interface(
fn=call_rag,
inputs="text",
outputs="text",
title="PETCO Email Generator Using RAG",
description="""
Try input below example prompts in the model!
Example prompt:
\n
1. Send an email that conveys to consumers that they are able to get $2 off all online purchases above $10 on Valentines’ Day 2024. Please use the appropriate emojis for the holiday.
2. Generate a welcoming email for a new pet owner who just adopted a puppy, including a checklist of essential items they need to buy.
""",
)
if __name__=="__main__":
interface.launch(
auth=lambda u,p: user_db.get(u)==p,
auth_message="Welcome! Please enable third party cookies or you will not be able to login."
)