Files
YG_LLM_TESTER/README.md

5.5 KiB
Raw Blame History

大模型微调验证系统

为模型评估添加了LLM评分LLM评价理由两个新指标结合传统指标BLEU、ROUGE-L等提供全面的评估方案。

核心特性

双重评估模式

  1. 模拟评估模式(默认)

    • 无需配置,立即可用
    • 基于传统指标的智能评分
    • 运行速度快,无额外成本
  2. 真实LLM评估模式

    • 使用OpenAI GPT等大语言模型
    • 提供语义级别的智能评分
    • 详细的评价理由和改进建议

📊 评估维度

  1. 答案准确性 - 与参考答案的一致性
  2. 逻辑清晰度 - 答案逻辑和条理性
  3. 完整性 - 是否遗漏关键信息
  4. 表达质量 - 语言流畅度和专业性

评分范围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)

注意事项

  1. 默认模式系统默认使用模拟评估无需API
  2. API调用真实LLM评估需要有效的API密钥
  3. 并发限制批量评估时建议控制并发数避免API限制
  4. 数据备份:评估前请备份原始数据
  5. 结果验证:建议先使用模拟模式验证数据格式

常见问题

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会产生费用建议先用模拟模式测试整个流程。