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 字段 具体状态 (进行中、已完成、出错)
相关推荐
Rock_yzh5 小时前
AI学习日记——参数的初始化
人工智能·python·深度学习·学习·机器学习
青衫客366 小时前
基于 Python 构建的安全 gRPC 服务——TLS、mTLS 与 Casbin 授权实战
python·安全·微服务
-dzk-7 小时前
【3DGS复现】Autodl服务器复现3DGS《简单快速》《一次成功》《新手练习复现必备》
运维·服务器·python·计算机视觉·3d·三维重建·三维
摩羯座-185690305948 小时前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
ACERT3338 小时前
5.吴恩达机器学习—神经网络的基本使用
人工智能·python·神经网络·机器学习
韩立学长9 小时前
【开题答辩实录分享】以《基于python的奶茶店分布数据分析与可视化》为例进行答辩实录分享
开发语言·python·数据分析
2401_831501739 小时前
Python学习之day03学习(文件和异常)
开发语言·python·学习
可触的未来,发芽的智生10 小时前
触摸未来2025.10.06:声之密语从生理构造到神经网络的声音智能革命
人工智能·python·神经网络·机器学习·架构
Zwb29979210 小时前
Day 24 - 文件、目录与路径 - Python学习笔记
笔记·python·学习
hui函数10 小时前
python全栈(基础篇)——day03:后端内容(字符串格式化+简单数据类型转换+进制的转换+运算符+实战演示+每日一题)
开发语言·后端·python·全栈