第 13 章:人机协同

人机协同(Human-in-the-Loop,HITL)模式在 Agent 的开发和部署中扮演着关键战略角色。它巧妙地将人类认知的独特优势——如判断力、创造力和细致入微的理解——与 AI 的计算能力和效率相结合。这种战略整合不仅是可选方案,在许多情况下更是必要之举,尤其是在 AI 系统日益深入关键决策过程的当下。

HITL 的核心原则在于确保 AI 在道德边界内运行,遵守安全规范,并以最高效率达成目标。在复杂度高、模糊性强或风险重大的领域中,AI 错误或误解可能带来严重后果,这些关注点显得尤为突出。在此类场景中,完全自主——即 AI 系统在无人工干预下独立运行——往往并非明智之选。HITL 正视这一现实,强调即使 AI 技术飞速发展,人类监督、战略输入和协作互动依然不可或缺。

HITL 方法从根本上围绕人工智能与人类智能的协同理念展开。它并非将 AI 视为人类工作者的替代品,而是将其定位为增强和提升人类能力的工具。这种增强可呈现多种形式,从自动化常规任务到提供数据驱动的见解来辅助人类决策。最终目标是建立一个协作生态系统,让人工和 AI Agent 都能发挥各自优势,实现单方难以达成的成果。

在实践中,HITL 可通过多种方式实施。常见做法是让人类担任验证者或审查者,检查 AI 输出以确保准确性并识别潜在错误。另一种实现方式是人类主动引导 AI 行为,实时提供反馈或进行纠正。在更复杂的设置中,人类可与 AI 作为合作伙伴,通过交互式对话或共享界面共同解决问题或制定决策。无论具体实施方式如何,HITL 模式都强调维护人类控制与监督的重要性,确保 AI 系统与人类道德、价值观、目标及社会期望保持一致。

人机协同模式概述

人机协同(HITL)模式通过整合人工智能与人类输入来增强 Agent 能力。这种方法承认,最优的 AI 性能通常需要自动化处理与人类洞察的结合,特别是在高度复杂或涉及道德考量的场景中。HITL 的目标并非取代人类输入,而是通过确保关键判断和决策基于人类理解来增强人类能力。

HITL 包含几个关键方面:人类监督涉及监控 AI Agent 的性能和输出(例如通过日志审查或实时仪表板),以确保遵循指南并防止不良结果。干预和纠正发生在 AI Agent 遇到错误或模糊场景并请求人工干预时;人类操作员可纠正错误、提供缺失数据或指导 Agent,这些信息也有助于未来 Agent 的改进。学习的人类反馈被收集并用于完善 AI 模型,在带有人类反馈的强化学习等方法中尤为突出,人类偏好直接影响 Agent 的学习轨迹。决策增强是指 AI Agent 向人类提供分析和建议,由人类做出最终决定,通过 AI 生成的见解而非完全自主来增强人类决策。人机协作是一种合作互动,人类和 AI Agent 贡献各自优势;常规数据处理可由 Agent 处理,而创造性问题解决或复杂谈判则由人类管理。最后,升级策略是建立的协议,规定 Agent 何时以及如何将任务升级给人类操作员,防止在超出 Agent 能力范围时出现错误。

实施 HITL 模式使得在完全自主不可行或不被允许的敏感行业中使用 Agent 成为可能。它还通过反馈循环提供了持续改进的机制。例如在金融领域,大型企业贷款的最终批准需要人类贷款官员评估诸如领导层品格等定性因素。同样在法律领域,正义和问责制的核心原则要求人类法官保留对涉及复杂道德推理的关键决定(如量刑)的最终权威。

注意事项:尽管 HITL 模式具有诸多优势,但也存在重要注意事项,其中最主要的是可扩展性不足。虽然人类监督提供了高精度,但操作员无法管理数百万个任务,这造成了基本权衡,通常需要采用混合方法,结合自动化实现规模化和 HITL 实现准确性。此外,此模式的有效性在很大程度上依赖于人类操作员的专业知识;例如虽然 AI 可以生成软件代码,但只有熟练的开发人员才能准确识别细微错误并提供正确修复指导。这种对专业知识的需求同样适用于使用 HITL 生成训练数据时,人类标注员可能需要特殊培训才能学会如何以产生高质量数据的方式纠正 AI。最后,实施 HITL 会引发重大隐私问题,因为敏感信息在暴露给人类操作员之前通常必须严格匿名化,这增加了流程复杂性。

实际应用和用例

人机协同模式在广泛的行业和应用中至关重要,特别是在准确性、安全性、道德考量或细致入微的理解极为重要的领域。

此模式体现了 AI 实施的实用方法。它利用 AI 实现增强的可扩展性和效率,同时保持人类监督以确保质量、安全性和道德合规性。

“人在循环外”(Human-on-the-loop)是此模式的一个变体,其中人类专家定义总体策略,然后 AI 处理即时操作以确保合规性。考虑以下两个例子:

实践代码示例

为演示人机协同模式,ADK Agent 可识别需要人工审查的场景并启动升级过程。这允许在 Agent 的自主决策能力有限或需要复杂判断时进行人工干预。此功能并非孤立存在;其他流行框架也采用了类似能力。例如,LangChain 同样提供了实现此类交互的工具。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
from google.adk.agents import Agent
from google.adk.tools.tool_context import ToolContext
from google.adk.callbacks import CallbackContext
from google.adk.models.llm import LlmRequest
from google.genai import types
from typing import Optional

