Vision_language_Gemma3 / module_rewriting.py
Didier's picture
Upload module_rewriting.py
61cf56e verified
"""
File: module_rewriting.py
Description: Rewrite some given text in a given style and language.
Author: Didier Guillevic
Date: 2025-03-16
"""
import gradio as gr
import vlm
tgt_language_codes = {
'English': 'en',
'French': 'fr'
}
code_to_languages = {v: k for k, v in tgt_language_codes.items()}
#
# Examples of bad writing: https://lafavephilosophy.x10host.com/writsamp0.htm
#
example_bad_writing_2 = (
"Existing is being unique. Existence, reality, essence, cause, or truth is uniqueness. "
"The geometric point in the center of the sphere is nature’s symbol of the immeasurable "
"uniqueness within its measurable effect. "
"A center is always unique; otherwise it would not be a center. "
"Because uniqueness is reality, or that which makes a thing what it is, "
"everything that is real is based on a centralization."
)
example_bad_writing_3 = (
"The amount of grammer and usage error’s today is astounding. "
"Not to mention spelling. If I was a teacher, I’d feel badly "
"that less and less students seem to understand the basic principals "
"of good writing. Neither the oldest high school students nor the "
"youngest kindergartner know proper usage. "
"A student often thinks they can depend on word processing programs "
"to correct they’re errors. Know way!"
"Watching TV all the time, its easy to see why their having trouble. "
"TV interferes with them studying and it’s strong affect on children "
"has alot to due with their grades. There’s other factors, too, "
"including the indifference of parents like you and I. "
"A Mom or Dad often doesn’t know grammer themselves. "
"We should tell are children to study hard like we did at "
"they’re age and to watch less TV then their classmates."
)
example_bad_writing_9 = (
"Immanuel Kant was a great philosipher that came up with many "
"philosophical thoughts. He represents philosophy at it’s best. "
"One issue that went against his moral laws was that of people "
"having a lack of honesty or lying. Kant was strongly in favor of "
"the view that when the ethical and moral decision to lie is made "
"by a person, they’re would always be negative consequences of "
"they’re choice. "
"Kant also held the firm belief that lying was wrong at all times. "
"I disagree, my view is that sometimes all lying is not wrong."
)
rewrite_prompt = (
"{} "
"Respond exclusively using the {} language. "
"Text:\n\n{}"
)
def rewrite_text(text, instruction, tgt_lang):
"""Rewrite the given text in the given target language.
"""
# Build messages
messages = [
{
'role': 'user',
'content': [
{
"type": "text",
"text": rewrite_prompt.format(
instruction, code_to_languages[tgt_lang], text)
}
]
}
]
yield from vlm.stream_response(messages)
#
# User interface
#
with gr.Blocks() as demo:
with gr.Row():
input_text = gr.Textbox(
lines=5,
placeholder="Enter text to rewrite",
label="Text to rewrite",
render=True
)
output_text = gr.Textbox(
lines=5,
label="Rewritten text",
render=True
)
with gr.Row():
tgt_lang = gr.Dropdown(
choices=tgt_language_codes.items(),
value="en",
label="Target language",
render=True,
scale=1
)
instruction = gr.Textbox(
lines=1,
value="Rewrite the following text in a more professional style.",
label="Instruction",
render=True,
scale=4
)
with gr.Row():
rewrite_btn = gr.Button(value="Rewrite", variant="primary")
clear_btn = gr.Button("Clear", variant="secondary")
# Examples
with gr.Accordion("Examples", open=False):
examples = gr.Examples(
[
["Howdy mate! Wanna grab a bite?", ],
[example_bad_writing_3, ],
[example_bad_writing_2, ],
[ ("The work wa really not that great. "
"They simply surfed the web to find the solution to their problem."),
],
["Ils ont rien foutus. Ils sont restés assis sur leur postérieur toute la journée.", ],
],
inputs=[input_text, instruction, tgt_lang],
outputs=[output_text,],
fn=rewrite_text,
cache_examples=False,
label="Examples"
)
# Documentation
with gr.Accordion("Documentation", open=False):
gr.Markdown(f"""
- Model: {vlm.model_id}.
""")
# Click actions
rewrite_btn.click(
fn=rewrite_text,
inputs=[input_text, instruction, tgt_lang],
outputs=[output_text,]
)
clear_btn.click(
fn=lambda : ('', ''), # input_text, output_text, output_text_google
inputs=[],
outputs=[input_text, output_text]
)