|
import re |
|
import gradio as gr |
|
|
|
from review import process_text, process_image, get_file |
|
|
|
def format_entities(text: str, review: list[dict]) -> list[dict]: |
|
entities = [] |
|
for entity in review: |
|
|
|
starts = [m.start() for m in re.finditer(entity["term"], text)] |
|
if len(starts) > 0: |
|
entities.append( |
|
{ |
|
"term": entity["term"], |
|
"start": starts[0], |
|
"end": starts[0] + len(entity["term"]), |
|
"entity": entity["type"], |
|
"fix": entity["fix"], |
|
} |
|
) |
|
else: |
|
print(f"Term '{entity['term']}' not found in the text: '{text}'") |
|
return entities |
|
|
|
|
|
text_ui = gr.Interface( |
|
fn=process_text, |
|
inputs=[ |
|
gr.Dropdown( |
|
["Gemini 1.0 Pro", "Gemini 1.5 Pro (latest)"], |
|
label="Model", |
|
value="Gemini 1.0 Pro", |
|
scale=1, |
|
), |
|
gr.Textbox(lines=5, label="Text", scale=4), |
|
], |
|
outputs=[gr.HTML(label="Revision")], |
|
examples=[ |
|
["Gemini 1.0 Pro", "The whitelist is incomplete."], |
|
["Gemini 1.0 Pro", "There's not enough manpower to deliver the project"], |
|
["Gemini 1.0 Pro", "This has never happened in the history of mankind!"], |
|
["Gemini 1.0 Pro", "El hombre desciende del mono."], |
|
["Gemini 1.0 Pro", "Els homes són animals"], |
|
], |
|
) |
|
|
|
image_ui = gr.Interface( |
|
fn=process_image, |
|
inputs=[ |
|
gr.Dropdown( |
|
["Gemini 1.0 Pro Vision", "Gemini 1.5 Pro (latest)"], |
|
label="Model", |
|
value="Gemini 1.0 Pro Vision", |
|
scale=1, |
|
), |
|
gr.Image(sources=["upload", "clipboard"], type="pil"), |
|
], |
|
outputs=["markdown"], |
|
examples=[ |
|
["Gemini 1.0 Pro Vision", "static/images/CEOs.png"], |
|
["Gemini 1.0 Pro Vision", "static/images/meat_grid.png"], |
|
["Gemini 1.0 Pro Vision", "static/images/elephants.jpg"], |
|
["Gemini 1.0 Pro Vision", "static/images/crosses.jpg"], |
|
], |
|
) |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown(get_file("static/intro.md")) |
|
gr.TabbedInterface([text_ui, image_ui], ["Check texts", "Check images"]) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|