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 字段 具体状态 (进行中、已完成、出错)
相关推荐
老胖闲聊2 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1182 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
曹勖之3 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
lyaihao4 小时前
使用python实现奔跑的线条效果
python·绘图
ai大师4 小时前
(附代码及图示)Multi-Query 多查询策略详解
python·langchain·中转api·apikey·中转apikey·免费apikey·claude4
小小爬虾5 小时前
关于datetime获取时间的问题
python
蓝婷儿6 小时前
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
开发语言·python·学习
chao_7896 小时前
链表题解——两两交换链表中的节点【LeetCode】
数据结构·python·leetcode·链表
大霞上仙7 小时前
nonlocal 与global关键字
开发语言·python
Mark_Aussie8 小时前
Flask-SQLAlchemy使用小结
python·flask