def start_gradio()

in pyrit/ui/scorer.py [0:0]


    def start_gradio(self, open_browser=False):
        with gr.Blocks() as demo:
            is_connected = gr.State(False)
            next_prompt_state = gr.State("")

            self.connect_status = ConnectionStatusHandler(is_connected, self.rpc_client)
            with gr.Column(visible=False) as main_interface:
                prompt = gr.Markdown("Prompt: ")
                prompt.height = "200px"
                with gr.Row():
                    safe = gr.Button("Safe")
                    unsafe = gr.Button("Unsafe")

                    safe.click(
                        fn=lambda: [gr.update(interactive=False)] * 2 + [""], outputs=[safe, unsafe, next_prompt_state]
                    ).then(fn=self._safe_clicked, outputs=next_prompt_state)
                    unsafe.click(
                        fn=lambda: [gr.update(interactive=False)] * 2 + [""], outputs=[safe, unsafe, next_prompt_state]
                    ).then(fn=self._unsafe_clicked, outputs=next_prompt_state)

            with gr.Row() as loading_animation:
                loading_text = gr.Markdown("Connecting to PyRIT")
                timer = gr.Timer(GRADIO_POLLING_RATE)
                timer.tick(fn=self._loading_dots, outputs=loading_text)

            next_prompt_state.change(
                fn=self._on_next_prompt_change, inputs=[next_prompt_state], outputs=[prompt, safe, unsafe]
            )
            self.connect_status.setup(
                main_interface=main_interface, loading_animation=loading_animation, next_prompt_state=next_prompt_state
            )

            demo.load(
                fn=self._main_interface_loaded,
                outputs=[main_interface, loading_animation, next_prompt_state, is_connected],
            )

        if open_browser:
            demo.launch(inbrowser=True)
        else:
            _, url, _ = demo.launch(prevent_thread_lock=True)
            self.url = url
            print("Gradio launched")
            webview.create_window("PyRIT - Scorer", self.url)
            webview.start()
            print("Webview closed!")

        if self.rpc_client:
            self.rpc_client.stop()