Spaces:
Paused
Paused
lanny xu
commited on
Commit
·
a6a67f2
1
Parent(s):
132c467
modifies bug
Browse files- configure_huggingface.py +132 -0
- 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"
|