| |
| 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() |
|
|