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"Your API Key has been set to: {key}" | |
| def reset_api_key(): | |
| os.environ["OPENAI_API_KEY"] = "" | |
| return "Your API Key has been reset" | |
| 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":10, | |
| "maximal_marginal_relevance":True, | |
| "k":10}) | |
| # 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_key_status = gr.Textbox(label = "API Key Status", | |
| placeholder = "Your API Key has not be set yet. Please enter your key.", | |
| interactive = False) | |
| api_submit_button = gr.Button("Submit") | |
| api_reset_button = gr.Button("Clear API Key from session") | |
| 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_key_status) | |
| api_reset_button.click(reset_api_key, outputs=api_key_status) | |
| 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() |