AWS 開源 Strands Agents SDK:用幾行代碼喚醒 AI 智能體

大家好,我是肆〇柒。AWS 開源了一套 Agent 框架 —— Strands Agents SDK。它不僅簡化了開發流程,還極大地提升了開發效率,并且從可持續運維的角度思考了工程落地。接下來,我們一起來了解一下這個 SDK,看看它是如何讓智能體開發變得如此簡單。
AI 智能體,這些能夠在特定環境中感知、推理并自主行動的軟件實體,已成為推動眾多行業變革的關鍵力量。從自動化客服系統到復雜的供應鏈管理優化,AI 智能體的應用場景正不斷拓展。然而,傳統的智能體開發往往伴隨著復雜的工作流定義、繁瑣的模型配置以及昂貴的試錯成本,這讓許多開發者和企業望而卻步。

AWS 開源 Strands Agents SDK
現在,AWS 正式開源了 Strands Agents SDK。它采用模型驅動架構,將智能體的核心要素——模型、工具和提示抽象化,極大降低了開發門檻。開發者無需深入理解大型語言模型(LLM)的底層機制,也無需編寫復雜的編排邏輯,只需幾行簡潔的代碼,即可構建出功能強大的 AI 智能體,實現從簡單查詢回答到復雜工作流程編排的多樣化任務。
Strands Agents SDK 核心架構:智能體的三核引擎
Strands Agents SDK 的核心架構圍繞智能體的三要素展開,這三者相互協作,驅動智能體完成各項任務。

(一)模型(Model):智能體的 “大腦”
Strands 為智能體提供了極其豐富的模型支持,堪稱智能體的 “最強大腦庫”。它原生集成了 Amazon Bedrock 平臺的眾多模型,如 Claude 和 Titan,這些模型在自然語言處理和推理任務中表現出色。同時,Strands 也兼容 Anthropic、Meta Llama 等熱門模型,通過 LiteLLM 等 API,開發者還能輕松接入其他提供商的模型資源,構建多元化的模型生態。
更值得一提的是,Strands 考慮到了本地開發和特殊定制場景,支持 Ollama 等本地模型開發平臺,并允許開發者定義自定義模型提供商。這意味著,無論你是想利用云端的強大算力,還是在本地環境中確保數據隱私和模型專屬性,Strands 都能滿足需求。開發者只需簡單地在代碼中指定模型來源和參數,即可讓智能體調用相應的模型,開始它的智能任務之旅。
(二)工具(Tools):智能體的 “功能擴展包”
工具是智能體與外部世界交互、完成實際操作的關鍵橋梁。Strands 提供了 20 + 預建工具,涵蓋了從文件創建、讀取、更新到 API 調用,以及與 AWS 服務深度集成的各類功能。這些工具就像是智能體的 “百寶箱”,讓智能體能夠輕松處理文件操作、調用外部服務,甚至操控 AWS 云資源。
而真正讓開發者興奮的是 Strands 的自定義工具能力。通過簡單的 @tool 裝飾器,開發者可以將任何 Python 函數轉化為智能體可用的工具。只需在函數前添加這一裝飾器,并定義好工具的輸入輸出參數,智能體便能在后續任務中調用該函數,實現特定的業務邏輯。例如,你可以編寫一個查詢天氣的函數,將其注冊為工具,智能體在需要通知用戶時,就能自動調用這個工具查詢具體區域的天氣情況。
from strands import Agent, tool
@tool
defget_user_location() -> str:
"""Get the user's location
"""
# Implement user location lookup logic here
return"Seattle, USA"
@tool
defweather(location: str) -> str:
"""Get weather information for a location
Args:
location: City or location name
"""
# Implement weather lookup logic here
returnf"Weather for {location}: Sunny, 72°F"
agent = Agent(tools=[get_user_location, weather])
# Use the agent with the custom tools
agent("What is the weather like in my location?")此外,Strands 對 Model Context Protocol(MCP)服務器的支持,將智能體的工具使用能力推向了新高度。成千上萬的 MCP 服務器提供了海量的工具資源,智能體可以根據任務需求動態調用這些服務器上的工具,實現功能的無限擴展。這就好比智能體能夠隨時訪問一個龐大的工具超市,按需選取最合適的工具來完成任務。
(三)提示(Prompt):智能體的 “任務指揮官”
提示是智能體行動的起點和方向指引。開發者可以通過編寫自然語言提示,明確告訴智能體需要完成的任務,例如回答用戶問題、生成代碼、規劃旅行等。這些用戶自定義提示就像是給智能體下達的具體命令,讓智能體明白當前任務的核心目標。
from strands import Agent
agent = Agent(
system_prompt=(
"You are a financial advisor specialized in retirement planning. "
"Use tools to gather information and provide personalized advice. "
"Always explain your reasoning and cite sources when possible."
)
)系統級提示則更側重于塑造智能體的整體行為風格和原則。你可以通過系統提示規定智能體在回答問題時保持簡潔明了,或者在處理數據時注重隱私保護。它為智能體提供了一套通用的行為準則,確保智能體在各種任務中都能符合預期的行為規范。
開發者編寫的提示就像是智能體的 “任務說明書”,清晰的提示能夠引導智能體更準確地理解任務并調用合適的工具和模型來完成它。通過設計提示詞,開發者可以激發智能體的最大潛力,實現復雜多樣的應用場景。
Agentic 循環機制:智能體的思考與行動
Strands 的 Agentic 循環機制是智能體工作的核心引擎,讓智能體具備了類似人類的思考和行動能力。
在每次循環中,智能體會先將當前的任務上下文和可用工具描述提供給大型語言模型(LLM)。LLM 會根據這些信息進行推理和判斷,它可以決定直接生成自然語言回答,為用戶提供了一系列思考后的回答;也可以規劃出多個步驟,將復雜任務分解為更小的子任務;還可以對之前的操作進行反思,根據反饋調整后續行動方向;更有甚者,它會選擇調用合適的工具來獲取更多信息或完成實際操作。

