wdsawdsawdadad's picture
Duplicate from huohguohbo/Chatbot_REQUIRES_OPENAI_KEY
3575e16
raw
history blame
3.17 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, 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()