# ragaslike-dify **Repository Path**: leke_code/likeragas-dify ## Basic Information - **Project Name**: ragaslike-dify - **Description**: 基于Dify与仿ragas的RAG测评 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-10-09 - **Last Updated**: 2026-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RAG 评估流水线 基于 Dify 工作流与 LLM-as-a-judge 的 RAG 系统自动化评估工具,支持 7 项核心指标,全面衡量检索增强生成的质量。 ## ✨ 功能特性 - **一键评估**:输入问题与标准答案,自动调用 Dify 应用获取答案和检索上下文。 - **七大专用指标**:使用独立的大模型(LLM)对答案进行逐项评分,每个指标都有定制的提示词。 - 忠实度(Faithfulness) - 答案相关性(Answer Relevancy) - 上下文精确率(Context Precision) - 上下文召回率(Context Recall) - 答案正确性(Answer Correctness) - 噪声敏感度(Noise Sensitivity) - 上下文实体召回率(Context Entity Recall) - **并行执行**:7 个评估任务并发运行,大幅缩短总耗时。 - **灵活配置**:支持通过命令行参数指定 API 端点、模型、密钥等。 - **结构化报告**:输出每个指标的得分和详细理由,便于分析和优化。 ## 📦 安装与依赖 1. 克隆或下载本仓库。 2. 安装 Python 依赖(推荐使用虚拟环境): ```bash pip install requests ``` ## 🚀 快速开始 ### 基础用法 ```bash python main.py \ --question "你的问题" \ --ground-truth "标准答案" \ --dify-api-key "app-xxxxx" \ --eval-api-key "sk-xxxxx" ``` ### 完整参数示例 ```bash python main.py \ --question "新生儿PICC置管首选哪条静脉?" \ --ground-truth "右大隐静脉" \ --dify-api-key "app-WY5gfnK1pkq24BgRU0w950Dm" \ --eval-api-key "sk-7bbb00de0bda4456acc5316bb2b76098" \ --eval-model "qwen3.6-plus" \ --dify-api-base "https://dify.17vision.com/v1/chat-messages" \ --eval-api-url "https://dashscope.aliyuncs.com/compatible-mode/v1" ``` ## 📋 参数说明 | 参数 | 必填 | 默认值 | 说明 | |------|------|--------|------| | `--question` | ✅ | 无 | 用户提出的问题 | | `--ground-truth` | ✅ | 无 | 该问题的标准答案(参考答案) | | `--dify-api-key` | ✅ | 无 | Dify 应用的 API Key(Bearer Token) | | `--eval-api-key` | ✅ | 无 | 评估 LLM 的 API Key(如阿里云 DashScope) | | `--eval-model` | ❌ | `qwen3.6-plus` | 评估使用的模型名称 | | `--dify-api-base` | ❌ | `https://dify.17vision.com/v1/chat-messages` | Dify API 完整地址 | | `--eval-api-url` | ❌ | `https://dashscope.aliyuncs.com/compatible-mode/v1` | 评估 LLM API 基础地址 | ## 📁 项目文件结构 ``` . ├── main.py # 主入口,流水线控制 ├── dify_client.py # Dify API 调用与响应解析 ├── evaluator.py # 7 个专用评估函数(每个指标一个) ├── config.py # 全局配置常量 ├── README.md # 本文件 └── .gitignore # 排除文件清单 ``` ## ⚙️ 工作流程 1. **Dify 调用**:向 Dify 对话应用发送 `question`,获取原始回答。 2. **内容提取**:从回答中解析 `final_answer`(最终答案)和 `retrieved_content`(检索到的上下文)。 3. **并行评估**:使用 7 个独立的 LLM 调用,分别计算各指标得分。 4. **报告输出**:汇总所有得分和理由,打印到控制台。 ## 🧪 输出示例 ``` ===== Dify 响应 ===== ✅ 状态码: 200 📝 最终答案: 根据《新生儿经外周置入中心静脉导管操作及管理指南(2021)》... 📚 检索到的上下文: 1. question: ... \nanswer: ... Step 2: 正在并行执行 7 项 RAG 评估指标... ============================================================ 📊 最终评估报告 ============================================================ 📌 [忠实度] 得分: 1.0000 💬 理由: 回答中的每一个事实性陈述都能从上下文中得到直接支持。 ... ``` ## ⚠️ 注意事项 - **API 超时**:Dify 调用默认超时 1200 秒,评估调用超时 120 秒,可根据网络情况调整 `timeout` 参数。 - **上下文提取**:`dify_client.py` 会尝试从 `answer` 字段中解析 JSON 格式的 `final_answer` 和 `last_retrieved_content`。如果你的 Dify 应用返回格式不同,请相应修改解析逻辑。 - **模型名称**:请确保 `--eval-model` 对应的模型在评估 API 服务上可用,且 API Key 有相应权限。 - **并发限制**:并行执行 7 个评估请求,注意 API 服务的并发限制,如有需要可调整 `max_workers`。 ## 🔧 自定义与扩展 - **替换评估模型**:修改 `config.py` 中的 `DEFAULT_EVAL_MODEL` 或通过 `--eval-model` 指定。 - **修改提示词**:在 `evaluator.py` 中调整每个函数的 `prompt` 内容,以适配不同评估标准。 - **增加新指标**:仿照现有函数,在 `evaluator.py` 中添加新函数,并在 `main.py` 的 `evaluation_tasks` 列表中注册。 ## 📄 许可证 本项目仅供学习和研究使用,请遵守相关 API 服务的使用条款。 ## 🤝 贡献 欢迎提交 Issue 或 Pull Request 来改进本工具。