Spaces:
Runtime error
Runtime error
| import openai | |
| import random | |
| import time | |
| import gradio as gr | |
| import os | |
| from langchain.embeddings.openai import OpenAIEmbeddings | |
| from langchain.vectorstores import DeepLake | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain.chains import ConversationalRetrievalChain | |
| def set_api_key(key): | |
| os.environ["OPENAI_API_KEY"] = key | |
| return f"Key Successfully Set to: {key}" | |
| def get_api_key(): | |
| api_key = os.getenv("OPENAI_API_KEY") | |
| return api_key | |
| def respond(message, chat_history): | |
| # Get embeddings | |
| embeddings = OpenAIEmbeddings() | |
| #Connect to existing vectorstore | |
| db = DeepLake(dataset_path="./documentation_db", embedding_function=embeddings, read_only=True) | |
| #Set retriever settings | |
| retriever = db.as_retriever(search_kwargs={"distance_metric":'cos', | |
| "fetch_k":20, | |
| "maximal_marginal_relevance":True, | |
| "k":20}) | |
| # Create ChatOpenAI and ConversationalRetrievalChain | |
| model = ChatOpenAI(model='gpt-3.5-turbo') | |
| qa = ConversationalRetrievalChain.from_llm(model, retriever) | |
| chat_history=[] | |
| bot_message = qa({"question": message, "chat_history": chat_history}) | |
| chat_history.append((message, bot_message['answer'])) | |
| time.sleep(1) | |
| return "", chat_history | |
| with gr.Blocks() as demo: | |
| with gr.Tab("OpenAI API Key Submission"): | |
| api_input = gr.Textbox(label = "API Key", placeholder = "Please provide your OpenAI API key here") | |
| api_submission_conf = gr.Textbox(label = "Submission Confirmation") | |
| api_submit_button = gr.Button("Submit") | |
| with gr.Tab("Coding Assistant"): | |
| api_check_button = gr.Button("Get API Key") | |
| api_print = gr.Textbox(label = "OpenAI API Key - Please ensure the API Key is set correctly") | |
| chatbot = gr.Chatbot(label="ChatGPT Powered Coding Assistant") | |
| msg = gr.Textbox(label="User Prompt", placeholder="Your Query Here") | |
| clear = gr.Button("Clear") | |
| api_submit_button.click(set_api_key, inputs=api_input, outputs=api_submission_conf) | |
| api_check_button.click(get_api_key, outputs=api_print) | |
| msg.submit(respond, [msg, chatbot], [msg, chatbot]) | |
| clear.click(lambda: None, None, chatbot, queue=False) | |
| demo.launch() |