Skip to content

Agentic Design Patterns 第 13 章:Human-in-the-Loop(人機協作)

davidlei

Human-in-the-Loop(HITL,人機協作)模式是 Agent 開發與部署中的關鍵策略。它刻意把人類認知的獨特強項──判斷力、創造力、對細微差異的理解──和 AI 的運算能力與效率結合在一起。這種策略性的整合不只是一種選項,很多時候更是必要,尤其是當 AI 系統越來越深入地嵌進關鍵決策流程裡。

HITL 的核心原則,是確保 AI 在道德邊界內運作、遵守安全規範,並以最佳效果達成目標。在複雜、模糊或高風險的領域,這些考量特別突出,因為 AI 一旦出錯或誤判,後果可能相當嚴重。在這種情況下,完全自主──也就是 AI 系統在沒有任何人為介入下獨立運作──可能是不明智的。HITL 承認這個現實,並強調即使 AI 技術快速進步,人類的監督、策略性投入和協作互動仍然不可或缺。

HITL 方法從根本上圍繞著人工智慧與人類智慧之間的協同這個概念。HITL 不把 AI 當成人類工作者的替代品,而是把 AI 定位成擴充、強化人類能力的工具。這種強化可以有很多形式,從自動化例行工作,到提供以資料驅動的洞見來輔助人類決策。最終目標是打造一個協作的生態系,讓人類和 AI Agent 都能發揮各自的強項,達成任何一方單獨都做不到的成果。

實務上,HITL 有很多種實作方式。常見的做法之一,是讓人類擔任驗證者或審查者,檢查 AI 的輸出來確保準確、找出可能的錯誤。另一種做法是讓人類主動引導 AI 的行為,即時提供回饋或做出修正。在更複雜的設計裡,人類可能和 AI 以夥伴的身分協作,透過互動式對話或共用介面一起解決問題、做決策。不管具體怎麼實作,HITL 模式都強調維持人類控制與監督的重要性,確保 AI 系統始終和人類的道德、價值觀、目標及社會期待保持一致。

模式概觀

Human-in-the-Loop(HITL)模式把人工智慧和人類的輸入結合起來,藉此強化 Agent 的能力。這種做法承認:要讓 AI 發揮最佳表現,往往需要自動化處理和人類洞見的結合,尤其是在高度複雜或涉及道德考量的情境中。HITL 的目標不是取代人類的輸入,而是透過確保關鍵判斷與決策都建立在人類理解之上,來擴充人類的能力。

HITL 涵蓋幾個關鍵面向:人類監督(Human Oversight),也就是監控 AI Agent 的表現和輸出(例如透過日誌審查或即時儀表板),確保符合準則、避免出現不樂見的結果。介入與修正(Intervention and Correction)發生在 AI Agent 遇到錯誤或模糊情境、可能請求人為介入的時候;人類操作員可以修正錯誤、補上缺漏的資料,或引導 Agent,這同時也為未來的 Agent 改進提供依據。用於學習的人類回饋(Human Feedback for Learning)會被收集起來,用來調校 AI 模型,在「以人類回饋進行的強化學習」這類方法中特別明顯,其中人類的偏好直接影響 Agent 的學習軌跡。決策增強(Decision Augmentation)是指 AI Agent 向人類提供分析和建議,再由人類做出最終決定,用 AI 產出的洞見來強化人類決策,而不是完全交由 AI 自主。人機協作(Human-Agent Collaboration)是一種合作式互動,人類和 AI Agent 各自貢獻所長;例行的資料處理可以交給 Agent,而創意性的問題解決或複雜的談判則由人類掌控。最後,升級策略(Escalation Policies)是預先制定的規範,規定 Agent 在什麼時候、以什麼方式把任務升級交給人類操作員,避免在超出 Agent 能力範圍的情況下出錯。

導入 HITL 模式,讓 Agent 能夠用在那些完全自主不可行、或不被允許的敏感產業裡。它也透過回饋迴圈,提供了持續改進的機制。舉例來說,在金融領域,一筆大額企業貸款的最終核准,需要人類放款專員來評估像是領導層品格這類質性因素。同樣地,在法律領域,正義與問責的核心原則要求由人類法官保有對關鍵決定(例如量刑)的最終權力,因為這些決定牽涉複雜的道德推理。

注意事項: 儘管 HITL 模式好處很多,它也有幾個重要的隱憂,其中最主要的是缺乏可擴展性。人類監督雖然能提供高準確度,但操作員沒辦法處理數以百萬計的任務,這造成了一個根本性的取捨,往往需要採用混合式做法──用自動化來衝規模、用 HITL 來顧準確度。此外,這個模式的成效高度取決於人類操作員的專業程度;舉例來說,AI 雖然能產生軟體程式碼,但只有熟練的開發者才能準確找出細微的錯誤、給出正確的修正指引。這種對專業的需求,在用 HITL 產生訓練資料時同樣存在,因為人類標註員可能需要接受特別訓練,才能學會用「能產出高品質資料」的方式去修正 AI。最後,導入 HITL 會引發重大的隱私疑慮,因為敏感資訊往往必須經過嚴格匿名化,才能交給人類操作員看,這又多加了一層流程上的複雜度。

實際應用與使用情境

Human-in-the-Loop 模式在許多產業和應用中都很關鍵,尤其是在準確性、安全、道德或細膩理解最為重要的場合。

