```python
def get_safe_num_predict(query: str) -> int:
    """
    尻切れを防ぐための安全な値を返す
    
    Args:
        query: ユーザーの質問
    
    Returns:
        推奨されるnum_predict値
    """
    query_lower = query.lower()
    
    # 短い回答（事実確認）
    if any(word in query_lower for word in ["とは", "何", "いつ", "どこ", "誰"]):
        return 128
        # 期待: 50-80トークン、余裕: 60%、尻切れリスク: 非常に低
    
    # 手順・方法（中程度）
    elif any(word in query_lower for word in ["方法", "手順", "how", "やり方"]):
        return 256
        # 期待: 150-200トークン、余裕: 30%、尻切れリスク: 低
    
    # 詳細な説明
    elif any(word in query_lower for word in ["詳しく", "包括的", "すべて", "全て"]):
        return 512
        # 期待: 300-400トークン、余裕: 30%、尻切れリスク: 低
    
    # 比較・分析
    elif any(word in query_lower for word in ["比較", "違い", "差", "compare"]):
        return 384
        # 期待: 250-300トークン、余裕: 30%、尻切れリスク: 低
    
    # デフォルト（標準的な質問）
    else:
        return 256
        # 期待: 150-200トークン、余裕: 30%、尻切れリスク: 低
```
