Spaces:
Running
Running
# Copyright 2023 by Jan Philip Wahle, https://jpwahle.com/ | |
# All rights reserved. | |
import os | |
import random | |
import time | |
import gradio as gr | |
import openai | |
openai.api_key = os.environ.get("OPENAI_API_KEY") | |
def create_prompt(sentence, paraphrase_type): | |
prompt = { | |
"messages": [ | |
{ | |
"role": "user", | |
"content": f"Given the following sentence, generate a paraphrase with the following types. Sentence: {sentence}. Paraphrase Types: {paraphrase_type}" | |
} | |
] | |
} | |
return prompt | |
with gr.Blocks() as demo: | |
description = gr.Markdown(""" | |
## Paraphrase Type Generator | |
This demo uses a fine-tuned ChatGPT-3.5 model to generate paraphrases given specific paraphrase types. | |
**How to use:** | |
1. Select one or many type of paraphrase from the dropdown menu. | |
2. Enter a sentence in the text box. | |
3. Click the "Submit" button or hit enter. | |
4. The application will generate a paraphrase of the input sentence based on the selected type. | |
""") | |
chatbot = gr.Chatbot() | |
types = gr.Dropdown( | |
["Morphology-based changes", "Lexico-syntactic based changes", "Lexicon-based changes", "Syntax-based changes", "Discourse-based changes"], | |
value="Syntax-based changes", | |
multiselect=True, | |
allow_custom_value=True, | |
) | |
msg = gr.Textbox() | |
submit = gr.Button("Submit") | |
clear = gr.Button("Clear") | |
def user(user_message, history): | |
return "", history + [[user_message, None]] | |
def generate_paraphrase(user_message, paraphrase_type, history): | |
history[-1][1] = "" | |
prompt = create_prompt(history[-1][0], paraphrase_type) | |
bot_message = openai.ChatCompletion.create( | |
model="ft:gpt-3.5-turbo-0613:personal::7xbU0xQ2", | |
messages=prompt["messages"], | |
) | |
history[-1][1] = "" | |
for character in bot_message.choices[0].message.content: | |
history[-1][1] += character | |
time.sleep(0.01) | |
yield history | |
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then( | |
generate_paraphrase, [msg, types, chatbot], chatbot | |
) | |
submit.click(user, [msg, chatbot], [msg, chatbot], queue=False).then( | |
generate_paraphrase, [msg, types, chatbot], chatbot | |
) | |
clear.click(lambda: None, None, chatbot, queue=False) | |
demo.queue() | |
demo.launch() |