iT邦幫忙

2026 iThome 鐵人賽

DAY 22
0
AI Engineering

30 天探索 MCP:從基礎概念到實作系列 第 22 篇

Agent 的限制:認識 Token、Context 與執行次數限制

  • 分享至 

  • xImage
  •  

前面幾天我們一直在讓 Agent 變得更完整,從 Tool Selection、Memory、RAG,到最近的多步驟任務,Agent 已經可以自己決定要使用哪些 Tool,甚至連續執行多個步驟。

不過 Agent 並不是可以無限執行的,當 Agent 執行的步驟越來越多,就會開始遇到一些實際上的限制,像是 Token、Context,以及執行次數。

所以今天就來看看這些限制,並在目前的 Agent Loop 中加入一個簡單的執行次數上限。


Token 是什麼?

在使用 LLM 時,文字並不是直接以「一句話」的方式計算,而是會被拆成許多 Token。

例如我們輸入請幫我計算 10 + 20 模型在處理這段文字時,就會消耗一定數量的 Token,而 Agent 的情況又更複雜,因為除了使用者輸入之外,還可能包含:

  • System Prompt
  • 對話內容
  • Tool Call
  • Tool 回傳結果
  • Agent 前面執行過的內容

因此,當 Agent 執行的步驟越多,通常也代表需要處理更多 Token,Token 越多,不只可能增加成本,也可能受到模型本身的使用限制。


Context 又是什麼?

如果把 Token 想成「文字的單位」,那 Context 就可以理解成模型這一次能夠看到的上下文,例如我們前面的 Agent Memory,就是把之前的對話內容加入 Context,讓模型可以知道前面發生過什麼。

但是 Context 並不是無限的,假設 Agent 執行了一個很複雜的任務:

使用者
 ↓
Agent
 ↓
Tool 1
 ↓
Tool 2
 ↓
Tool 3
 ↓
Tool 4
 ↓
Tool 5

每一次 Tool 執行,都可能產生新的結果,如果這些結果全部保留下來,Context 就會越來越大,所以實際設計 Agent 時,通常需要考慮:

哪些資訊真的需要保留?

而不是把所有執行過的內容全部塞回模型。


Agent 還有一個問題:可能一直執行

除了 Token 和 Context 之外,前面做 Agent Loop 時其實還有另一個問題,我們之前的 Agent Loop 大概是:

LLM
 ↓
需要 Tool?
 ↓
呼叫 Tool
 ↓
取得結果
 ↓
再交給 LLM
 ↓
需要 Tool?
 ↓
繼續執行

如果 Agent 一直認為「還需要下一個 Tool」,就可能不斷執行下去,這不只會浪費 Token,也可能讓 API 被大量呼叫,因此實際上的 Agent 通常會設定一個最大執行次數。


加入執行次數上限

這次不需要新增 MCP Server,我們直接修改前面做過的 Agent Loop,先設定一個最大執行次數:

MAX_STEPS = 5

接著在 Agent Loop 中限制最多只能執行 5 次:

MAX_STEPS = 5

for step in range(MAX_STEPS):
    # Agent 執行
    ...

如果 Agent 在 5 次內完成任務,就可以正常結束;如果還沒完成,就會在達到上限後停止,也可以在迴圈結束後加入提示:

print("已達到最大執行次數,停止 Agent。")

這樣就算 Agent 判斷錯誤,一直想繼續呼叫 Tool,也不會讓它無限制執行。


實際測試

我們可以使用前面做過的多步驟任務來測試,為了方便測試我們把 MAX_STEPS 設得很小,這裡我先把 MAX_STEPS 設成 1 和 4 來測試。

https://ithelp.ithome.com.tw/upload/images/20261006/201787694AIKkGtqTl.png

可以看到這裡 Agent 就只能執行一次,接著我們換成測試四的情況

https://ithelp.ithome.com.tw/upload/images/20261006/20178769ybAw01ZEe2.png

可以看出這裡它用到write_file之後就被迫暫停了,所以這時候如果任務需要多個步驟,就可能在完成之前被迫停止。

這也可以看出執行次數限制的作用:

不是讓 Agent 做得越少越好,而是避免 Agent 在出錯或陷入循環時無限制執行。


總結

今天沒有再增加新的 MCP Tool,而是回頭看看 Agent 在實際使用時會遇到的限制,我們簡單認識了三個常見問題:

  • Token:Agent 執行越多,通常需要處理越多 Token。
  • Context:模型能處理的上下文有限,不能無限制保留所有資訊。
  • 執行次數:Agent Loop 不能毫無限制地一直執行。

最後我們在 Agent Loop 中加入 MAX_STEPS,讓 Agent 有一個最大的執行次數,這看起來只是很簡單的限制,但對實際的 Agent 來說,這類控制其實很重要。


上一篇
Agent 錯了怎麼辦?Tool Error Handling
下一篇
MCP Resources 實戰:讓 Agent 直接讀取資料
系列文
30 天探索 MCP:從基礎概念到實作 共 23 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言