File size: 1,295 Bytes
55577a4
 
 
 
 
 
 
 
2ed7dce
55577a4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import openai
import gradio as gr
import os

openai.api_key = os.environ['API_KEY']

def query_gpt(message, chat_history):
  chat_history.append({"role": "user", "content": message})
  out = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=chat_history)
  response = out["choices"][0]["message"]["content"]
  chat_history.append({"role": "assistant", "content": response})
  return response, chat_history

def chatbot_to_chat_history(chatbot):
  chat_history = []
  chat_history.append({"role": "system", "content": "You are a helpful assistant."})
  for message_pair in chatbot:
    chat_history.append({"role": "user", "content": message_pair[0]})
    chat_history.append({"role": "assistant", "content": message_pair[1]})
  return chat_history

with gr.Blocks() as chat:
    chatbot = gr.Chatbot()
    msg = gr.Textbox(label="Message")
    pwd = gr.Textbox(label="Password")
    clear = gr.ClearButton([msg, chatbot])

    def respond(message, pwd, chatbot):
        if pwd == os.environ['PASSWORD']:
          chat_history = chatbot_to_chat_history(chatbot)
          bot_message,_ = query_gpt(message, chat_history)
          chatbot.append((message, bot_message))
        return "", pwd, chatbot

    msg.submit(respond, [msg, pwd, chatbot], [msg, pwd, chatbot])

chat.launch()