Spaces:
Running
Running
import os | |
import gradio as gr | |
# import openai | |
from openai import OpenAI | |
from dotenv import load_dotenv | |
load_dotenv() | |
key = os.getenv('OPENAI_API_KEY') | |
uname = os.getenv('LOGNAME') | |
pwd = os.getenv('PASSWORD') | |
client = OpenAI(api_key = key) | |
def clear(): | |
return [None, [], None] | |
def chat(prompt, user_window, pwd_window, past, response): | |
if user_window==uname and pwd_window==pwd: | |
past.append({"role":"user", "content":prompt}) | |
completion = client.chat.completions.create(model="gpt-4o-mini", | |
messages=past) | |
reply = completion.choices[0].message.content | |
response += "\n\nYOU: " + prompt + "\nGPT: " + reply | |
past.append({"role":"assistant", "content": reply}) | |
return [past, response] | |
else: | |
return [[], "User name and/or password are incorrect"] | |
with gr.Blocks() as demo: | |
history = gr.State([]) | |
dialog = gr.State() | |
heading = gr.Label(value="GPT Chat", scale=2, color="Crimson" ) | |
user_window = gr.Textbox(label = "User Name") | |
pwd_window = gr.Textbox(label = "Password") | |
clear_button = gr.Button(value="Clear") | |
prompt_window = gr.Textbox(label = "Prompt") | |
submit_window = gr.Button(value="Submit") | |
output_window = gr.Textbox(label = "Dialog") | |
submit_window.click(chat, inputs=[prompt_window, user_window, pwd_window, history, output_window], | |
outputs=[history, output_window]) | |
clear_button.click(clear, inputs=[], outputs=[prompt_window, history, output_window]) | |
demo.launch() | |