class AutoModeSelector:
    """
    クエリに応じて自動的にモードを選択
    """
    
    def __init__(self, ollama_model="gemma3:1b"):
        """
        Args:
            ollama_model: 使用するLLMモデル（ユーザーが指定可能）
        """
        self.ollama_model = ollama_model
        self.classifier = QueryClassifier()
    
    def query(self, query_text, auto_mode=True):
        """
        クエリを実行
        
        Args:
            query_text: ユーザーのクエリ
            auto_mode: Trueの場合，自動的にモードを選択
            
        Returns:
            dict: 実行結果
        """
        if auto_mode:
            # 自動モード選択
            classification = self.classifier.classify(query_text)
            mode = classification["mode"]
            query_type = classification["query_type"]
            threshold = classification["threshold"]
            reason = classification["reason"]
            
            print(f"[自動選択] 結果:")
            print(f"   モード: {mode}")
            print(f"   クエリタイプ: {query_type}")
            print(f"   品質閾値: {threshold}")
            print(f"   理由: {reason}")
        else:
            # 手動モード選択（従来の方法）
            mode = input("モードを選択 (rag/web/fallback/hybrid/comparison): ")
            query_type = "manual"
            threshold = 0.85  # デフォルト閾値
        
        # モードに応じて実行
        if mode == "rag":
            return self.execute_rag_mode(query_text)
        elif mode == "web":
            return self.execute_web_mode(query_text)
        elif mode == "fallback":
            return self.execute_fallback_mode(query_text, threshold)
        else:
            raise ValueError(f"Unknown mode: {mode}")
