File size: 2,390 Bytes
07d7ee6
 
 
 
 
fcdaab2
07d7ee6
 
 
 
 
fcdaab2
 
07d7ee6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fcdaab2
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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))