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 字段 具体状态 (进行中、已完成、出错)
相关推荐
Superstarimage27 分钟前
使用conda创建python虚拟环境,并自定义路径
windows·python·conda
菜鸡码农,喵。27 分钟前
已经装了pygame但pycharm显示没有该模块/软件包无法加载出来下载pygame
python·pycharm·pygame
小羊Linux客栈33 分钟前
自动化:批量文件重命名
运维·人工智能·python·自动化·游戏程序
shykevin3 小时前
python开发Streamable HTTP MCP应用
开发语言·网络·python·网络协议·http
漫路在线4 小时前
JS逆向-某易云音乐下载器
开发语言·javascript·爬虫·python
成功人chen某7 小时前
配置VScodePython环境Python was not found;
开发语言·python
2301_786964367 小时前
EXCEL Python 实现绘制柱状线型组合图和树状图(包含数据透视表)
python·microsoft·excel
skd89997 小时前
小蜗牛拨号助手用户使用手册
python
「QT(C++)开发工程师」8 小时前
STM32 | FreeRTOS 递归信号量
python·stm32·嵌入式硬件
史迪仔01128 小时前
[python] Python单例模式:__new__与线程安全解析
开发语言·python·单例模式