Files
012-kaopeilian/docs/规划/全链路联调/Ai工作流/知识点拆解工作流.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

3.0 KiB
Raw Permalink Blame History

知识拆解 (Dify):管理员上传课程文件(如 PDF、WordDify 工作流会自动启动,对文档进行深度分析、拆解、提炼,形成结构化的知识点,写入数据库,为后续的动态考试和课程问答提供数据基础。当然也可手动在课程编辑页面的学习资料与知识点管理中,点击重新分析。 注意是每上传一个文件就启动一次

要启动的是一个 dify 工作流 api 服务器:http://dify.ireborn.com.cn/v1 api 密钥app-LZhZcMO6CiriLMOLB2PwUGHx workflow_id80cc2d27-f028-4bf1-9ac0-59742ae1cdab api 文档地址(可用 mcp 工具查看):https://dify.ireborn.com.cn/app/6713de7f-d98d-4f0a-8e1d-5ad8b4496211/develop

需要提交的必填参数(全部必填):

  • file管理员上传的课程文件单个文件需上传
  • course_name即课程主题
  • course_id即课程 id
  • material_id资料ID

该工作流会拆解知识点后直接写入数据库

实现经验2025-09-23

核心实现

  • 后端:app/services/ai/knowledge_analysis.py - 知识点分析服务
  • APIPOST /api/v1/courses/{id}/reanalyze - 重新分析接口
  • 前端:课程编辑页面添加"重新分析"按钮,上传资料后自动触发

关键技术点

  1. 文件处理先上传文件到Dify获取file_id再调用工作流
  2. 调用格式
# 1. 上传文件
POST /files/upload (multipart/form-data)
# 2. 调用工作流  
POST /workflows/run (JSON格式使用upload_file_id)
  1. 工作流参数修正file 为单对象)
{
  "inputs": {
    "file": {"type": "document", "transfer_method": "local_file", "upload_file_id": "file_id"},
    "course_name": "课程标题",
    "course_id": 课程ID,
    "material_id": 资料ID
  },
  "response_mode": "blocking",
  "user": "system_user_{course_id}"
}
  1. 异步处理使用BackgroundTasks避免阻塞用户操作
  2. 日志规范使用f-string格式避免关键字参数
  3. 网络配置将dify.ireborn.com.cn加入no proxy列表

验证完成

  • 前端按钮正常工作API调用成功返回200
  • 后台任务正常执行文件上传到Dify成功
  • Dify工作流成功触发workflow_run_id已生成
  • Dify工作流回调失败尝试调用 https://aiedu.ireborn.com.cn/dev-api/system/knowledge

关键发现2025-09-23

问题: Dify工作流成功启动但执行失败

  • 工作流ID: 80cc2d27-f028-4bf1-9ac0-59742ae1cdab
  • 错误: Reached maximum retries (0) for URL http://localhost:8000/api/v1/system/knowledge(示例)

原因: Dify工作流配置的回调URL需与当前环境一致在本地联调时应使用本地地址

解决方案:

  1. 修改Dify工作流配置将回调URL改为本地地址: http://localhost:8000/api/v1/system/knowledge
  2. 或者在公网环境部署API端点供Dify回调

已创建回调API: POST /api/v1/system/knowledge - 接收Dify工作流的知识点数据

workflow_id: 80cc2d27-f028-4bf1-9ac0-59742ae1cdab