import argparse import os.path import gradio as gr from gradio.components import Textbox, Image from ovis.serve.runner import RunnerArguments, OvisRunner class Server: def __init__(self, runner: OvisRunner): self.runner = runner def __call__(self, image, text): response = self.runner.run([image, text]) output = response["output"] return output if __name__ == '__main__': parser = argparse.ArgumentParser(description='Ovis Server') parser.add_argument('--model_path', type=str, required=True) parser.add_argument('--flagging_dir', type=str, default=os.path.expanduser('~/ovis-flagged')) parser.add_argument('--max_partition', type=int, default=9) parser.add_argument('--port', type=int, required=True) args = parser.parse_args() os.makedirs(args.flagging_dir, exist_ok=True) runner_args = RunnerArguments( model_path=args.model_path, max_partition=args.max_partition ) demo = gr.Interface( fn=Server(OvisRunner(runner_args)), inputs=[Image(type='pil', label='image'), Textbox(placeholder='Enter your text here...', label='prompt')], outputs=gr.Markdown(), title=args.model_path.split('/')[-1], flagging_dir=args.flagging_dir ) demo.launch(server_port=args.port)