| | |
| | import gradio as gr |
| | import asyncio |
| |
|
| | from modules.input_processor import InputProcessor |
| | from modules.task_decomposer import TaskDecomposer |
| | from modules.parallel_executor import ParallelTaskExecutor |
| | from modules.result_synthesizer import ResultSynthesizer |
| |
|
| | input_processor = InputProcessor() |
| | decomposer = TaskDecomposer() |
| | executor = ParallelTaskExecutor() |
| | synthesizer = ResultSynthesizer() |
| |
|
| | async def process_all(text, image, video, output_lang): |
| | context = await input_processor.process(text, image, video) |
| | subtasks = await decomposer.decompose(context) |
| | results = await executor.execute(subtasks) |
| | summary = await synthesizer.synthesize(results, output_lang) |
| | return summary |
| |
|
| | def main(text, image, video, output_lang): |
| | return asyncio.run(process_all(text, image, video, output_lang)) |
| |
|
| | iface = gr.Interface( |
| | fn=main, |
| | inputs=[ |
| | gr.Textbox(label="指示テキスト"), |
| | gr.Image(label="画像ファイル (任意)", type="filepath", optional=True), |
| | gr.Video(label="動画ファイル (任意)", optional=True), |
| | gr.Dropdown(choices=["ja", "en", "es", "zh", "fr"], label="出力言語", value="ja") |
| | ], |
| | outputs=gr.Textbox(label="出力結果"), |
| | title="多言語・多モーダルWeb参照AIエージェント", |
| | description="テキスト・画像・動画をもとにWeb情報を収集・統合し、指定言語で出力するAI" |
| | ) |
| |
|
| | if __name__ == "__main__": |
| | iface.launch() |
| |
|