Spaces:
Runtime error
Runtime error
| import openai | |
| import transformers | |
| import gradio as gr | |
| # Set up the OpenAI API client | |
| openai.api_key = "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" | |
| # Define the chat function for OpenAI API | |
| def openai_chat(api_key, model, message): | |
| # Check if an API key has been provided | |
| if api_key is None: | |
| return "Please enter your OpenAI API key and try again." | |
| # Set up the OpenAI API request | |
| response = openai.Completion.create( | |
| engine=model, | |
| prompt=message, | |
| max_tokens=1024, | |
| n=1, | |
| stop=None, | |
| temperature=0.5, | |
| api_key=api_key, | |
| ) | |
| # Extract the bot's response from the API request | |
| bot_response = response.choices[0].text.strip() | |
| return bot_response | |
| # Define the chat function for Hugging Face API | |
| def hf_chat(model_name, message): | |
| # Load the model and tokenizer | |
| model = transformers.pipeline("text-generation", model=model_name) | |
| # Generate a response from the model | |
| bot_response = model(message, max_length=1024, do_sample=True, temperature=0.7)[0]["generated_text"] | |
| return bot_response | |
| # Define the Gradio interface for chatbot | |
| api_key_input = gr.inputs.Textbox(label="OpenAI API Key", default=None, block="sidebar") | |
| model_input = gr.inputs.Dropdown( | |
| label="Select OpenAI model", | |
| choices=["davinci", "curie", "babbage"], | |
| default="davinci", | |
| block="sidebar" | |
| ) | |
| hf_model_input = gr.inputs.Dropdown( | |
| label="Select Hugging Face model", | |
| choices=["microsoft/DialoGPT-large", "Salesforce/codegen-2B-multi", "microsoft/DialoGPT-small"], | |
| default="microsoft/DialoGPT-large", | |
| block="sidebar" | |
| ) | |
| mode_input = gr.inputs.Dropdown( | |
| label="Select chatbot mode", | |
| choices=["OpenAI", "Hugging Face"], | |
| default="OpenAI", | |
| block="sidebar" | |
| ) | |
| message_input = gr.inputs.Textbox(label="Enter your message here", block="input") | |
| output = gr.outputs.Textbox(label="Bot response", block="output") | |
| # Define the chat window | |
| chat_window = [] | |
| def chatbot(chat_window, message, mode, model, hf_model, api_key, send_button, clear_button): | |
| if clear_button: | |
| chat_window.clear() | |
| return "Chat history cleared." | |
| if send_button: | |
| if message: | |
| if mode == "Hugging Face": | |
| bot_response = hf_chat(hf_model, message) | |
| else: | |
| bot_response = openai_chat(api_key, model, message) | |
| chat_window.append(("User", message)) | |
| chat_window.append(("Bot", bot_response)) | |
| return "\n".join([f"{name}: {text}" for name, text in chat_window]) | |
| # Define the Gradio interface for chatbot | |
| send_button = gr.inputs.Button(label="Send") | |
| clear_button = gr.inputs.Button(label="Clear Chat History") | |
| chat_interface = gr.Interface( | |
| fn=chatbot, | |
| inputs=[ | |
| message_input, | |
| mode_input, | |
| model_input, | |
| hf_model_input, | |
| api_key_input, | |
| send_button, | |
| clear_button | |
| ], | |
| outputs=output, | |
| title="Chatbot", | |
| description="Enter your message below to chat with an AI", | |
| theme="compact", | |
| allow_flagging=False, | |
| allow_screenshot=False, | |
| allow_share=False, | |
| layout="vertical" | |
| ) | |
| # Launch the page | |
| chat_interface.launch() |