lanny xu commited on
Commit
a6a67f2
·
1 Parent(s): 132c467

modifies bug

Browse files
Files changed (2) hide show
  1. configure_huggingface.py +132 -0
  2. install_and_fix.sh +67 -0
configure_huggingface.py ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Hugging Face Vectara 模型访问配置
4
+ 解决 Vectara 幻觉检测模型的权限问题
5
+
6
+ 使用方法:
7
+ 1. python configure_huggingface.py
8
+ 2. 按照提示进行 Hugging Face 登录和模型访问权限申请
9
+ """
10
+
11
+ import os
12
+ import subprocess
13
+ import sys
14
+
15
+ def check_huggingface_login():
16
+ """检查是否已登录 Hugging Face"""
17
+ try:
18
+ result = subprocess.run(
19
+ ["huggingface-cli", "whoami"],
20
+ capture_output=True,
21
+ text=True,
22
+ timeout=10
23
+ )
24
+ return result.returncode == 0
25
+ except (subprocess.TimeoutExpired, FileNotFoundError):
26
+ return False
27
+
28
+ def login_huggingface():
29
+ """登录 Hugging Face"""
30
+ print("🔐 需要登录 Hugging Face 才能访问 Vectara 模型")
31
+ print("\n📋 登录步骤:")
32
+ print("1. 访问 https://huggingface.co/join 注册账户(如果还没有)")
33
+ print("2. 访问 https://huggingface.co/settings/tokens 获取访问令牌")
34
+ print("3. 运行以下命令登录:")
35
+ print(" huggingface-cli login")
36
+
37
+ choice = input("\n是否现在尝试登录? (y/n): ").lower().strip()
38
+ if choice == 'y':
39
+ try:
40
+ subprocess.run(["huggingface-cli", "login"], check=True)
41
+ print("✅ Hugging Face 登录成功!")
42
+ return True
43
+ except subprocess.CalledProcessError:
44
+ print("❌ 登录失败,请手动执行: huggingface-cli login")
45
+ return False
46
+ except FileNotFoundError:
47
+ print("❌ 未找到 huggingface-cli,请安装: pip install huggingface_hub")
48
+ return False
49
+ return False
50
+
51
+ def check_model_access():
52
+ """检查是否可以访问 Vectara 模型"""
53
+ print("\n🔍 检查 Vectara 模型访问权限...")
54
+
55
+ try:
56
+ from transformers import AutoTokenizer
57
+ tokenizer = AutoTokenizer.from_pretrained("vectara/hallucination_evaluation_model")
58
+ print("✅ 可以访问 Vectara 模型!")
59
+ return True
60
+ except Exception as e:
61
+ print(f"❌ 无法访问 Vectara 模型: {e}")
62
+ print("\n📋 需要完成以下步骤:")
63
+ print("1. 访问: https://huggingface.co/vectara/hallucination_evaluation_model")
64
+ print("2. 点击页面上的 'Agree and access repository' 按钮")
65
+ print("3. 确保已登录 Hugging Face 账户")
66
+ return False
67
+
68
+ def update_config_disable_vectara():
69
+ """更新配置,禁用 Vectara 模型,使用 NLI 方法"""
70
+ print("\n⚙️ 更新配置,禁用 Vectara 模型...")
71
+
72
+ config_file = "hallucination_config.py"
73
+ if os.path.exists(config_file):
74
+ # 读取原始配置
75
+ with open(config_file, 'r', encoding='utf-8') as f:
76
+ content = f.read()
77
+
78
+ # 备份原始配置
79
+ with open(f"{config_file}.backup", 'w', encoding='utf-8') as f:
80
+ f.write(content)
81
+
82
+ # 修改配置,只使用 NLI 方法
83
+ updated_content = content.replace(
84
+ 'HALLUCINATION_DETECTION_METHOD = "hybrid"',
85
+ 'HALLUCINATION_DETECTION_METHOD = "nli"'
86
+ )
87
+
88
+ # 保存更新后的配置
89
+ with open(config_file, 'w', encoding='utf-8') as f:
90
+ f.write(updated_content)
91
+
92
+ print("✅ 配置已更新,将使用 NLI 幻觉检测方法")
93
+ return True
94
+ else:
95
+ print(f"❌ 未找到配置文件: {config_file}")
96
+ return False
97
+
98
+ def main():
99
+ """主函数"""
100
+ print("="*60)
101
+ print("🔧 Hugging Face Vectara 模型访问配置")
102
+ print("="*60)
103
+
104
+ # 1. 检查是否已登录
105
+ if not check_huggingface_login():
106
+ print("\n⚠️ 未检测到 Hugging Face 登录状态")
107
+ if not login_huggingface():
108
+ print("\n❌ 无法完成登录,将使用备选方案")
109
+ update_config_disable_vectara()
110
+ return
111
+
112
+ # 2. 检查模型访问权限
113
+ if not check_model_access():
114
+ print("\n❌ 无法访问 Vectara 模型")
115
+
116
+ choice = input("\n选择解决方案:\n1. 手动申请模型访问权限后重试\n2. 禁用 Vectara,使用 NLI 方法\n\n请输入选择 (1/2): ").strip()
117
+
118
+ if choice == "1":
119
+ print("\n📋 手动申请步骤:")
120
+ print("1. 访问: https://huggingface.co/vectara/hallucination_evaluation_model")
121
+ print("2. 登录您的 Hugging Face 账户")
122
+ print("3. 点击 'Agree and access repository' 按钮")
123
+ print("4. 重新运行此脚本验证")
124
+ elif choice == "2":
125
+ update_config_disable_vectara()
126
+ else:
127
+ print("❌ 无效选择")
128
+ else:
129
+ print("\n✅ 所有检查通过,可以使用 Vectara 模型!")
130
+
131
+ if __name__ == "__main__":
132
+ main()
install_and_fix.sh ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # 安装依赖和修复常见问题的脚本
3
+
4
+ echo "============================================"
5
+ echo "🚀 Adaptive RAG 安装和修复脚本"
6
+ echo "============================================"
7
+
8
+ # 1. 安装 Hugging Face CLI(如果未安装)
9
+ echo "📦 检查 Hugging Face CLI..."
10
+ if ! command -v huggingface-cli &> /dev/null; then
11
+ echo "⚙️ 安装 huggingface_hub..."
12
+ pip install huggingface_hub
13
+ else
14
+ echo "✅ Hugging Face CLI 已安装"
15
+ fi
16
+
17
+ # 2. 安装所有依赖
18
+ echo ""
19
+ echo "📦 安装项目依赖..."
20
+ pip install -r requirements.txt
21
+
22
+ # 3. 安装 rank_bm25(如果未安装)
23
+ echo ""
24
+ echo "📦 检查 rank_bm25..."
25
+ python -c "import rank_bm25" 2>/dev/null || {
26
+ echo "⚙️ 安装 rank_bm25..."
27
+ pip install rank-bm25
28
+ }
29
+
30
+ # 4. 运行 Hugging Face 配置脚本
31
+ echo ""
32
+ echo "🔧 配置 Hugging Face 访问..."
33
+ python configure_huggingface.py
34
+
35
+ # 5. 验证安装
36
+ echo ""
37
+ echo "🔍 验证安装结果..."
38
+
39
+ # 检查 rank_bm25
40
+ echo "检查 rank_bm25..."
41
+ python -c "import rank_bm25; print('✅ rank_bm25 可用')" || echo "❌ rank_bm25 安装失败"
42
+
43
+ # 检查 Hugging Face 登录
44
+ echo "检查 Hugging Face 登录状态..."
45
+ if huggingface-cli whoami &>/dev/null; then
46
+ echo "✅ Hugging Face 已登录"
47
+ else
48
+ echo "⚠️ Hugging Face 未登录,可能无法访问受限模型"
49
+ fi
50
+
51
+ # 检查 Vectara 模型访问
52
+ echo "检查 Vectara 模型访问..."
53
+ python -c "
54
+ try:
55
+ from transformers import AutoTokenizer
56
+ AutoTokenizer.from_pretrained('vectara/hallucination_evaluation_model')
57
+ print('✅ Vectara 模型可访问')
58
+ except:
59
+ print('❌ Vectara 模型不可访问,将使用 NLI 方法')
60
+ "
61
+
62
+ echo ""
63
+ echo "============================================"
64
+ echo "🎉 安装和配置完成!"
65
+ echo "============================================"
66
+ echo ""
67
+ echo "💡 现在可以运行: python setup_and_run.py"