隨著我們不斷見證AI代理在功能和多功能性方面的進步,我聽到一些開發者表示,他們部署代理的經驗大多停留在本地和實驗階段。無論您是使用Strands Agents 、 Crew AI 、 LangGraph等工具開發代理,從概念驗證(PoC)到生產環境的轉變都充滿挑戰,甚至在規模化上幾乎不可能實現。
在這篇文章中,我將介紹有關解決此問題的新 AWS 服務的一些基本知識以及我第一次使用它的經驗。
現在,當我們回顧我在 PoC → Production 中提到的這個挑戰時,看到Amazon Bedrock AgentCore的預覽版發布試圖填補開發人員急需的這一空白也就不足為奇了。
對於那些不知道的人來說,7 月 16 日,AWS 宣布推出 AgentCore,使開發人員能夠使用眾所周知的靈活、可擴展的基礎設施和基本安全控制(以及其他方面)的理念大規模部署 AI 代理。
這次公告中有很多有趣的事情,其中之一就是 AWS 服務的一個有點獨特的思維模型 - AgentCore 將自己呈現為一個模組化(就像樂高積木)元件工具箱,允許開發人員選擇他們需要的元件,並根據用例的變化一起使用或獨立使用它們。
除了模組化之外,AgentCore 還試圖透過提供模型和代理框架選擇來脫穎而出(即,您不必使用 Amazon Bedrock,而可以使用開源框架)。
以下是預覽版中 7 個 AgentCore 元件的簡單分類:
AgentCore Runtime:一個安全的無伺服器執行時,用於使用任何開源框架、任何協定和任何模型來部署和擴展 AI 代理和工具。
AgentCore Identity:安全性、可擴充的代理程式身分和存取管理功能。相容於現有身分提供者,無需遷移使用者或重建身分驗證流程。
AgentCore Memory:為多輪對話的短期記憶和可在代理和會話之間共享的長期記憶提供支援。
AgentCore 程式碼解釋器:使代理程式能夠在隔離的沙盒環境中安全地執行程式碼。提供高級配置支援並與主流框架無縫整合。
AgentCore 瀏覽器:提供快速、安全、基於雲端的瀏覽器執行時,使 AI 代理程式能夠大規模地與網站互動。
AgentCore 閘道:代理程式發現和使用工具的安全方式,同時輕鬆將 API、Lambda 函數和現有服務轉換為與代理程式相容的工具。
AgentCore 可觀察性:透過統一的操作儀表板,幫助開發人員追蹤、除錯和監控生產環境中的代理效能。支援與 OpenTelemetry 相容的遙測技術,並可對代理商工作流程的每個步驟進行詳細的視覺化。
截至本文發佈時,Bedrock AgentCore 的預覽版目前僅在美國東部(維吉尼亞北部)、美國西部(俄勒岡)、亞太地區(雪梨)和歐洲(法蘭克福)提供。
我花了一天時間對 AgentCore 進行破解,但對它一無所知,雖然我不能說這是一次完全用戶友好的體驗,但我會介紹一些我喜歡的領域,以及我希望團隊在準備全面上市時能夠改進的地方。
我開始了我的 AgentCore 之旅,去了一個我認為對真正的初學者來說最好的地方:官方的AWS Samples GitHub ,從這裡開始,有幾種我想要學習的內容可供選擇:
1)執行時託管代理
2)在執行時託管 MCP 伺服器
3)高階概念
4)在執行時期託管基於 TypeScript 的 MCP
我選擇了第一個選項,這裡的教程有三種形式,如下所示
我已經使用 Strands Agents 框架進行了大量工作,並希望使用我的 Antropic API 金鑰,因此我遵循OpenAI 範例進行破解,因為它最接近我想要做的事情。
附註:雖然我一直以來都很喜歡 Jupyter Notebook,但我發現這個 Notebook 的使用體驗有點困難,而且它為本來就相當複雜的服務增加了不少複雜性。我已經向團隊回饋了這個問題,但如果你也在使用這些 Notebook 教程,我還是想分享一下我的看法。
筆記本中的範例為代理程式建立了一個工具,但我選擇退出,而是使用現有的Strands 工具供 AWS 使用。我的程式碼與筆記本中的內容略有不同。為了便於理解,這裡展示了我的 agent.py 文件,以及我如何準備它以便與 AgentCore Runtime 配合使用。
⚠️注意:
use_aws
工具在本地查找我的 AWS 設定檔以使用~/.aws/credentials
進行身份驗證,在嘗試使用此工具或任何其他需要使用 AWS 帳戶的工具之前,您需要進行該設定。
import os
from bedrock_agentcore.runtime import BedrockAgentCoreApp
from strands import Agent
from strands.models.anthropic import AnthropicModel
from strands_tools import use_aws
app = BedrockAgentCoreApp()
model = AnthropicModel(
client_args={
"api_key": os.getenv("api_key"),
},
# **model_config
max_tokens=1028,
model_id="claude-sonnet-4-20250514",params={"temperature": 0.3,}
)
agent = Agent(model=model, tools =[use_aws])
@app.entrypoint
def strands_agent_anthropic(payload):
"""
Invoke the agent with a payload
"""
user_input = payload.get("prompt")
response = agent(user_input)
return response.message["content"][0]['text'].replace('\\n', '\n')
if __name__ == "__main__":
app.run()
這裡要重點強調的是準備代理與執行時一起工作所需的程式碼行,它們列在筆記本中,但為了簡單起見,我也會在這裡分享:
使用from bedrock_agentcore.runtime import BedrockAgentCoreApp
導入執行時應用程式
使用app = BedrockAgentCoreApp()
在程式碼中初始化應用程式
使用@app.entrypoint
裝飾器裝飾呼叫函數
讓 AgentCore Runtime 使用app.run()
控制代理程式的執行
完成後,我需要將代理程式部署到執行時間環境。這可以透過兩種方式完成:手動部署(步驟更多,管理難度更大,並且需要 Docker 經驗) ;或使用 AgentCore 入門工具包(它是一個命令列工具包,可以幫助您管理許多部署步驟)。如果您希望完全掌控代理程式的實現,本文件的這一部分將介紹如何在不使用工具包的情況下將代理程式部署到執行時間環境。
使用入門工具包,接下來的步驟相當簡單。
1)使用終端機中的命令: agentcore configure -e agent.py
以預設值配置代理程式。
2)使用終端機中的agentcore launch
在執行階段託管代理程式。
如果後端一切順利,我應該會在終端機上看到以下成功訊息:
要呼叫代理,我可以在終端機中使用agentcore invoke '{"prompt": "how many VPCs do I have in us-west-2?"}'
(這是我的特定代理的範例提示,它使用 Strands 工具從我的 AWS 帳戶中提取資訊)
看起來一切運作良好,因為我可以在終端機中看到該代理交互的結果:
現在讓我快速介紹一下我在過程中發現的痛點...
在使用範例筆記本時,沒有提到啟用代理的可觀察性,這是入門文件第 1 步驟中所述的要求。
TLDR;您需要啟用 CloudWatch Transaction Search 以便 AgentCore Runtime 正確地呼叫您的代理程式。
我的代理程式正在使用 EC2 執行 boto3 操作,因此需要一些非預設的 IAM 權限。找到代理程式的 IAM 執行角色來編輯這些權限尤其棘手。
1) 在 IAM AWS 控制台中搜尋“agentcore”,然後反向尋找角色
2)開啟配置時產生的隱藏 yaml 檔案並查看“執行角色”
3) 導覽至 AgentCore AWS 控制台 → 代理程式執行時 → 代理名稱 → 版本 → IAM 服務角色
總的來說,一旦我正確設定使用執行時,一切都會順利進行,啟動工具包也很有價值,但是人們在使用它時仍然有很多地方容易出錯,不幸的是,示例本身需要一些磨練以避免常見的陷阱。
在接下來的幾週內,我將探索 AgentCore 的其他元件,例如記憶體和網關,敬請期待。
如果您讀到這裡,請不要忘記給我一個🦄,並在評論中告訴我您還想看到什麼內容!
原文出處:https://dev.to/aws/first-impressions-with-amazon-bedrock-agentcore-5dje