huohguohbo's picture
Update app.py
0a278b8
raw
history blame
3.4 kB
import openai
import transformers
import gradio as gr
# Set up the OpenAI API client
openai.api_key = "YOUR_API_KEY"
# 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)
model_input = gr.inputs.Dropdown(
label="Select OpenAI model",
choices=["davinci", "curie", "babbage"],
default="davinci",
)
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",
)
mode_input = gr.inputs.Dropdown(
label="Select chatbot mode",
choices=["OpenAI", "Hugging Face"],
default="OpenAI",
)
message_input = gr.inputs.Textbox(label="Enter your message here")
output = gr.outputs.Textbox(label="Bot response")
# Define the chat window
chat_window = []
def chatbot(chat_window, message, mode, model, hf_model, api_key):
if message == "/clear":
chat_window.clear()
return "Chat history cleared."
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
chat_interface = gr.Interface(
fn=chatbot,
inputs=[message_input, mode_input, model_input, hf_model_input, api_key_input],
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,
)
# Add a clear button to the chat window
clear_button = gr.Interface(
fn=lambda: chat_window.clear(),
inputs=None,
outputs=gr.outputs.Textbox(label="Chat history cleared."),
title="Clear Chat History",
description="Click to clear the chat history.",
theme="compact",
allow_flagging=False,
allow_screenshot=False,
allow_share=False,
)
# Combine the chat interface and clear button into a single page
page = gr.Interface(
[chat_interface, clear_button],
title="Chatbot",
description="Enter your message below to chat with an AI",
theme="compact",
layout="horizontal",
)
# Launch the page
page.launch()