
代理設計模式
在編寫一行程式碼之前,瞭解 AI 代理的基本設計模式至關重要。這些模式定義了代理如何推理、計劃和執行任務,選擇正確的模式決定了代理系統的功能和限制。
ReAct 模式(推理 + 行動)
ReAct 是基於 LLM 的代理最廣泛採用的模式。它將推理(思考)與行動(工具使用)交錯在一個連續的迴圈中。在每個步驟中,代理:
- 觀察當前狀態(使用者輸入、之前的工具結果)
- 思考下一步該做什麼(鏈式推理)
- 透過呼叫工具或提供響應來採取行動
- 觀察結果並重復
ReAct 模式很優雅,因為它利用了 LLM 在文字中推理的自然能力,同時將該推理建立在現實世界的觀察中。它擅長執行下一步取決於前一步結果的任務,例如研究、除錯或資料分析。
計劃和執行
計劃和執行模式將計劃與執行分為不同的階段。首先,規劃代理分析任務並生成具有有序步驟的結構化計劃。然後,執行代理執行每個步驟,並將結果報告給規劃者。計劃者可以根據結果修改計劃。
該模式非常適合複雜的多步驟任務,在這些任務中,預先規劃可以減少錯誤和浪費精力。它還提供了更好的透明度,因為計劃可以在執行開始之前由人類進行審查。
思想樹
思想樹透過同時探索多個推理路徑來擴充套件思想鏈推理。該代理會生成幾種候選方法,對每種方法進行評估,並在修剪死衚衕的同時追求最有希望的路徑。這種模式對於創造性地解決問題和使用多種有效方法的任務很有價值。
反射
反射模式向代理迴圈新增了一個自評估步驟。完成任務或子任務後,代理會批評自己的輸出,識別弱點或錯誤,並迭代以改進結果。這對於質量比速度更重要的編寫、程式碼生成和分析任務特別有效。
AI 代理的構建模組
每個 AI 代理系統都需要四個基礎元件,這些元件協同工作以實現自主行為。
LLM Backbone
大語言模型充當推理引擎。 LLM 的選擇會顯著影響代理功能:
- Claude (Anthropic):擅長複雜推理、工具使用和遵循詳細說明。 強大的安全特性使其適合處理敏感操作的生產代理
- GPT-4 (OpenAI):強大的工具呼叫、廣泛的第三方生態系統以及跨不同任務的強大效能
- 開源型號(Llama、Mistral):提供對部署和成本的完全控制,適合需要在本地或本地執行的代理高容量
工具整合
工具將代理從文字生成擴充套件到現實世界的互動。精心設計的工具介面包括:
- 清晰的描述性工具名稱和文件,幫助 LLM 瞭解何時使用每個工具
- 結構化輸入模式,並進行驗證以防止格式錯誤的呼叫
- 錯誤處理,返回 LLM 可以對 執行操作的資訊性訊息
- 超時和速率限制防止失控操作
記憶體系統
對於跨會話操作或處理長時間任務的代理,記憶體系統至關重要。使用以下實現儲存器:
- 對話緩衝區:將完整的對話歷史記錄保留在 LLM 上下文中(簡單但受上下文視窗限制)
- 摘要儲存器:定期總結較舊的對話輪流以壓縮上下文
- 向量儲存:嵌入並儲存重要資訊,以便在相關時進行語義檢索
- 持久檔案:將關鍵決策和事實寫入跨會話持久儲存的檔案
編排層
編排層管理代理迴圈、工具執行、錯誤恢復以及與外部系統的互動。它處理:
- LLM 的訊息格式化和上下文管理
- 工具呼叫解析、執行和結果注入
- 重試邏輯和錯誤恢復
- 日誌記錄、監控和可觀察性
- 人機互動批准敏感操作
分步:在 Python 中構建基本代理
讓我們使用 Python 和 Anthropic API 從頭開始構建一個簡單的 ReAct 代理。此示例演示了沒有框架依賴性的核心概念。
步驟 1:定義您的工具
import anthropic
import json
# Define tools the agent can use
tools = [
{
"name": "search_web",
"description": "Search the web for current information on a topic",
"input_schema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query"
}
},
"required": ["query"]
}
},
{
"name": "calculate",
"description": "Perform a mathematical calculation",
"input_schema": {
"type": "object",
"properties": {
"expression": {
"type": "string",
"description": "Mathematical expression to evaluate"
}
},
"required": ["expression"]
}
}
]步驟 2:實施工具執行
def execute_tool(tool_name, tool_input):
"""Execute a tool and return the result."""
if tool_name == "search_web":
# Replace with actual search API integration
return search_api(tool_input["query"])
elif tool_name == "calculate":
try:
result = eval(tool_input["expression"]) # Use safe eval in production
return str(result)
except Exception as e:
return f"Error: {str(e)}"
return "Unknown tool"步驟 3:構建代理迴圈
def run_agent(user_message, max_iterations=10):
client = anthropic.Anthropic()
messages = [{"role": "user", "content": user_message}]
system_prompt = """You are a helpful AI agent. Use the available tools
to research and answer questions accurately. Think step by step."""
for i in range(max_iterations):
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=4096,
system=system_prompt,
tools=tools,
messages=messages
)
# Check if the agent wants to use a tool
if response.stop_reason == "tool_use":
# Extract tool calls from response
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = execute_tool(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
# Add assistant response and tool results to messages
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": tool_results})
else:
# Agent is done, return final response
return response.content[0].text
return "Agent reached maximum iterations"多代理編排模式
對於複雜的工作流程,通常需要單個代理功虧一簣。多代理系統將工作分配給協作解決問題的專業代理。
順序管道
代理以線性順序處理任務,每個代理將其輸出傳遞給下一個。例如:研究代理收集資訊,分析代理處理資訊,寫作代理生成最終報告。這種模式簡單且可預測,但缺乏並行性。
主管模式
主管代理管理一組工作代理、委派任務並聚合結果。主管根據當前任務要求決定聘用哪名工人。該模式提供了強大的控制能力,非常適合角色邊界清晰的工作流程。
協作討論
多個座席參與結構化討論,每個座席都貢獻自己的專業觀點。主持人代理管理對話流並綜合最終輸出。這種模式擅長於需要不同專業知識的任務,例如程式碼審查或戰略規劃。
分層委派
代理按層次結構組織,高階代理將任務分解並委派給較低階別的專家。每個級別都可以進一步分解和委派,建立協調工作樹。這種模式可以很好地適應大型、複雜的專案。
評估和測試 AI 代理
由於 LLM 輸出的不確定性,測試 AI 代理與測試傳統軟體有根本不同。
單元測試工具
使用已知輸入和預期輸出單獨測試每個工具。工具測試應該是確定性的,並涵蓋邊緣情況,包括錯誤條件、格式錯誤的輸入和超時場景。
軌跡測試
記錄並評估代理完成任務所採取的操作順序。良好的軌跡測試驗證智慧體是否遵循合理的路徑,而不僅僅是達到正確的答案。將軌跡與專家定義的黃金路徑進行比較。
端到端評估
針對具有已知正確結果的基準任務套件執行完整代理。衡量成功率、平均步驟數、工具呼叫效率和每項任務的成本。隨著時間的推移跟蹤這些指標以檢測迴歸。
對抗性測試
使用對抗性輸入測試代理,包括提示注入嘗試、不明確的指令、不可能的任務和衝突的要求。 驗證代理是否妥善處理這些問題,而不會產生有害輸出或進入無限迴圈。
生產部署注意事項
將 AI 代理從原型轉移到生產需要解決幾個關鍵問題。
成本管理
LLM API 呼叫是 AI 代理的主要成本驅動因素。透過以下方式控制成本:
- 設定每個任務的最大迭代限制
- 使用較小的模型進行例行推理,使用較大的模型進行復雜決策
- 實現重複工具呼叫和 LLM 查詢的快取
- 監控每個任務的成本並設定預算警報
可靠性和錯誤恢復
生產代理必須妥善處理故障:
- 針對瞬態 API 故障實施具有指數退避的重試邏輯
- 在主要工具不可用時設計回退策略
- 新增斷路器以防止級聯故障
- 記錄所有代理操作以進行除錯和審計跟蹤
安全和防護
部署安全機制以防止代理採取有害操作:
- 需要人工批准才能進行高影響操作(財務交易、資料刪除、外部通訊)
- 實施允許的工具操作的白名單和禁止的操作的阻止列表
- 新增輸出過濾以在敏感資訊離開系統之前捕獲該資訊
- 設定針對異常代理行為的監控警報
可觀察性
全面的可觀察性對於瞭解和提高代理效能至關重要:
- 跟蹤每個代理執行情況,包括所有推理步驟、工具呼叫和決策
- 跟蹤延遲、令牌使用情況和每次互動成本
- 監控不同任務型別的成功率和失敗模式
- 構建儀表板,使運營團隊能夠實時瞭解代理執行狀況
Workstation 構建定製 AI 代理解決方案
在 Workstation,我們在為各行業的企業設計和部署生產 AI 代理系統方面擁有深厚的專業知識。我們的方法包括:
- 發現和設計:我們與您的團隊合作,確定高價值的自動化機會,並設計與您現有基礎設施整合的代理架構
- 快速原型製作:我們快速構建工作代理原型,使您能夠在投入全面開發之前評估功能並提供反饋
- 生產工程:我們的團隊可處理生產部署的複雜性,包括可靠性、安全性、成本最佳化和監控
- 定製工具開發:我們構建定製工具,將您的 AI 代理連線到內部系統、資料庫、API 和第三方服務
- 持續最佳化:我們不斷監控和改進您的代理系統,降低成本、提高準確性並隨著時間的推移擴充套件功能
準備好構建可改變您的業務運營的 AI 代理了嗎?透過info@workstation.co.uk聯絡我們,討論您的需求,並瞭解我們的團隊如何將您的 AI 代理願景變為現實。