這個模式示範了一種務實的 AI 導入方法。它借助 AI 來提升可擴展性和效率,同時維持人類監督,以確保品質、安全和道德合規。

「Human-on-the-loop」是這個模式的一種變體,由人類專家定義整體的政策方針,再由 AI 處理即時的行動來確保合規。我們來看兩個例子:

實作範例

為了示範 Human-in-the-Loop 模式,一個 ADK Agent 可以辨識出需要人類審查的情境,並啟動升級流程。這讓 Agent 在自主決策能力受限、或需要複雜判斷的情況下,能有人為介入的空間。這並不是單一框架獨有的功能;其他熱門框架也採用了類似的能力。以 LangChain 為例,它同樣提供了實作這類互動的工具。

from typing import Optional

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


# Placeholder for tools (replace with actual implementations if needed)
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:
    # This would typically transfer to a human queue in a real system
    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="""
    You are a technical support specialist for our electronics company.
    FIRST, check if the user has a support history in state["customer_info"]["support_history"].
    If they do, reference this history in your responses.

    For technical issues:
    1. Use the troubleshoot_issue tool to analyze the problem.
    2. Guide the user through basic troubleshooting steps.
    3. If the issue persists, use create_ticket to log the issue.

    For complex issues beyond basic troubleshooting:
    1. Use escalate_to_human to transfer to a human specialist.

    Maintain a professional but empathetic tone. Acknowledge the frustration technical issues can cause,
    while providing clear steps toward resolution.
    """,
    tools=[troubleshoot_issue, create_ticket, escalate_to_human],
)


def personalization_callback(
    callback_context: CallbackContext, llm_request: LlmRequest
) -> Optional[LlmRequest]:
    """Adds personalization information to the LLM request."""
    # Get customer info from state
    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"\nIMPORTANT PERSONALIZATION:\n"
            f"Customer Name: {customer_name}\n"
            f"Customer Tier: {customer_tier}\n"
        )
        if recent_purchases:
            personalization_note += f"Recent Purchases: {', '.join(recent_purchases)}\n"

        if llm_request.contents:
            # Add as a system message before the first content
            system_content = types.Content(
                role="system",
                parts=[types.Part(text=personalization_note)],
            )
            llm_request.contents.insert(0, system_content)

    return None  # Return None to continue with the modified request

這段程式碼提供了一個藍圖,示範如何用 Google 的 ADK 打造一個技術支援 Agent,整體圍繞著 HITL 框架來設計。這個 Agent 扮演的是聰明的第一線支援角色,配上特定的指令,並搭載 troubleshoot_issuecreate_ticketescalate_to_human 等工具,來管理一整套完整的支援工作流程。其中的升級工具是 HITL 設計的核心,確保複雜或敏感的案例會被交給人類專員。

這套架構的一個關鍵特色,是它能做到深度個人化,靠的是一個專門的 callback 函式。在聯繫 LLM 之前,這個函式會從 Agent 的 state 中動態取出客戶專屬的資料──像是姓名、等級和購買紀錄。接著把這些脈絡以系統訊息的形式注入 prompt 裡,讓 Agent 能給出高度客製、有依據的回應,並引用使用者的過往紀錄。透過把結構化的工作流程,和必要的人類監督與動態個人化結合起來,這段程式碼是個實際的範例,展示了 ADK 如何協助開發出成熟、穩健的 AI 支援方案。

速覽

問題: 包括先進 LLM 在內的 AI 系統,常常在需要細膩判斷、道德推理,或需要深入理解複雜、模糊脈絡的任務上表現吃力。在高風險環境中部署完全自主的 AI 帶有重大風險,因為一旦出錯,可能造成嚴重的安全、財務或道德後果。這些系統缺乏人類天生具備的創造力和常識推理。因此,在關鍵決策流程中只倚賴自動化,往往並不明智,還可能損害系統整體的成效與可信度。

解法: Human-in-the-Loop(HITL)模式提供了一套標準化的解法,把人類監督策略性地整合進 AI 的工作流程裡。這種 Agent 式的做法建立起一種共生的夥伴關係:AI 負責繁重的運算和資料處理,人類則提供關鍵的驗證、回饋和介入。透過這樣的分工,HITL 確保 AI 的行動與人類的價值觀和安全規範一致。這個協作框架不只降低了完全自動化的風險,還透過從人類輸入中持續學習來強化系統的能力。最終,這會帶來更穩健、更準確、更符合道德的成果,而這些是人類或 AI 單獨都達不到的。

經驗法則: 當你要把 AI 部署到「錯誤會造成重大安全、道德或財務後果」的領域時,例如醫療、金融或自主系統,就使用這個模式。對於那些涉及 LLM 無法可靠處理的模糊性和細微差異的任務,例如內容審核或複雜的客戶支援升級,它更是不可或缺。當目標是用高品質、由人類標記的資料持續改進 AI 模型,或是精修生成式 AI 的輸出以符合特定品質標準時,也採用 HITL。

圖解:

Human-in-the-Loop 設計模式

圖 1:Human-in-the-Loop 設計模式

重點回顧

重點包括:

結語

本章探討了至關重要的 Human-in-the-Loop(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
Edit this post
Next
Day 15:如果是我會怎麼寫一個 agent framework