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 字段 具体状态 (进行中、已完成、出错)
相关推荐
TF男孩6 小时前
ARQ:一款低成本的消息队列,实现每秒万级吞吐
后端·python·消息队列
该用户已不存在11 小时前
Mojo vs Python vs Rust: 2025年搞AI,该学哪个?
后端·python·rust
站大爷IP13 小时前
Java调用Python的5种实用方案:从简单到进阶的全场景解析
python
用户83562907805119 小时前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
c8i19 小时前
python中类的基本结构、特殊属性于MRO理解
python
liwulin050619 小时前
【ESP32-CAM】HELLO WORLD
python
Doris_202320 小时前
Python条件判断语句 if、elif 、else
前端·后端·python
Doris_202320 小时前
Python 模式匹配match case
前端·后端·python
这里有鱼汤20 小时前
Python量化实盘踩坑指南:分钟K线没处理好,小心直接亏钱!
后端·python·程序员
大模型真好玩21 小时前
深入浅出LangGraph AI Agent智能体开发教程(五)—LangGraph 数据分析助手智能体项目实战
人工智能·python·mcp