from functools import wraps import gradio as gr def wrap_gen_fn(gen_fn): @wraps(gen_fn) def wrapped_gen_fn(prompt, *args, **kwargs): try: yield from gen_fn(prompt, *args, **kwargs) except gr.Error as g_err: raise g_err except Exception as e: raise gr.Error(f'Failed to generate text: {e}') from e return wrapped_gen_fn def delete_last_conversation(chatbot, history): if len(history) % 2 != 0: gr.Error("history length is not even") return ( chatbot, history, "Delete Done", ) if len(chatbot) > 0: chatbot.pop() if len(history) > 0 and len(history) % 2 == 0: history.pop() history.pop() return ( chatbot, history, "Delete Done", ) def reset_state(): return [], [], None, "Reset Done" def reset_textbox(): return gr.update(value=""), "" def cancel_outputing(): return "Stop Done" def transfer_input(input_text, input_image): print("transferring input text and input image") return ( input_text, input_image, gr.update(value=""), gr.update(value=None), gr.Button(visible=True), ) class State: interrupted = False def interrupt(self): self.interrupted = True def recover(self): self.interrupted = False shared_state = State()