|
import openai, random, time |
|
import gradio as gr |
|
|
|
openai.api_key = "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" |
|
|
|
with open('prompt.txt') as f: |
|
prompt = f.read() |
|
|
|
messages = [ |
|
{"role": "system", "content": prompt}, |
|
] |
|
|
|
with gr.Blocks() as demo: |
|
chatbot = gr.Chatbot() |
|
msg = gr.Textbox() |
|
clear = gr.Button("Clear") |
|
|
|
def user(user_message, history): |
|
return "", history + [[user_message, None]] |
|
|
|
def gpt_chatbot(input): |
|
if input: |
|
messages_with_formatting = [] |
|
|
|
for line in messages: |
|
if line['role'] == "user": |
|
messages_with_formatting.append({"role": "user", "content": "Them: " + line['content']}) |
|
if line['role'] == "assistant": |
|
messages_with_formatting.append({"role": "assistant", "content": "You: " + line['content']}) |
|
if line['role'] == "system": |
|
messages_with_formatting.append({"role": "system", "content": line['content']}) |
|
|
|
messages_with_formatting.append({"role": "user", "content": "Them: " + input}) |
|
|
|
chat = openai.ChatCompletion.create( |
|
model="gpt-3.5-turbo", messages=messages_with_formatting |
|
) |
|
reply = chat.choices[0].message.content |
|
|
|
if reply.startswith("You: "): |
|
reply = reply[4:].strip() |
|
|
|
return reply |
|
|
|
|
|
def bot(history): |
|
input = history[-1][0] |
|
messages.append({"role": "user", "content": input}) |
|
bot_message = gpt_chatbot(input) |
|
messages.append({"role": "assistant", "content": bot_message}) |
|
|
|
history[-1][1] = bot_message |
|
|
|
return history |
|
|
|
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then( |
|
bot, chatbot, chatbot |
|
) |
|
clear.click(lambda: None, None, chatbot, queue=False) |
|
|
|
demo.launch(share=True) |
|
|