Jan Philip Wahle
Add demo
22f7204
raw
history blame
No virus
2.45 kB
# 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()