当前位置: 首页 > article >正文

Ragas自动化评测整体后端流程

生成答案流程

  1. 接口输入
  • 助手 ID agent_id
  • 语料库 ID dataset_id
  • 可选的:问题 ID 的数组 questions
  1. 流程步骤
    1. 根据 agent_id 查询对应 Dify 助手 ID
      • 调用接口,根据传入的 agent_id 获取对应的 dify 助手 ID。
    2. 查询所有问题 ID
      • 根据语料库 ID 查询所有相关问题的 ID。
      • 如果传入了特定的问题 ID 数组,则只查询这些特定的问题。
    3. 根据问题 ID 查询问题详情
      • 获取每个问题的详细信息
    4. 创建测试轮
      • 创建一个新的测试轮,记录当前助手 ID 和语料库 ID,并生成测试轮 ID。
    5. **根据 dify 助手 ID 查询 **api_key
      • 使用 dify 助手 ID 查询对应的 api_key,用于后续调用 Dify API。
    6. 创建 Celery 任务
      • 将问题详情、api_key 和 测试轮 ID 传递给 Celery 任务,进行并发处理。
    7. 返回测试轮 id test_run_id

Celery 逻辑

  1. 根据问题创建线程

    • 为每个问题创建一个线程来处理。目前最大并发 10 个
  2. 创建测试轮结果

    • 在数据库中创建一个空的测试轮结果条目,并获取其 ID。
  3. 根据问题调用 AI 接口返回答案

    • 使用 api_key 调用 Dify AI 接口,传入问题并获取 AI 的回答。
  4. 根据答案、测试轮结果 ID 修改测试轮结果

    • 将 AI 返回的答案更新到对应的测试轮结果中。
  5. 错误处理

    • 轮询判断每一个任务,将错误任务进行标注
  6. 所有问题处理完后修改测试轮 note 字段

    • 根据任务整体情况更改 note 字段 具体状态 (进行中、已完成、出错)

生成评分流程

  1. 接口输入
  • 测试轮 ID test_run_id
  1. 流程步骤
    1. 根据测试轮 ID 获取所有结果 ID
      • 查询指定测试轮中所有的测试结果 ID。
    2. 根据结果 ID 列出测试轮结果详情
      • 获取每个结果的详细信息,包括问题、标答、AI 回答、上下文等。
    3. 创建 Celery 任务
      • 将测试轮结果详情传递给 Celery 任务,进行并发处理。
    4. 任务提交成功
      • { “meg”: “提交成功”}

Celery 逻辑

  1. 根据测试轮结果详情创建线程

    • 为每个测试结果创建一个线程进行评分处理。
  2. 创建测试轮评分结果数据

    • 在数据库中创建一个空的测试轮评分结果条目,并获取其 ID。
  3. 根据详情的 question_id 字段获取标答

    • 获取每个问题的标答内容,用于评分参数的构建。
  4. 构建评分参数

    • 使用问题、标答、AI 回答、上下文等信息构建评分参数。
  5. 根据返回的评分细节、测试轮结果 ID、测试轮评分 ID 修改测试轮评分

    • 将评分细节更新到对应的测试轮评分结果中。
  6. 错误处理

    • 轮询判断每一个任务,将错误任务进行标注
  7. 所有问题处理完后修改测试轮 note 字段

    • 根据任务整体情况更改 note 字段 具体状态 (进行中、已完成、出错)

重跑答案流程

  1. 接口输入
  • 测试轮 ID test_run_id
  • 问题 ID questions
  • 测试论结果 ID test_result_id
  1. 流程步骤
    1. 根据 agent_id 查询对应 Dify 助手 ID
      • 调用接口,根据传入的 agent_id 获取对应的 dify 助手 ID。
    2. 根据问题 ID 查询问题详情
      • 获取每个问题的详细信息
    3. **根据 dify 助手 ID 查询 **api_key
      • 使用 dify 助手 ID 查询对应的 api_key,用于后续调用 Dify API。
    4. 创建 Celery 任务
      • 将问题详情、api_key 和 测试轮 ID 传递给 Celery 任务,进行并发处理。
    5. 返回测试轮 id test_run_id

