adaptive_rag / configure_huggingface.py
lanny xu
modifies bug
a6a67f2
#!/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()