from response_generation import ResponseGenerator
import gradio as gr
DEFAULT_MODEL = "shaneweisz/DialoGPT-finetuned-multiCONAN"
DECODING_CONFIG = {"max_new_tokens": 100, "no_repeat_ngram_size": 3, "num_beams": 10}
TITLE = "AutoCounterspeech"
DESCRIPTION = """
Built by [Shane Weisz](https://shaneweisz.com) for my MPhil project on _Automating Counterspeech in Dialogue Systems_ at Cambridge University.
The project is supervised by [Dr Marcus Tomalin](https://www.crassh.cam.ac.uk/about/people/marcus-tomalin/) and forms part of the [Giving Voice to Digital Democracies](https://www.crassh.cam.ac.uk/research/projects-centres/giving-voice-to-digital-democracies/) project on the _The Social Impact of Artificially Intelligent Communications Technology_.
The system is built by fine-tuning [DialoGPT](https://huggingface.co/microsoft/DialoGPT-medium#:~:text=DialoGPT%20is%20a%20SOTA%20large,single%2Dturn%20conversation%20Turing%20test) on the [MultiCONAN](https://github.com/marcoguerini/CONAN#Multitarget-CONAN) dataset, a dataset comprising a set of hate speech inputs and appropriate counterspeech responses produced under the supervision of trained NGO operators from [Stop Hate UK](https://www.stophateuk.org/).
Try it out: **Enter some hate speech and see if the system generates an appropriate counterspeech response.**"""
ARTICLE = f"""
**Model:** {DEFAULT_MODEL}
**Decoding parameters:** {DECODING_CONFIG}
"""
model = ResponseGenerator(DEFAULT_MODEL, DECODING_CONFIG)
def respond(input):
return model.respond(input)
demo = gr.Interface(fn=respond, inputs="text", outputs="text", title = TITLE, description = DESCRIPTION, article = ARTICLE)
demo.launch()