Agentic 循環機制
當 LLM 決定調用工具時,Strands 會負責執行該工具,并將工具返回的結果再次輸入到 LLM 中。這個過程不斷重復,直到智能體最終完成任務,并生成最終結果返回給用戶。整個循環機制充分利用了 LLM 的強大推理、規劃和適應能力,讓智能體能夠在復雜多變的任務環境中靈活應對。
例如,在一個問答場景中,智能體收到用戶關于 “如何配置 AWS Lambda 函數” 的問題。首先,LLM 會根據提示理解這是一個技術配置類問題。然后,它可能會先調用一個檢索工具,在知識庫中查找相關的 AWS Lambda 配置文檔。在獲取到文檔后,LLM 會分析內容,并進一步調用代碼生成工具,為用戶提供了一個示例代碼片段。最后,LLM 將這些信息整合成一個完整的回答,包括配置步驟和代碼示例,返回給用戶。這一過程生動體現了 Agentic 循環如何驅動智能體動態調用工具,逐步解決問題。
智能體開發的優勢與特色:高效、靈活、強大
(一)簡化開發流程:從復雜到簡約的跨越
與傳統需要開發者手動定義復雜工作流的智能體開發框架相比,Strands 借助先進模型的原生工具使用和推理能力,實現了開發流程的簡化。在以往的開發模式下,開發者需要花費大量時間設計智能體的工作流,包括如何調用工具、如何處理工具返回的結果、如何在不同步驟之間進行狀態轉換等。這不僅增加了開發的復雜度,還延長了開發周期。
而使用 Strands,開發者只需定義清晰的提示和工具列表,Strands 就能自動利用模型的推理能力,合理地調用工具并完成任務。從定義提示和工具,到在本地測試智能體的行為,再到將其部署到云端,整個過程可以在極短時間內完成。例如,一個原本需要數月才能從原型開發到生產部署的智能體項目,使用 Strands 后,可能只需幾周甚至幾天就能完成。這不僅大大提高了開發效率,還讓開發者能夠更快地響應市場需求,加速智能體產品的迭代和創新。
(二)高度的可擴展性:智能體功能的無限延伸
工具擴展的多元化與深度
- 檢索工具(Retrieve Tool) :通過與 Amazon Bedrock 知識庫的緊密集成,檢索工具能夠實現高效的語義搜索。當智能體面對海量的信息資源時,它不再是盲目地遍歷所有數據,而是利用語義理解能力,精準定位與當前任務最相關的文檔或知識片段。例如,在一個企業知識管理系統中,智能體可以通過檢索工具快速找到與用戶問題相關的技術文檔、產品手冊或歷史案例。更進一步,對于擁有數千個工具的復雜場景,檢索工具還能通過語義相似性分析,從眾多工具中篩選出最適合當前任務的工具,并將其描述提供給模型。這種方式避免了向模型描述所有工具帶來的信息過載問題,讓智能體能夠更高效地利用工具資源。
- 思考工具(Thinking Tool) :這是智能體的 “深度思考引擎”。它促使模型進行多步分析推理,使智能體能夠處理更復雜、更需要深入思考的任務。例如,在數據分析場景中,智能體需要對一組數據進行清洗、轉換、分析并得出結果。思考工具會讓模型逐步思考每一步操作的合理性,先判斷數據是否需要清洗,再確定清洗的具體規則;在轉換數據時,分析不同的轉換方法對結果的影響;在分析階段,深入挖掘數據中的潛在模式和趨勢。通過這種方式,智能體能夠提供更準確、更有深度的分析結果,而不是停留在表面的簡單處理。
- 多智能體工具(Multi - Agent Tools) :包括工作流、圖和群體工具,它們構成了智能體的 “協同作戰系統”。

