plan-sess_0ad6e05f-b515-4867-a76e-4f3585997734.md 1.9 KB

实现方案

改动范围

仅修改 api/routes.py 一个文件,不涉及 agents/vent_agent.pytools/vent_tools.py

具体改动

1. 请求模型新增 mode 字段

  • TunClickInterpretRequestDeviceClickInterpretRequest 各加一个字段:

    mode: str = Field("plan", description="解读模式:plan(智能体+技能)或 fast(直接生成报告)")
    
  • 默认 "plan",保持向后兼容。

2. 新增 Fast 模式系统提示词(两个常量)

直接嵌入 SKILL.md 中的报告模板(巷道 + 设备),包含:

  • 报告固定输出格式
  • 风险分级标准(风速/风量/报警)
  • 行为规范(不编造数据、只用简体中文、不暴露ID等)

3. 新增 _get_chat_model() 辅助函数

agents.vent_agent 导入 _get_model,包装一层确保始终返回 BaseChatModel 实例(处理可能返回字符串的边界情况)。

4. 新增两个 Fast SSE 生成器

  • _fast_tun_sse_generator(tun_id, tun_name, thread_id, session_id)
    1. 直接调用 query_tun_data_by_id(tun_id) 获取数据
    2. 将数据 + 系统提示词发给 LLM
    3. 流式输出 SSE(thinking → executing → token → done)
  • _fast_device_sse_generator(device_id, device_name, device_type, thread_id, session_id):同上逻辑,调用 query_device_data_by_id

5. 路由处理器分支

click_interpret_tunclick_interpret_device 中:

if req.mode == "fast":
    return StreamingResponse(_fast_xxx_generator(...), ...)
# 否则走原有 plan 逻辑

关键设计决策

  • Fast 模式不调用 Agent:跳过 skill 加载、工具调用循环、知识库检索,直接 LLM 生成报告
  • Fast 模式不查知识库:LLM 凭训练知识给出规程引用,速度优先
  • SSE 事件格式与 plan 模式兼容:前端无需改动
  • 模板定义在系统提示词中:不使用 skills 目录,直接在 routes.py 中定义