Spaces:
Runtime error
Runtime error
| import os | |
| import sys | |
| import gradio as gr | |
| import torch | |
| from langchain import OpenAI | |
| from langchain.embeddings.huggingface import HuggingFaceEmbeddings | |
| from langchain.llms.base import LLM | |
| from llama_index import ( | |
| Document, | |
| GPTListIndex, | |
| GPTSimpleVectorIndex, | |
| LangchainEmbedding, | |
| LLMPredictor, | |
| PromptHelper, | |
| SimpleDirectoryReader, | |
| ) | |
| from transformers import pipeline | |
| hfemb = HuggingFaceEmbeddings() | |
| embed_model = LangchainEmbedding(hfemb) | |
| #OpenAI.api_key = "YOUR_API_KEY" | |
| def build_the_bot(input_text): | |
| # set maximum input | |
| max_input_size = 4096 | |
| # set number of output tokens | |
| num_outputs = 256 | |
| # set maximum chunk overlap | |
| max_chunk_overlap = 20 | |
| # set chunk size limit | |
| chunk_size_limit = 600 | |
| #OpenAI.api_key = api_key | |
| prompt_helper = PromptHelper( | |
| max_input_size, | |
| num_outputs, | |
| max_chunk_overlap, | |
| chunk_size_limit=chunk_size_limit, | |
| ) | |
| # define LLM | |
| llm_predictor = LLMPredictor( | |
| llm=OpenAI(temperature=1, model_name="gpt-3.5-turbo", max_tokens=num_outputs ) | |
| ) | |
| text_list = [input_text] | |
| documents = [Document(t) for t in text_list] | |
| global index | |
| index = GPTSimpleVectorIndex( | |
| documents, | |
| embed_model=embed_model, | |
| llm_predictor=llm_predictor, | |
| prompt_helper=prompt_helper, | |
| ) | |
| return "Index saved successfully!!!" | |
| def set_api_key(api_key): | |
| #OpenAI.api_key = api_key | |
| os.environ["OPENAI_API_KEY"] = api_key | |
| return 'key has been set' | |
| def chat(chat_history, user_input): | |
| bot_response = index.query(user_input) | |
| # print(bot_response) | |
| response = "" | |
| for letter in "".join( | |
| bot_response.response | |
| ): # [bot_response[i:i+1] for i in range(0, len(bot_response), 1)]: | |
| response += letter + "" | |
| yield chat_history + [(user_input, response)] | |
| with gr.Blocks() as demo: | |
| gr.Markdown("This application allows you to give GPT-3.5 (ChatGPT) as much context as you want. Just insert the text you want GPT to use in the context box and a llama index will be created wich allows the model to query your contextual information.") | |
| with gr.Tab("Input Context Information"): | |
| openai_api_key = gr.Textbox(label= 'OpenAIAPIKey: ', type= 'password' ) | |
| api_out = gr.Textbox(label='API key stauts ') | |
| api_button = gr.Button('set api key') | |
| api_button.click(set_api_key, openai_api_key, api_out) | |
| text_input = gr.Textbox(label = 'Input Context Documents') | |
| text_output = gr.Textbox(label = 'Depending on the length of your context information it may take a few minutes for the bot to build') | |
| text_button = gr.Button("Build the Bot!") | |
| text_button.click(build_the_bot, text_input, text_output) | |
| with gr.Tab("Bot With Context"): | |
| # inputbox = gr.Textbox("Input your text to build a Q&A Bot here....." | |
| chatbot = gr.Chatbot() | |
| message = gr.Textbox("What is the context document about?") | |
| message.submit(chat, [chatbot, message], chatbot) | |
| demo.queue().launch(debug=True) |