ssreeramj's picture
removed login password
08f9c4b unverified
import os
from dotenv import load_dotenv
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.chains.question_answering import load_qa_chain
import gradio as gr
import time
load_dotenv() # take environment variables from .env.
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
# load the trained model
embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)
docsearch = FAISS.load_local("base-20230418_1930-index", embeddings)
llm = ChatOpenAI(openai_api_key=OPENAI_API_KEY, temperature=0.2, max_tokens=2048)
chain = load_qa_chain(llm, chain_type="map_rerank", verbose=False)
# Chatbot UI
with gr.Blocks() as demo:
gr.Markdown("## Tiger Analytics Town Hall Q1 2023!!")
chatbot = gr.Chatbot(label="Tiger Bot").style(height=400)
with gr.Row():
with gr.Column(scale=0.90):
msg = gr.Textbox(
show_label=False,
placeholder="What do you want to know about the town hall?",
).style(container=False)
with gr.Column(scale=0.10, min_width=0):
btn = gr.Button("Send")
clear = gr.Button("Clear")
def user(user_message, history):
return "", history + [[user_message, None]]
def bot(history):
# get user query
query = history[-1][0]
# get relevent documents through similarity search
relevent_docs = docsearch.similarity_search(query=query, k=4)
# pass the relevant docs to the chat model to generate the final answer.
bot_message = chain(
{"input_documents": relevent_docs, "question": query},
return_only_outputs=True,
)["output_text"].strip()
history[-1][1] = bot_message
time.sleep(1)
return history
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
bot, chatbot, chatbot
)
btn.click(user, [msg, chatbot], [msg, chatbot], queue=False).then(
bot, chatbot, chatbot
)
clear.click(lambda: None, None, chatbot, queue=False)
gr.Markdown("## Some Example Questions")
gr.Examples(
[
"What are some new companies that got involved with us?",
"What were the disadvantages of working remotely?",
],
[msg],
)
demo.launch()