#!/usr/bin/env python3 """ 多模态智能体系统启动脚本 """ import os import sys import argparse from pathlib import Path # 添加项目根目录到Python路径 sys.path.append(os.path.dirname(os.path.abspath(__file__))) from config import Config def check_environment(): """检查运行环境""" print("🔍 检查运行环境...") # 检查Python版本 if sys.version_info < (3, 8): print("❌ Python版本过低,需要Python 3.8+") return False print(f"✅ Python版本: {sys.version}") # 检查必要的环境变量 if not Config.validate(): print("❌ 环境变量配置不完整") print("请设置以下环境变量:") print(" - OPENAI_API_KEY") return False print("✅ 环境变量配置正确") # 检查依赖包 try: import torch import transformers import langchain import langgraph import gradio print("✅ 核心依赖包已安装") except ImportError as e: print(f"❌ 缺少依赖包: {e}") print("请运行: pip install -r requirements.txt") return False return True def run_web_interface(): """运行Web界面""" print("🌐 启动Web界面...") from app import demo demo.launch(debug=Config.DEBUG, share=False) def run_test(): """运行测试""" print("🧪 运行系统测试...") from test_agent import main as test_main test_main() def run_interactive(): """运行交互式模式""" print("💬 启动交互式模式...") from app import MultiModalAgent agent = MultiModalAgent() print("智能体已初始化,输入 'quit' 退出") while True: try: question = input("\n请输入问题: ").strip() if question.lower() in ['quit', 'exit', 'q']: break if not question: continue print("🤖 正在处理...") answer = agent(question) print(f"回答: {answer}") except KeyboardInterrupt: print("\n👋 再见!") break except Exception as e: print(f"❌ 错误: {str(e)}") def main(): """主函数""" parser = argparse.ArgumentParser(description="多模态智能体系统") parser.add_argument( "--mode", choices=["web", "test", "interactive"], default="web", help="运行模式: web(Web界面), test(测试), interactive(交互式)" ) parser.add_argument( "--debug", action="store_true", help="启用调试模式" ) args = parser.parse_args() # 设置调试模式 if args.debug: os.environ["DEBUG"] = "True" os.environ["LOG_LEVEL"] = "DEBUG" print("🚀 多模态智能体系统") print("=" * 40) # 检查环境 if not check_environment(): sys.exit(1) # 打印配置 Config.print_config() # 根据模式运行 try: if args.mode == "web": run_web_interface() elif args.mode == "test": run_test() elif args.mode == "interactive": run_interactive() except KeyboardInterrupt: print("\n👋 程序被用户中断") except Exception as e: print(f"❌ 运行错误: {str(e)}") if Config.DEBUG: import traceback traceback.print_exc() if __name__ == "__main__": main()