截至2024年3月,我们已使用新的测试用例进行了修订的v2.0基准。请参阅我们的更新论文以获取更多详细信息。
[演示] [网站] [纸]
此存储库包含规则的代码:遵守规则的语言评估方案,这是评估语言模型中规则遵循的基准。
SimonSays和Questions方案中的问题,增加了对Google Vertexai API模型的支持。请使用python -m llm_rules.scripts.reevaluate重新评估现有结果。llm_rules库。--conv_template为--fastchat_template 。 pip install -e .
要使用我们的API包装器( llm_rules/models/* )评估模型,请安装可选依赖项:
pip install -e .[models]
.env文件: OPENAI_API_KEY=<key>
ANTHROPIC_API_KEY=<key>
GEMINI_API_KEY=<key>
GCP_PROJECT_ID=<project_id>
>>> from huggingface_hub import snapshot_download
>>> snapshot_download(repo_id="meta-llama/Llama-2-7b-chat-hf", local_dir="/my_models/Llama-2-7b-chat-hf", local_dir_use_symlinks=False)
logs/ 。 启动一个交互式会话:
python -m llm_rules.scripts.manual_redteam --provider openai --model gpt-3.5-turbo-0613 --scenario Authentication --stream
用以下方式可视化测试用例
python -m llm_rules.scripts.show_testcases --test_suite redteam
我们的主要评估脚本是llm_rules/scripts/evaluate.py ,但是由于我们支持许多评估选项,因此很难遵循代码。有关评估脚本的简化版本,请参见llm_rules/scripts/evaluate_simple.py 。
我们将API呼叫与无限恢复,以易于评估。您可能需要更改重试功能以适应您的需求。
redteam测试套件上评估 python -m llm_rules.scripts.evaluate --provider openai --model gpt-3.5-turbo-0613 --test_suite redteam --output_dir logs/redteam
使用VLLM评估模型时, evaluate.py启动了API服务器内部过程。对于VLLM模型,应将并发设置更高。运行评估:
python -m llm_rules.scripts.evaluate --provider vllm --model /path/to/model --fastchat_template llama-2 --concurrency 100
查看单个测试套件的详细结果:
python -m llm_rules.scripts.read_results --output_dir logs/redteam/gpt-3.5-turbo-0613
在评估了所有三个测试套件(良性,基本和redteam)之后,计算总规则得分:
python -m llm_rules.scripts.read_scores --model_name gpt-3.5-turbo-0613
最后,您可以通过以下方式查看对单个测试案例的回答
python -m llm_rules.scripts.show_responses --output_dir logs/redteam/gpt-3.5-turbo-0613 --failed_only
在每次迭代中使用随机方案参数运行GCG攻击:
cd gcg_attack
python main_gcg.py --model /path/to/model --fastchat_template <template_name> --scenario Authentication --behavior withholdsecret
输出日志将存储在logs/gcg_attack中。
然后,用最终的GCG后缀评估direct_request测试用例的模型:
python -m llm_rules.scripts.evaluate --provider vllm --model /path/to/model --suffix_dir logs/gcg_attack/<model_name> --test_dir data/direct_request --output_dir logs/direct_request_gcg
用Llama-2 7b聊天在basic_like测试案例上重现我们的微调实验:
cd finetune
./finetune_llama.sh
我们使用4x A100-80G GPU进行微调Llama-2 7b聊天和Mismtral 7b指令,您可以调整DeepSpeed设置以在较小/较少的GPU上运行。
在评估社区模型时,我们主要依靠FastChat对话模板(在model_templates.yaml中记录),除了添加到llm_rules/templates.py中的一些自定义模板。
@article{mu2023rules,
title={Can LLMs Follow Simple Rules?},
author={Norman Mu and Sarah Chen and
Zifan Wang and Sizhe Chen and David Karamardian and
Lulwa Aljeraisy and Basel Alomair and
Dan Hendrycks and David Wagner},
journal={arXiv},
year={2023}
}