對于復雜的任務,如大型項目的規劃與執行、多階段的業務流程處理等,單一智能體可能難以應對。

工作流工具可以讓多個子智能體按照預定義的順序依次執行任務,就像在一條高效的生產線上,每個子智能體負責一個特定的加工環節。

圖(Graph)工具則更靈活,它允許子智能體之間根據任務的依賴關系動態調整執行順序,形成復雜的任務處理網絡。

而群體工具則模擬了群體智慧,讓多個子智能體并行工作,共同解決復雜問題,例如在大規模數據標注任務中,多個子智能體可以同時處理不同的數據子集,最后匯總結果。

隨著對 Agent2Agent(A2A)協議的支持即將上線,多智能體之間的協作將更加緊密和高效,進一步拓展智能體的應用邊界。并且已構建的 Agent 自身,也可以作為工具來提供其他 Agent 進行調用(Agent as Tools)。

模型與工具的靈活組合:智能體的定制化魔方
- 按需選擇模型與工具 :Strands 提供了豐富的模型和工具資源,開發者可以根據具體業務場景的需求,自由選擇最合適的模型和工具進行組合。例如,在處理中英文混合的文本內容時,可以選擇在中文處理上表現更佳的模型,搭配專門處理文本翻譯的工具;在需要快速處理圖像數據的場景中,選用高效的圖像識別模型,并結合圖像標注工具。這種靈活的選擇方式讓智能體能夠精準匹配各種業務需求,實現最優的任務執行效果。
- 深度定制智能體行為 :除了選擇模型和工具,開發者還能夠深入定制智能體的行為邏輯。你可以根據業務規則重新定義工具選擇的算法,讓智能體在特定情況下優先調用某些工具;調整上下文管理方式,控制智能體如何存儲和利用歷史對話信息,以更好地維護對話的連貫性和相關性;選擇不同的會話狀態和內存存儲位置,平衡性能和數據安全需求。通過這些定制化操作,開發者可以打造完全符合特定業務要求的智能體,使其在實際應用中發揮最大價值。
實際應用案例:從理論到實踐的蛻變
AWS 內部團隊的先行實踐
在 AWS 內部,多個團隊已經率先將 Strands Agents 集成到生產工作流程中,并取得了顯著的成效。
Amazon Q Developer 團隊利用 Strands 構建了一個智能編程助手。這個助手能夠理解開發者在編程過程中遇到的問題,自動調用代碼示例生成工具、API 文檔檢索工具等,為開發者提供精準的代碼解決方案和編程指導。它大大提高了開發者的編碼效率,減少了查找資料和調試代碼的時間。
AWS Glue 團隊則將 Strands 應用于數據集成任務。智能體能夠自動規劃數據清洗、轉換和加載的流程,調用相應的工具處理數據質量問題,優化數據轉換邏輯,并將數據高效地加載到目標數據倉庫中。這不僅提高了數據集成的準確性和效率,還降低了人工干預的需求,提升了整個數據處理流程的穩定性。
VPC Reachability Analyzer 團隊借助 Strands 開發了一個網絡故障診斷智能體。當用戶報告網絡連接問題時,智能體可以自動調用網絡拓撲分析工具、路由表檢查工具等,快速定位故障點,分析問題原因,并提供詳細的解決方案。這大大縮短了網絡故障的診斷和修復時間,提高了用戶的網絡服務質量。
智能體構建示例:親手打造你的命名助手
讓我們通過一個具體的示例,感受使用 Strands 構建智能體的魅力。假設我們要構建一個幫助開源項目命名的智能體。
首先,創建一個名為 agent.py 的 Python 文件。在文件中,我們引入 Strands 的相關模塊,并定義使用的模型,例如 Amazon Bedrock 中的 Anthropic Claude 3.7 Sonnet 模型。接著,通過 @tool 裝飾器定義一個簡單的工具,用于生成基于項目主題的關鍵詞列表,這將為后續的命名提供靈感。
然后,編寫提示,告訴智能體我們的任務是為一個開源項目命名,項目主題是人工智能輔助開發,目標受眾是全棧開發者。同時,我們還可以提供一個系統提示,要求智能體生成的名稱要簡潔、有吸引力,并且容易記憶。
最后,運行智能體。設置好 GitHub 個人訪問令牌等必要的環境變量后,執行代碼,智能體便開始工作。它會根據提示調用模型和工具,經過一系列的推理和工具調用循環,最終輸出一系列符合要求的項目名稱建議,如 “AI 開發精靈”“全棧智伴” 等。
以下是完整的代碼示例:
from strands import Agent
from strands.tools.mcp import MCPClient
from strands_tools import http_request
from mcp import stdio_client, StdioServerParameters
# Define a naming-focused system prompt
NAMING_SYSTEM_PROMPT = """
You are an assistant that helps to name open source projects.
When providing open source project name suggestions, always provide
one or more available domain names and one or more available GitHub
organization names that could be used for the project.
Before providing your suggestions, use your tools to validate
that the domain names are not already registered and that the GitHub
organization names are not already used.
"""
# Load an MCP server that can determine if a domain name is available
domain_name_tools = MCPClient(lambda: stdio_client(
StdioServerParameters(command="uvx", args=["fastdomaincheck-mcp-server"])
))
# Use a pre-built Strands Agents tool that can make requests to GitHub
# to determine if a GitHub organization name is available
github_tools = [http_request]
with domain_name_tools:
# Define the naming agent with tools and a system prompt
tools = domain_name_tools.list_tools_sync() + github_tools
naming_agent = Agent(
system_prompt=NAMING_SYSTEM_PROMPT,
tools=tools
)
# Run the naming agent with the end user's prompt
naming_agent("I need to name an open source project for building AI agents.Response in Chinese")運行這段代碼后,你將看到類似以下的輸出:
建議的項目名稱:AI 開發精靈、全棧智伴、CodeAI 助手這個示例直觀地展示了 Strands 的簡潔性和強大功能,開發者只需編寫少量代碼,即可快速構建出實用的智能體,解決實際問題。
部署與可觀測性:智能體的穩定運行與持續優化
(一)多樣化的部署選項
Strands 支持多種部署目標,滿足不同場景的需求。開發者可以選擇在本地環境中部署智能體,這種方式提供了最大的靈活性和數據隱私保護。例如,對于一些涉及企業核心機密數據的智能體應用,本地部署確保了數據不會離開企業內部網絡,開發者也能夠方便地進行調試和快速迭代。
同時,Strands 也完美適配 AWS 的云服務環境,支持在 AWS Lambda、Fargate 和 EC2 等平臺上部署。在 AWS Lambda 上,智能體能夠根據請求量自動彈性擴展資源。當面臨高并發的用戶請求時,Lambda 會自動增加智能體實例的數量,快速處理任務,確保服務的穩定性和響應速度;而在請求量較低時,又會自動減少資源占用,降低運行成本。在 Fargate 容器中運行智能體,則提供了良好的隔離性和可管理性,開發者可以輕松地更新智能體版本,而不必擔心底層基礎設施的復雜性。EC2 則為需要長期運行、穩定計算資源的智能體應用提供了可靠的支撐。
此外,Strands 還支持四種典型的智能體架構。一種是智能體完全在本地運行,通過客戶端應用與用戶交互,所有工具也在本地環境中執行,這種方式適合對數據隱私和本地響應速度要求極高的場景。