Celery 逻辑

  1. 根据问题创建线程

    • 为每个问题创建一个线程来处理。目前最大并发 10 个
  2. 根据问题调用 AI 接口返回答案

    • 使用 api_key 调用 Dify AI 接口,传入问题并获取 AI 的回答。
  3. 根据答案、测试轮结果 ID 修改测试轮结果

    • 将 AI 返回的答案更新到对应的测试轮结果中。
  4. 错误处理

    • 轮询判断每一个任务,将错误任务进行标注
  5. 所有问题处理完后修改测试轮 note 字段

    • 根据任务整体情况更改 note 字段 具体状态 (进行中、已完成、出错)

重跑评分流程

  1. 接口输入
  • 测试轮 ID test_run_id
  • 测试论结果 ID test_result_id
  • 评分结果 ID ragas_score_id
  1. 流程步骤
    1. 根据测试轮结果 ID 列出测试轮结果详情
      • 获取每个结果的详细信息,包括问题、标答、AI 回答、上下文等。
    2. 创建 Celery 任务
      • 将测试轮结果详情传递给 Celery 任务,进行并发处理。
    3. 任务提交成功
      • { “meg”: “提交成功”}

Celery 逻辑

  1. 根据测试轮结果详情创建线程

    • 为每个测试结果创建一个线程进行评分处理。
  2. 根据详情的 question_id 字段获取标答

    • 获取每个问题的标答内容,用于评分参数的构建。
  3. 构建评分参数

    • 使用问题、标答、AI 回答、上下文等信息构建评分参数。
  4. 根据返回的评分细节、测试轮结果 ID、测试轮评分 ID 修改测试轮评分

    • 将评分细节更新到对应的测试轮评分结果中。
  5. 错误处理

    • 轮询判断每一个任务,将错误任务进行标注
  6. 所有问题处理完后修改测试轮 note 字段

    • 根据任务整体情况更改 note 字段 具体状态 (进行中、已完成、出错)

http://www.kler.cn/a/460502.html

相关文章:

  • C# 设计模式(结构型模式):组合模式
  • h5页面在安卓手机被软键盘弹起引起的bug
  • HarmonyNext 鸿蒙开发中,在H5 页面如何下载图片保存到媒体库。
  • 机器学习-感知机-神经网络-激活函数-正反向传播-梯度消失-dropout
  • 活动预告 |【Part2】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识
  • 谷歌广告关键词出价根据什么来判断?
  • 平凡的2024回顾
  • 【每日学点鸿蒙知识】广告ID、NFC手机充值、CSS支持语法、PC与模拟器交互、SO热更新等
  • 前端实现PDF预览的几种选择(pdfjs-dist、react-pdf、pdf-viewer)
  • 嵌入式科普(25)Home Assistant米家集成意味着IOT的核心是智能设备
  • 形象地理解UE4中的数据结构 TLinkedListBase
  • [极客大挑战 2019]LoveSQL 1解题思路
  • Java多线程中,synchronized和ReentrantLock的区别是什么?及使用场景有哪些?
  • html+css网页设计 美食 美食美客模版2个页面
  • python 选择排序(Selection Sort)
  • 纯前端实现将pdf转为图片(插件pdfjs)
  • 优化大肠杆菌菌株和发酵工艺以提高L-赖氨酸生产-文献精读94
  • 如何修复 WordPress 中的“Error establishing a database connection”问题
  • DeepSeek-V3-Base 模型技术解析
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之10 方案再探:特定于领域的模板 之1 随想交流
  • 口语笔记——感官+花费
  • MySQL数据库的锁
  • ubuntu 使用samba与windows共享文件[注意权限配置]
  • 留学生该如何进行文学分析类的essay写作
  • 分析电控发动机常见故障原因
  • vue使用el-select下拉框自定义复选框