系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

human-in-the-loop

人工介入:在高风险动作前暂停、审批、恢复并留痕

补充说明

Human-in-the-loop(HITL)让 Agent 在关键节点暂停,等待人工确认/补充信息后再继续。它适合不可逆、涉及资金/权限/隐私、或模型置信度低的动作。HITL 不是“所有步骤都让人点一下”,那会造成审批疲劳并拖慢流程;要按风险分级,只拦住真正需要负责人的决策。

实现方式:工具层审批(执行前检查)、工作流中断/恢复(LangGraph interrupt)、任务队列 + 人工处理、以及输出后的人工复核。关键是保存上下文、支持超时/拒绝、记录审批人和理由,并能在恢复后继续执行。

常用示例

# 工具层审批:高风险动作执行前暂停
HIGH_RISK = {"send_email", "delete_record", "run_shell", "transfer_funds"}

def execute_with_approval(tool, args, user, context):
    if tool.name in HIGH_RISK:
        ticket = create_approval(
            user=user, tool=tool.name, args=redact(args),
            context=context, expires_in="30m",
        )
        return {"status": "pending_approval", "ticket_id": ticket.id}
    return tool.run(**args)
# LangGraph:中断后由人工恢复
from langgraph.types import interrupt, Command

def review_node(state):
    decision = interrupt({"question": "是否发送这封邮件?",
                          "draft": state["draft"]})
    if decision["approved"]:
        return {"status": "approved"}
    return {"status": "rejected", "reason": decision.get("reason")}

# 恢复:graph.invoke(Command(resume={"approved": True}), config)
审批设计:
- 风险分级:只拦高风险,低风险自动执行
- 展示上下文:Agent 想做什么、参数、影响范围、可回滚性
- 超时默认拒绝(fail closed)
- 审批人、时间、理由、结果写审计日志
- 拒绝后给出可执行的下一步(修改/取消/转人工)

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. 哪些动作应该触发人工审批?
  2. 审批超时应该默认通过还是拒绝?为什么?
  3. 审批后执行前为什么还要校验参数?
答案
  1. 不可逆、涉及资金/权限/隐私、对外发送、执行命令等高风险动作;低风险只读操作可自动执行。
  2. 默认拒绝(fail closed)。超时意味着没人确认,高风险操作不能默认放行。
  3. 防止审批后被篡改/替换(TOCTOU);执行前校验参数哈希,确保执行的就是审批的内容。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令