File size: 3,565 Bytes
c844813
 
f131a12
 
c844813
 
f131a12
c844813
 
 
 
 
 
 
f131a12
c844813
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ef805fe
 
c844813
 
 
 
 
3d13055
 
c844813
 
 
3d13055
 
c844813
 
 
 
 
 
37eaaad
c844813
3d13055
c844813
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/usr/bin/env python3
"""
知识图谱检索启动脚本
负责配置环境并运行 main_graphrag.py

使用方法:
python run_graphrag.py
"""

import os
import sys
import subprocess

print("="*60)
print("🚀 启动知识图谱检索 (GraphRAG)")
print("="*60)

# ============================================================
# 1. 配置环境
# ============================================================
def setup_environment():
    """配置环境变量"""
    print("\n⚙️ 步骤 1/2: 配置环境变量...")
    
    # 检查.env文件
    if os.path.exists(".env"):
        print("   ✅ 发现 .env 文件,加载配置...")
        try:
            from dotenv import load_dotenv
            load_dotenv()
            print("   ✅ 环境变量已加载")
        except ImportError:
            print("   ⚠️ python-dotenv 未安装,跳过 .env 加载")
    else:
        print("   ℹ️ 未找到 .env 文件")
    
    # 显示环境变量状态
    print("\n   📋 环境变量状态:")
    print(f"      • TAVILY_API_KEY: {'✅ 已设置' if os.environ.get('TAVILY_API_KEY') else '⚠️ 未设置'}")
    print(f"      • NOMIC_API_KEY: {'✅ 已设置' if os.environ.get('NOMIC_API_KEY') else '⚠️ 未设置'}")
    
    # 添加当前目录到 Python 路径
    current_dir = os.getcwd()
    if current_dir not in sys.path:
        sys.path.insert(0, current_dir)
        print(f"\n   ✅ 已添加到 Python 路径: {current_dir}")
    
    print("\n   💡 注意: 新增的多模态功能需要Pillow库,请确保已安装")

# ============================================================
# 2. 运行 main_graphrag.py
# ============================================================
def run_main_graphrag():
    """运行 main_graphrag.py"""
    print("\n🚀 步骤 2/2: 运行 main_graphrag.py...")
    print("="*60)
    
    # 检查文件是否存在
    if not os.path.exists("main_graphrag.py"):
        print("\n❌ 错误: 未找到 main_graphrag.py 文件")
        print("   请确保在正确的目录中运行此脚本")
        return False
    
    print("\n🔄 启动 GraphRAG...\n")
    
    try:
        # 运行 main.py
        result = subprocess.run(
            [sys.executable, "main_graphrag.py"],
            capture_output=False,  # 实时显示输出
        )
        
        if result.returncode == 0:
            print("\n" + "="*60)
            print("✅ 运行成功!")
            print("="*60)
            return True
        else:
            print("\n" + "="*60)
            print(f"❌ 运行失败 (返回码: {result.returncode})")
            print("="*60)
            return False
            
    except KeyboardInterrupt:
        print("\n\n⚠️ 用户中断执行")
        return False
    except Exception as e:
        print(f"\n❌ 运行时错误: {e}")
        return False

# ============================================================
# 主函数
# ============================================================
def main():
    """主执行流程"""
    try:
        # 1. 配置环境
        setup_environment()
        
        # 2. 运行 main_graphrag.py
        success = run_main_graphrag()
        
        if success:
            print("\n💡 提示: 生成的知识图谱保存在配置的路径中")
        
    except KeyboardInterrupt:
        print("\n\n⚠️ 用户中断执行")
    except Exception as e:
        print(f"\n❌ 执行过程中出错: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    main()