Mahbodez's picture
Update app.py
fcdaab2
import gradio as gr
import interface
import utils
import treegraph as tg
import logger as lg
import os
system_prompt = """
You are a critical AI radiology assistant.
You are helping a radiologist correctly fill out a radiology report.
The report is regarding a Knee MRI.
"""
username = os.environ.get("user")
passwd = os.environ.get("pass")
graph, nodes_dict = tg.build_tree_from_file("knee_template.json")
report_interface = interface.ReportChecklistInterface(
llm=utils.LLM(model="gpt-3.5-turbo"),
system_prompt=system_prompt,
graph=graph,
nodes_dict=nodes_dict,
)
logger = None
if report_interface.prime_model() is False:
print("Model priming failed. Please try again.")
exit()
else:
print("Model priming successful.")
running = True
def check_report(report, name):
global logger, report_interface
if len(name.strip()) < 3:
return "Please enter a name."
else:
logger = lg.Logger(log_file="log.txt")
report_interface.logger = logger
report_interface.username = name
if running:
results = report_interface.process_input(report)
if results == "quit":
quit_fn()
elif results == "help":
return report_interface.help_message
elif results == "exception":
return "An exception occurred. Please try again."
else:
return results
else:
return "Model has been stopped."
def quit_fn():
global running
running = False
return "Model has been stopped."
with gr.Blocks(theme="soft") as demo:
gr.Markdown("## Radiology Report Assistant")
gr.Markdown(report_interface.help_message)
name_textbox = gr.Textbox(label="Name")
report_textbox = gr.TextArea(label="Report", lines=20, max_lines=50)
with gr.Row():
check_btn = gr.Button(
value="Check Report",
)
clear_btn = gr.ClearButton(
value="Clear Messages",
)
quit_btn = gr.Button(
value="Quit",
)
results_textbox = gr.TextArea(label="Results", lines=20, max_lines=50)
clear_btn.add([results_textbox, report_textbox])
check_btn.click(
fn=check_report,
inputs=[report_textbox, name_textbox],
outputs=[results_textbox],
)
quit_btn.click(fn=quit_fn, outputs=[results_textbox])
demo.launch(auth=(username, passwd))