File size: 1,997 Bytes
1d80bec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1d49a07
1d80bec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e3b324e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import gradio as gr
import interface
import utils
import treegraph as tg

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.
"""

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,
)

if report_interface.prime_model() is False:
    print("Model priming failed. Please try again.")
    exit()
else:
    print("Model priming successful.")

with gr.Blocks(theme="finlaymacklon/smooth_slate") as demo:
    gr.Markdown("## Radiology Report Assistant")
    gr.Markdown(report_interface.help_message)

    running = gr.components.Variable(True)
    report_textbox = gr.TextArea(label="Report", lines=20, max_lines=50)
    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])

    def check_report(report):
        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():
        running.value = False
        results_textbox.value = "Model has been stopped."

    check_btn.click(fn=check_report, inputs=[report_textbox], outputs=[results_textbox])
    quit_btn.click(fn=quit_fn)

demo.launch(auth=("admin", "radiologyreport"), share=True)