Spaces:
Runtime error
Runtime error
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 = os.environ['OPENAI_API_KEY'] | |
hf_api_key = os.environ['HF_API_KEY'] | |
host = os.environ['host'] | |
port = os.environ['port'] | |
database_name = os.environ['database_name'] | |
user = os.environ['user'] | |
passwd = os.environ['passwd'] | |
COLLECTION_NAME = os.environ['COLLECTION_NAME'] | |
memory_token_limit = os.environ['memory_token_limit'] | |
llm_name = os.environ['llm_name'] | |
bot_name = os.environ['bot_name'] | |
bot_desc = os.environ['bot_desc'] | |
embedding = OpenAIEmbeddings() | |
CONNECTION_STRING = PGVector.connection_string_from_db_params( | |
driver=os.environ.get("PGVECTOR_DRIVER", "psycopg2"), | |
host=host, | |
port=int(port), | |
database=database_name, | |
user=user, | |
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=int(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}\n\n{bot_desc}") | |
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() | |