Files

2.3 KiB
Raw Permalink Blame History

Functional Spec: 置信度评分与用户反馈机制

REQ-1:置信度 LLM 自评

  • Agent 对话(executeChat / executeChatComplex)成功后,异步调用 EvaluationService。
  • EvaluationService 构造 Prompt,调用 ChatModel,要求输出纯 JSON:{"confidence": 0-100, "reasoning": "...", "source": "llm"}。
  • 若 JSON 解析成功,写入 DiagnosisSession.selfEvaluation。
  • 若调用失败或解析失败,转入规则兜底(REQ-2)。
  • 验收:对话结束后数秒内,DB diagnosis_session.self_evaluation 非 null,且 source 字段存在。

REQ-2:置信度规则兜底

  • 触发条件:LLM 自评失败(任何异常)。
  • 规则:基础分 60 + toolCallCount×5(上限+20)+ (stepCount<=3 ? +10 : 0),status=FAILED 则直接 0。
  • 结果写入 selfEvaluation,含 "source": "rule"。
  • 验收:LLM 自评失败时,self_evaluation 仍有值(非 null),且 source=rule。

REQ-3:反馈接收 API

  • 接口:POST /api/feedback
  • 入参:{ "sessionId": "xxx", "feedback": "useful" | "not_useful" }
  • 出参:{ "success": true/false, "message": "...", "caseId": "uuid 或 null" }
  • 校验:sessionId 不能为空;feedback 只能是 useful 或 not_useful,否则返回 400。
  • 验收:接口返回 200,DB 对应行 feedback 字段有值。

REQ-4:useful → 案例沉淀

  • 触发条件:feedback = "useful"。
  • 操作:在 case_library 插入一条记录,caseId=UUID,sourceType=AUTO,faultCategory=GENERAL, title=query 前 100 字,rootCause/solution 来自最后一步 agent_step.thought。
  • 响应中返回 caseId。
  • 验收:提交 useful 后,case_library 表新增一行,diagnosis_id = sessionId。

REQ-5:not_useful → BAD_CASE 标记

  • 触发条件:feedback = "not_useful"。
  • 操作:feedback 字段本身即为标记,不修改 status 字段(status 保持执行状态语义)。
  • 查询 BadCase 使用:WHERE feedback = 'not_useful'。
  • 验收:提交 not_useful 后,DB diagnosis_session.feedback = "not_useful",status 不变。

REQ-6:幂等性

  • 同一 sessionId 重复提交 feedback,覆盖写入(不报错,不重复创建 CaseLibrary)。
  • 已有 case_library 记录时(diagnosisId 已存在),跳过插入并返回已有 caseId。