Spaces:
Paused
Paused
File size: 4,758 Bytes
a6a67f2 |
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 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
#!/usr/bin/env python3
"""
Hugging Face Vectara 模型访问配置
解决 Vectara 幻觉检测模型的权限问题
使用方法:
1. python configure_huggingface.py
2. 按照提示进行 Hugging Face 登录和模型访问权限申请
"""
import os
import subprocess
import sys
def check_huggingface_login():
"""检查是否已登录 Hugging Face"""
try:
result = subprocess.run(
["huggingface-cli", "whoami"],
capture_output=True,
text=True,
timeout=10
)
return result.returncode == 0
except (subprocess.TimeoutExpired, FileNotFoundError):
return False
def login_huggingface():
"""登录 Hugging Face"""
print("🔐 需要登录 Hugging Face 才能访问 Vectara 模型")
print("\n📋 登录步骤:")
print("1. 访问 https://huggingface.co/join 注册账户(如果还没有)")
print("2. 访问 https://huggingface.co/settings/tokens 获取访问令牌")
print("3. 运行以下命令登录:")
print(" huggingface-cli login")
choice = input("\n是否现在尝试登录? (y/n): ").lower().strip()
if choice == 'y':
try:
subprocess.run(["huggingface-cli", "login"], check=True)
print("✅ Hugging Face 登录成功!")
return True
except subprocess.CalledProcessError:
print("❌ 登录失败,请手动执行: huggingface-cli login")
return False
except FileNotFoundError:
print("❌ 未找到 huggingface-cli,请安装: pip install huggingface_hub")
return False
return False
def check_model_access():
"""检查是否可以访问 Vectara 模型"""
print("\n🔍 检查 Vectara 模型访问权限...")
try:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("vectara/hallucination_evaluation_model")
print("✅ 可以访问 Vectara 模型!")
return True
except Exception as e:
print(f"❌ 无法访问 Vectara 模型: {e}")
print("\n📋 需要完成以下步骤:")
print("1. 访问: https://huggingface.co/vectara/hallucination_evaluation_model")
print("2. 点击页面上的 'Agree and access repository' 按钮")
print("3. 确保已登录 Hugging Face 账户")
return False
def update_config_disable_vectara():
"""更新配置,禁用 Vectara 模型,使用 NLI 方法"""
print("\n⚙️ 更新配置,禁用 Vectara 模型...")
config_file = "hallucination_config.py"
if os.path.exists(config_file):
# 读取原始配置
with open(config_file, 'r', encoding='utf-8') as f:
content = f.read()
# 备份原始配置
with open(f"{config_file}.backup", 'w', encoding='utf-8') as f:
f.write(content)
# 修改配置,只使用 NLI 方法
updated_content = content.replace(
'HALLUCINATION_DETECTION_METHOD = "hybrid"',
'HALLUCINATION_DETECTION_METHOD = "nli"'
)
# 保存更新后的配置
with open(config_file, 'w', encoding='utf-8') as f:
f.write(updated_content)
print("✅ 配置已更新,将使用 NLI 幻觉检测方法")
return True
else:
print(f"❌ 未找到配置文件: {config_file}")
return False
def main():
"""主函数"""
print("="*60)
print("🔧 Hugging Face Vectara 模型访问配置")
print("="*60)
# 1. 检查是否已登录
if not check_huggingface_login():
print("\n⚠️ 未检测到 Hugging Face 登录状态")
if not login_huggingface():
print("\n❌ 无法完成登录,将使用备选方案")
update_config_disable_vectara()
return
# 2. 检查模型访问权限
if not check_model_access():
print("\n❌ 无法访问 Vectara 模型")
choice = input("\n选择解决方案:\n1. 手动申请模型访问权限后重试\n2. 禁用 Vectara,使用 NLI 方法\n\n请输入选择 (1/2): ").strip()
if choice == "1":
print("\n📋 手动申请步骤:")
print("1. 访问: https://huggingface.co/vectara/hallucination_evaluation_model")
print("2. 登录您的 Hugging Face 账户")
print("3. 点击 'Agree and access repository' 按钮")
print("4. 重新运行此脚本验证")
elif choice == "2":
update_config_disable_vectara()
else:
print("❌ 无效选择")
else:
print("\n✅ 所有检查通过,可以使用 Vectara 模型!")
if __name__ == "__main__":
main() |