智能體本地運行架構
上圖展示了智能體完全在本地運行的架構。這種架構適用于需要高度數據隱私保護的場景,例如企業內部的敏感數據處理。客戶端應用直接與本地運行的智能體交互,所有工具也在本地環境中執行,確保數據不會離開本地網絡。
另一種是將智能體及其工具部署在 API 后端,通過網絡對外提供服務,前端應用可以通過簡單的 HTTP 請求調用智能體功能,便于構建面向用戶的 Web 或移動應用。

智能體部署在 API 后端架構
上圖展示了智能體及其工具部署在 API 后端的架構。這種架構適用于需要對外提供服務的場景,前端應用通過 HTTP 請求調用后端的智能體功能,智能體和工具都部署在云環境中,例如 AWS Lambda 或 Fargate,能夠根據請求量自動擴展資源。
第三種架構將智能體循環與工具執行環境分離,智能體在 Fargate 容器中運行,而工具在 Lambda 函數中執行,這種分離實現了更好的安全性和資源優化。

智能體與工具分離部署架構
上圖展示了智能體與工具分離部署的架構。智能體在 Fargate 容器中運行,而工具在 Lambda 函數中執行。這種分離實現了更好的安全性和資源優化,智能體和工具可以在不同的環境中獨立擴展和管理。
最后一種是客戶端負責運行部分工具的控制返回模式,智能體在服務器端運行,但部分輕量級工具在客戶端執行,減少了服務器端的負載,同時降低了網絡延遲。