## 工具占位符(如需请替换为实际实现)
def troubleshoot_issue(issue: str) -> dict:
   return {"status": "success", "report": f"Troubleshooting steps for {issue}."}

def create_ticket(issue_type: str, details: str) -> dict:
   return {"status": "success", "ticket_id": "TICKET123"}

def escalate_to_human(issue_type: str) -> dict:
   # 在真实系统中,这通常会转移到人工队列
   return {"status": "success", "message": f"Escalated {issue_type} to a human specialist."}

technical_support_agent = Agent(
   name="technical_support_specialist",
   model="gemini-2.0-flash-exp",
   instruction="""
您是我们电子公司的技术支持专家。

首先,检查用户在 state["customer_info"]["support_history"] 中是否有支持历史记录。
如果有,请在您的回复中引用此历史记录。

对于技术问题:
1. 使用 troubleshoot_issue 工具分析问题。
2. 指导用户完成基本故障排除步骤。
3. 如果问题持续存在,使用 create_ticket 记录问题。

对于超出基本故障排除的复杂问题:
1. 使用 escalate_to_human 转接给人类专家。

保持专业但富有同理心的语气。承认技术问题可能引起的挫败感,同时提供明确的解决步骤。
   """,
   tools=[troubleshoot_issue, create_ticket, escalate_to_human]
)

def personalization_callback(
   callback_context: CallbackContext, llm_request: LlmRequest
) -> Optional[LlmRequest]:
   """将个性化信息添加到 LLM 请求中。"""
   # 从状态获取客户信息
   customer_info = callback_context.state.get("customer_info")
   
   if customer_info:
       customer_name = customer_info.get("name", "valued customer")
       customer_tier = customer_info.get("tier", "standard")
       recent_purchases = customer_info.get("recent_purchases", [])
       
       personalization_note = (
           f"\n重要的个性化信息:\n"
           f"客户姓名:{customer_name}\n"
           f"客户等级:{customer_tier}\n"
       )
       
       if recent_purchases:
           personalization_note += f"最近购买:{', '.join(recent_purchases)}\n"
       
       if llm_request.contents:
           # 在第一个内容之前添加为系统消息
           system_content = types.Content(
               role="system", parts=[types.Part(text=personalization_note)]
           )
           llm_request.contents.insert(0, system_content)
   
   return None  # 返回 None 以继续修改后的请求

此代码提供了使用 Google ADK 创建技术支持 Agent 的蓝图,围绕 HITL 框架设计。Agent 充当智能第一线支持,配置了特定指令,并配备了 troubleshoot_issue、create_ticket 和 escalate_to_human 等工具来管理完整的支持工作流。升级工具是 HITL 设计的核心部分,确保复杂或敏感案例传递给人类专家。

此架构的一个关键特性是其深度个性化能力,通过专用回调函数实现。在联系 LLM 之前,此函数动态检索客户特定数据——如姓名、等级和购买历史——从 Agent 状态中。然后将此上下文作为系统消息注入提示词中,使 Agent 能够提供高度定制和知情的响应,引用用户历史记录。通过将结构化工作流与基本人类监督和动态个性化相结合,此代码展示了 ADK 如何促进开发复杂且强大的 AI 支持解决方案。

概览

是什么:AI 系统(包括高级 LLM)通常在需要细致入微判断、道德推理或对复杂模糊上下文深刻理解的任务中表现不佳。在高风险环境中部署完全自主的 AI 具有重大风险,因为错误可能导致严重的安全、财务或道德后果。这些系统缺乏人类固有的创造力和常识推理能力。因此,在关键决策过程中仅依赖自动化通常不明智,并可能损害系统的整体有效性和可信度。

为什么:人机协同(HITL)模式通过战略性地将人类监督整合到 AI 工作流中提供了标准化解决方案。这种 Agent 方法创建了共生伙伴关系,AI 处理计算繁重工作和数据处理,而人类提供关键验证、反馈和干预。通过这样做,HITL 确保 AI 行动与人类价值观和安全协议保持一致。这种协作框架不仅降低了完全自动化的风险,还通过从人类输入中持续学习来增强系统能力。最终,这带来了更强大、准确和道德的结果,这些结果是人类或 AI 单独无法实现的。

经验法则:在部署 AI 到错误会产生重大安全、道德或财务后果的领域时使用此模式,例如医疗保健、金融或自主系统。对于涉及 LLM 无法可靠处理的模糊性和细微差别的任务(如内容审核或复杂客户支持升级),它至关重要。当目标是使用高质量人类标注数据持续改进 AI 模型或完善生成 AI 输出以满足特定质量标准时,采用 HITL。

可视化摘要

图 1:人机协同设计模式

关键要点

关键要点包括:

结论

本章探讨了至关重要的人机协同(HITL)模式,强调了其在创建强大、安全和道德的 AI 系统中的作用。我们讨论了如何将人类监督、干预和反馈整合到 Agent 工作流中可以显著增强其性能和可信度,特别是在复杂和敏感的领域中。实际应用展示了 HITL 的广泛实用性,从内容审核和医疗诊断到自动驾驶和客户支持。概念性代码示例提供了 ADK 如何通过升级机制促进这些人机交互的一瞥。随着 AI 能力不断进步,HITL 仍然是负责任的 AI 开发的基石,确保人类价值观和专业知识在智能系统设计中保持核心地位。

参考文献

  1. A Survey of Human-in-the-loop for Machine Learning, Xingjiao Wu, Luwei Xiao, Yixuan Sun, Junhang Zhang, Tianlong Ma, Liang He, https://arxiv.org/abs/2108.00941