experian-bot / app.py
Larry Yin
Added secrets
db6f7db
raw
history blame
2.13 kB
import os
import openai
import gradio as gr
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores.pgvector import PGVector
from langchain.chat_models import ChatOpenAI
from langchain.chains import ConversationalRetrievalChain
from langchain.memory import ConversationTokenBufferMemory
openai.api_key = OPENAI_API_KEY
hf_api_key = HF_API_KEY
embedding = OpenAIEmbeddings()
CONNECTION_STRING = PGVector.connection_string_from_db_params(
driver=os.environ.get("PGVECTOR_DRIVER", "psycopg2"),
host=os.environ.get("PGVECTOR_HOST", host),
port=int(os.environ.get("PGVECTOR_PORT", port)),
database=os.environ.get("PGVECTOR_DATABASE", database_name),
user=os.environ.get("PGVECTOR_USER", user),
password=os.environ.get("PGVECTOR_PASSWORD", passwd),
)
vectordb = PGVector(embedding_function=embedding,
collection_name=COLLECTION_NAME,
connection_string=CONNECTION_STRING,
)
# llm_name = "gpt-3.5-turbo"
# llm_name = "gpt-3.5-turbo-16k"
# llm_name = "gpt-4-32k"
llm = ChatOpenAI(model_name=llm_name, temperature=0)
retriever=vectordb.as_retriever()
memory = ConversationTokenBufferMemory(
llm = llm,
max_token_limit=memory_token_limit,
memory_key="chat_history",
return_messages=True
)
qa = ConversationalRetrievalChain.from_llm(
llm,
retriever=retriever,
memory=memory,
verbose=False
)
with gr.Blocks() as demo:
gr.Markdown(f"# {bot_name}")
chatbot = gr.Chatbot()
msg = gr.Textbox(label="Type your message (Shift + Enter to submit)", lines=6)
submit = gr.Button("Submit")
clear = gr.Button("Clear")
def respond(message, chat_history):
result = qa({"question": message})
chat_history.append((message, result["answer"]))
return ("", chat_history)
msg.submit(respond, [msg, chatbot], [msg, chatbot], queue=False)
submit.click(respond, [msg, chatbot], [msg, chatbot], queue=False)
clear.click(lambda: None, None, chatbot, queue=False)
gr.close_all()
demo.queue()
demo.launch(share=False)
# gr.close_all()
# demo.close()
# demo.clear()