智能體使用混合工具運行模式架構
上圖展示了智能體使用混合工具運行模式的架構。智能體在服務器端運行,但部分輕量級工具在客戶端執行。這種模式減少了服務器端的負載,同時降低了網絡延遲,適合需要快速響應的場景。
(二)全面的可觀測性
在智能體的運行過程中,可觀測性至關重要。Strands 通過集成 OpenTelemetry(OTEL),為開發者提供了全方位的可觀測能力。
OpenTelemetry 能夠收集智能體的詳細軌跡數據和各類指標,如智能體的響應時間、工具調用的頻率和成功率、模型推理的耗時等。這些數據可以被發送到任何 OTEL 兼容的后端系統,進行可視化展示、深度分析和故障排查。例如,通過可視化面板,開發者可以直觀地看到智能體在不同時間段的性能表現,及時發現響應時間過長或工具調用失敗等問題。
分布式跟蹤功能則為智能體在復雜架構中的問題定位提供了強大支持。它能夠追蹤一個請求在智能體循環、工具執行環境、模型推理服務等多個組件之間的流轉路徑,完整地呈現智能體會話的全貌。當智能體在處理某個任務時出現異常,開發者可以通過分布式跟蹤快速定位問題發生的具體環節,是模型返回了不合理的結果,還是某個工具執行超時,亦或是智能體循環中的邏輯錯誤。借助日志記錄功能,開發者還能查看智能體在處理任務時的詳細操作步驟和中間結果,進一步輔助問題診斷和性能優化。
例如,通過 OpenTelemetry 收集到的數據顯示,某個智能體在處理圖像識別任務時,模型推理耗時較長。開發者進一步分析發現,是當前選用的模型對高分辨率圖像的處理效率較低。于是,開發者可以嘗試更換更高效的模型,或者對圖像進行預處理降低分辨率,從而優化智能體的性能。
開源:共同塑造智能體的未來
Strands Agents SDK 的開源不僅為開發者提供了強大的工具,更催生了一個充滿活力的開源社區。眾多知名企業如 Anthropic、Meta 等紛紛加入,貢獻代碼、分享經驗并提出改進建議。Anthropic 為 Strands 提供了通過其 API 使用模型的支持,加速了智能體對不同模型的兼容性開發;Meta 則貢獻了 Llama 模型的集成方案,豐富了智能體的模型選擇。
開發者可以通過訪問 Strands 的 GitHub 倉庫,輕松參與社區建設。無論是提交新的功能需求、報告潛在的軟件缺陷,還是直接貢獻代碼優化現有功能,每一份參與都能推動 Strands 的持續進步。社區的活躍氛圍和豐富資源,為智能體技術的創新和發展提供了肥沃的土壤。
隨著社區的不斷壯大和技術的持續演進,Strands Agents SDK 有望在更多領域展現其價值。
總結
Strands Agents SDK 憑借其清晰的模型 - 工具 - 提示分離架構、高效的模型驅動循環以及與現有 LLM 生態系統的無縫集成,為開發者呈現了一種低代碼量、高定制化的智能體開發范式。它不僅解決了傳統智能體開發中的復雜性和高門檻問題,還通過強大的可擴展性和靈活的部署選項,滿足了多樣化的企業級應用需求。
在實際案例中,AWS 內部團隊的成功實踐為我們提供了寶貴的參照系。命名助手示例的過程可以看到,很小的代碼量就能讓一個智能體運行起來,開發體驗良好,學習曲線較低。而部署與可觀測性相關內容,可以讓我們看到智能體應用在企業級環境中穩定運行和持續優化的重要性。Strands 提供的多樣化部署方式和完善的可觀測性功能,為智能體的廣泛應用和長期發展奠定了堅實基礎。通過 OpenTelemetry 等工具,開發者能夠全面掌控智能體的運行狀態,及時發現并解決問題,確保智能體能夠始終以最佳狀態服務于業務需求。這一切極具工程落地的思考。
在 AI 技術快速演進的今天,Strands Agents SDK 無疑為智能體開發注入了新的活力。它讓更多的開發者能夠投身于智能體應用的創新實踐,加速 AI 技術在各行業的落地生根。
除此以外,我們還可以結合之前的消息,Google Cloud Next 大會上提出 A2A 智能體協議,以及微軟的Azure AI Foundry 支持 A2A 協議,加上我閱讀 AWS 的文檔看到,這套開源的 Agent 框架也將會支持 A2A 協議。至此,A2A 協議已被三大云計算巨頭支持,思考一下,云計算的未來會有什么格局?云計算的架構會有什么變化?過去以DB 為中心的傳統信息架構是否會向以AI 模型為智能中心,以Memory(DB 輔助或其他存儲體如向量)為輔的Agent云的形態發展?
參考資料
- AWS Open-Sources Strands Agents SDK to Simplify AI Agent Development
- Introducing Strands Agents, an Open Source AI Agents SDK
https://aws.amazon.com/cn/blogs/opensource/introducing-strands-agents-an-open-source-ai-agents-sdk/
- 開源倉庫
https://github.com/strands-agents/https://github.com/strands-agents/sdk-python
https://github.com/strands-agents/agent-builder
https://github.com/strands-agents/tools
https://github.com/strands-agents/mcp-server




































