5.5 KiB
5.5 KiB
大模型微调验证系统
为模型评估添加了LLM评分和LLM评价理由两个新指标,结合传统指标(BLEU、ROUGE-L等),提供全面的评估方案。
核心特性
✨ 双重评估模式
-
模拟评估模式(默认)
- ✅ 无需配置,立即可用
- ✅ 基于传统指标的智能评分
- ✅ 运行速度快,无额外成本
-
真实LLM评估模式
- 使用OpenAI GPT等大语言模型
- 提供语义级别的智能评分
- 详细的评价理由和改进建议
📊 评估维度
- 答案准确性 - 与参考答案的一致性
- 逻辑清晰度 - 答案逻辑和条理性
- 完整性 - 是否遗漏关键信息
- 表达质量 - 语言流畅度和专业性
评分范围:1-10分
快速开始
1. 安装依赖
# 安装核心依赖
pip install -r requirements.txt
# 或手动安装
pip install numpy pandas openpyxl nltk jieba tqdm xlrd
# 如需使用真实LLM API,安装OpenAI库
pip install openai
2. 运行评估(模拟模式 - 默认)
python model_evaluation.py
- ✅ 无需配置,立即可用
- ✅ 基于传统指标的智能评分
- ✅ 运行速度快
3. 启用真实LLM评估
# 设置API密钥
export OPENAI_API_KEY="your-api-key"
export API_BASE_URL="http://10.10.10.122:1234/v1" # 可选
# 编辑 llm_config.py,设置 USE_REAL_LLM = True
# 运行评估
python model_evaluation.py
4. 单个评估测试
python -c "from model_evaluation import test_single_evaluation; test_single_evaluation()"
文件结构
LLMS_FT_Test/
├── model_evaluation.py # 主文件(已整合所有评估功能)
├── llm_config.py # 配置文件(API密钥、评估模式等)
├── requirements.txt # 依赖列表
└── README.md # 本文档
输出文件
{文件名}_evaluation.xlsx- 单个文件评估结果evaluation_summary.xlsx- 汇总报告all_detailed_results.xlsx- 详细结果
评估指标
传统指标(无需LLM API)
- BLEU分数:基于n-gram的精确度
- ROUGE-L分数:基于最长公共子序列的F1分数
- 字符重叠率:字符级别的重叠程度
- 长度相似度:答案长度的相似性
- 完全匹配率:完全匹配的比例
- 关键词重叠率:关键词的重叠程度
LLM评估(需API)
- 智能评分:基于语义理解的1-10分评分
- 评价理由:详细的评分依据和改进建议
支持的API
- OpenAI API (GPT-3.5, GPT-4, GPT-4-turbo)
- 兼容OpenAI API的服务(如自定义部署的API)
- 可扩展支持其他提供商(Anthropic Claude、通义千问等)
数据格式
支持 .json 和 .jsonl 格式:
JSON格式(数组):
[
{
"question": "问题内容",
"answer": "参考答案",
"output": "模型输出"
}
]
JSONL格式(每行一个JSON):
{"question": "问题1", "answer": "答案1", "output": "输出1"}
{"question": "问题2", "answer": "答案2", "output": "输出2"}
配置选项
编辑 llm_config.py 文件:
# 使用模拟评估(默认,无需配置)
USE_REAL_LLM = False
# 或使用真实LLM API(需配置API密钥)
USE_REAL_LLM = True
运行以下命令查看所有配置选项:
python llm_config.py
自定义评估
from model_evaluation import ModelEvaluator
from llm_config import USE_REAL_LLM
evaluator = ModelEvaluator()
# 准备数据
question = "什么是机器学习?"
reference = "机器学习是人工智能的一个分支..."
candidate = "机器学习是一种让计算机学习的方法..."
# 获取LLM评估
prompt = evaluator.get_llm_evaluation_prompt(reference, candidate, question)
if USE_REAL_LLM:
score, reason = evaluator.call_llm_for_evaluation(prompt)
else:
score, reason = evaluator.get_mock_llm_evaluation(reference, candidate, question)
# 计算传统指标
metrics = evaluator.evaluate_all_metrics(reference, candidate)
注意事项
- 默认模式:系统默认使用模拟评估(无需API)
- API调用:真实LLM评估需要有效的API密钥
- 并发限制:批量评估时建议控制并发数,避免API限制
- 数据备份:评估前请备份原始数据
- 结果验证:建议先使用模拟模式验证数据格式
常见问题
Q: 如何切换到模拟评估模式?
A: 在 llm_config.py 中设置 USE_REAL_LLM = False
Q: 模拟评估的权重如何调整?
A: 修改 llm_config.py 中的 EVALUATION_WEIGHTS 字典
Q: 如何添加新的评估指标?
A: 在 ModelEvaluator 类中添加新的计算方法,并在 evaluate_all_metrics 中调用
Q: 支持哪些LLM提供商? A: 目前支持OpenAI GPT系列,可扩展支持其他兼容的API
更新日志
v2.0(整合版)
- ✅ 整合所有功能到
model_evaluation.py - ✅ 新增
test_single_evaluation()测试函数 - ✅ 删除独立的测试文件和示例文件
- ✅ 保留
llm_config.py作为配置文件 - ✅ 优化代码结构和导入关系
- ✅ 精简项目结构,减少重复文件
- ✅ 合并所有文档到README.md
v1.0(原始版)
- 基础评估功能
- 模拟评估模式
- 真实LLM评估模式
许可证
本项目采用 MIT 许可证。
贡献
欢迎提交 Issue 和 Pull Request 来改进项目。
联系方式
如有问题或建议,请在项目页面提交 Issue。
⚠️ 重要提醒:使用真实LLM API会产生费用,建议先用模拟模式测试整个流程。