iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0

Day 8:介紹 Deep Agents 與 Harness Engineering

前面幾天,我們已經對 Agent 所需要的東西有個概念(當然還不是全部),包括 config、datasource,以及 tools,接下來想介紹這個 project 會使用的 framework:Deep Agents,以及它背後一個很重要的概念:Harness Engineering

What Is Deep Agents?

Deep Agents 是 LangChain 提供的 open-source Agent harness framework,建立在 LangGraph 之上。

可以先把它簡單理解成:

Deep Agents
    ↓
LangChain
    ↓
LangGraph

LangGraph 提供比較底層的 Agent runtime,而 Deep Agents 則把很多常見的 Agent capabilities 先準備好。

例如:

  • planning
  • context management
  • tool usage
  • subagents
  • filesystem access
  • execution environment
  • long-running tasks

source

如果直接使用 LangGraph,我們可以自己控制很多細節,但相對地也代表很多細節都要自己處理。

Deep Agents 比較像是在 LangGraph 上先準備好一套可以直接工作的環境,我們再針對 project 真正需要的地方進行調整。

What Is Harness Engineering?

可以先把 Agent 簡單想成:

Agent = Model + Harness

Model 提供 reasoning 與 intelligence,Harness 則是 model 周圍的 environment。

例如:

  • model 可以看到哪些 context
  • 可以使用哪些 tools
  • tool result 要怎麼處理
  • context 太長時要怎麼整理
  • task 要不要交給其他 subagent
  • execution 要怎麼被控制
  • result 要怎麼被驗證

這些都屬於 harness engineering 的範圍。

所以即使兩個 Agent 使用同一個 model,最後表現也可能差很多。

差別可能來自:

  • system prompt
  • tools
  • context
  • execution flow
  • verification
  • memory
  • error handling

也就是說,model 很重要,但 我們怎麼讓 model 工作 同樣重要。

Why Do We Use Deep Agents?

我們當然可以直接使用 LangGraph,自己建立整個 Agent flow。

但在這個 project 裡,我不想把太多時間花在重新實作一些常見的 Agent infrastructure。

Deep Agents 已經提供不少可以直接使用的能力,例如:

Context
   ↓
Model
   ↓
Tool Calling
   ↓
Execution
   ↓
Result

以及:

Agent
  ↓
Subagent

這些能力可以讓我們更快把注意力放在真正和這個 project 有關的問題:

  • Agent 應該有哪些 tools?
  • Agent 可以看到哪些資料?
  • context 要怎麼控制?
  • 什麼時候需要 human input 或是 human approval?
  • Agent-generated code 要在哪裡執行?
  • 如何讓 Agent 不會因為 context 越來越大而失控?

Before and After the Model

Deep Agents 也讓我們可以在 model call 前後加入自己的處理邏輯。

例如,在呼叫 model 之前,可能會做:

  • 移除過大的 tool result
  • 過濾 confidential information
  • summarize 舊 messages
  • 補上額外 context
  • 控制目前可以使用哪些 tools

在 model response 之後,也可能會做:

  • 檢查 tool calls
  • 更新或轉換目前的 state
  • 決定下一步要走哪個流程
  • 驗證輸出結果
  • 觸發其他後續流程

這也是 harness engineering 很重要的一部分。

我們不是只把 prompt 丟給 model,然後等待答案。

而是在 model 周圍建立一個可以持續控制 execution 的 environment。

A Minimal Deep Agent

結合昨天內容的 Deep Agent 實作如下,:

from deepagents import create_deep_agent

agent = create_deep_agent(
    model=model,
    tools=[
        read_file,
        query_database,
    ],
    system_prompt="""
    You are a data analysis agent.

    Use the available tools to inspect the datasource
    before making conclusions about the data.
    """,
)

這只是一個簡單的範例,之後把需要的 component 都介紹完就會開始組合起來,到時候就會看到怎麼建立。

Why Not Build Everything Ourselves?

自己從 LangGraph 開始做當然可以,而且可以得到更多控制權。

但對這個系列來說,目標不是重新建立一套 Agent framework。

我們比較想把時間放在:

User Intent
    ↓
Agent
    ↓
Tools
    ↓
Analysis Code
    ↓
Execution
    ↓
Result

所以使用 Deep Agents,可以讓我們跳過一些已經有成熟解法的 infrastructure,把重點放在這個 project 真正想解決的問題。

What's Next?

今天先把 Deep Agents 和 harness engineering 的角色講清楚。

下一篇會往更底層一點,看 Agent 裡面的 ChatModel 到底提供哪些能力,包括:

  • streaming
  • tool calling
  • structured output
  • model configuration
  • prompt caching

理解這些能力之後,再回來看 Deep Agents 怎麼把它們組合成一個完整的 Agent。


上一篇
[Day 7] 實作Datasource,並提供給Agent使用
下一篇
[Day 9] 介紹 Deep Agents (2)
系列文
AaaS from Scratch: 從一次性定義,到規模化分析9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言