如何開始使用 Amazon Bedrock AgentCore 的 Web Answer
Getting started with Web Answer on Amazon Bedrock AgentCore
AWS 宣佈 Amazon Bedrock AgentCore 的 Web Answer 正式可用,用戶可透過一次工具調用,取得根據當前網頁來源生成並附有引用的答案。Web Answer 會規劃並執行多次搜尋、核對網頁內容,再生成答案;相較之下,Web Search 提供排序結果,由用戶自己的模型負責合成答案。目前服務只在 us-east-1 提供,每 1,000 次工具調用收費 $10。
文章交代 Web Answer 與 Web Search 的分工,並逐步示範如何透過 AgentCore Gateway 接入及由 MCP 相容 Agent 調用,呈現整合流程。
今天,我們宣佈 Web Answer 在 Amazon Bedrock AgentCore 正式推出。透過 Web Answer,Agent 開發者只需呼叫一次工具,即可取得以自然語言問題為基礎、經綜合整理並附有來源引註的答案。他們不再需要自行建立搜尋、擷取、綜合整理及引註流程。
如果你曾建立需要根據目前網上來源回答問題的 Agent,就會熟悉這套流程:呼叫搜尋 API、判斷哪些結果可信、擷取並清理網頁內容、提示模型綜合整理資料,然後設計引註擷取流程,確保輸出可追溯至來源。每個步驟都需要你維護程式碼,也各自帶來出錯的機會:證據不足時出現幻覺、索引變動時內容過時,以及主張與來源不再吻合時出現歸屬錯誤。
Web Answer 將整個流程簡化為一次請求。你提交問題,幾秒內便會收到附有引註的答案。本文會説明 Web Answer 的功能,比較它與 AgentCore 上的 Web Search,展示其運作方式和回傳內容,並逐步介紹如何將 Web Answer 加入 Gateway,以及如何從 Agent 呼叫它。
Web Answer 的功能
圖 1:Agent 經由 Gateway 向 Web Answer 發出請求並接收回覆的流程
你的 Agent 會向 AgentCore Gateway(Amazon Bedrock AgentCore 的一項功能)傳送問題。Gateway 會使用 AWS Identity and Access Management (AWS IAM) 或 JSON Web Token (JWT) 驗證呼叫。Gateway 會使用自己的服務角色,呼叫由 AWS 管理的連接器 Web Answer。Web Answer 會規劃搜尋、並行執行多項搜尋,並閲讀主要網頁核實事實。證據不足時,它會再次搜尋,然後撰寫答案,並將每項主張連結至其來源網址。Gateway 會以 Model Context Protocol (MCP) 工具結果的形式,將答案及其引註傳回你的 Agent。
Web Answer 是一項受管理的 AgentCore Gateway 工具,只需輸入自然語言問題,便可在幾秒內回傳一份根據目前網上來源綜合整理的答案。你會收到以下內容:
- 有根據並附有引註的答案;每項有根據的主張均對應一項引註,並會在可用時附上來源網址。
- 目前來源。Web Answer 會為每個問題執行新的搜尋,並向模型提供當日日期,讓它搜尋最新資訊。
- 代理式搜尋:Web Answer 會自行規劃搜尋、並行執行多項搜尋、閲讀網頁核實事實,並判斷何時已有足夠證據作答。
- 負責任 AI 防護措施:Web Answer 的設計和測試均納入負責任 AI 防護措施。
圖 2:示範影片展示如何將 Web Answer 加入 AgentCore Gateway,從設定到取得完成的附引註答案
與 Web Search 的分別
Web Answer 和 Web Search 工具均支援擷取用途,但整合複雜程度不同。分別在於由誰執行模型:
- Web Search:回傳按排名排列的網址、標題、摘要及中繼資料。你可以繼續使用自己的模型,並自行控制如何綜合整理結果。如果你希望全面控制結果的處理方式,便可使用 Web Search。
- Web Answer:為你執行模型、代理式擷取流程、綜合整理及來源歸屬,讓你取得一份完成並附有引註的答案。如果問題是較大型 Agent 中的一項子任務,而你不想為此自行管理擷取流程,便可使用 Web Answer。
許多客戶會兩者兼用。對於需要原始結果的廣泛研究任務,Agent 可能會使用 Web Search;對於需要快速取得附有引用來源答案的具體事實問題,則可能會使用 Web Answer。
設定及呼叫 Web Answer
Web Answer 是由 AWS 擁有的連接器。你可以透過 ID 引用它,而 Gateway 會處理工具結構描述、參數管治、端點解析,以及向後端進行驗證。在本逐步教學中,你會授予 Gateway 的服務角色呼叫 Web Answer 的權限、新增 Web Answer 目標,並從 Strands Agent 呼叫它。
開始使用
只需數分鐘即可開始。Gateway 管理員在現有的 AgentCore Gateway 上新增 Web Answer 作為目標,任何連接至該 Gateway 的 Agent 便可透過 MCP,經由 tools/list 和 tools/call 使用該工具。
先決條件
- 具備 AgentCore Gateway 存取權的 AWS 帳戶。
- 位於 us-east-1 並使用 IAM(
AWS_IAM)入站驗證的 AgentCore Gateway。如要建立 Gateway,請參閲 Developer Guide 中的 建立 Amazon Bedrock AgentCore Gateway。 - 具備
bedrock-agentcore:InvokeGateway權限的 AWS 身分憑證,可用於存取 Gateway;並具備 Amazon Bedrock 存取權,以使用 Agent 所採用的模型。 - Python 3.10 or later, with the required packages:
pip install boto3 strands-agents mcp mcp-proxy-for-aws
注意:按照這些步驟建立的 AWS 資源會產生費用。Gateway 和 Web Answer 呼叫均會收費。詳情請參閲下文的「定價」一節;完成後,請刪除已建立的資源(請參閲「清理資源」)。
步驟 1:授予 Gateway 服務角色存取 Web Answer 的權限
Gateway 會使用其服務角色代你執行操作。該角色的信任政策允許 bedrock-agentcore.amazonaws.com 擔任此角色,並將範圍限制在你的帳戶。Web Answer 所需的角色權限如下:
bedrock-agentcore:InvokeWebAnswer,用於呼叫 Web Answer。Gateway 每次收到請求時,都會根據 AWS 擁有的 ARNarn:aws:bedrock-agentcore:us-east-1:aws:tool/web-answer.v1檢查此權限。
以內嵌政策方式將政策附加至服務角色:
import json
import boto3
iam = boto3.client("iam")
iam.put_role_policy(
RoleName="<gateway-service-role>",
PolicyName="WebAnswerGuide",
PolicyDocument=json.dumps({
"Version": "2012-10-17",
"Statement": [
{
"Sid": "InvokeWebAnswer",
"Effect": "Allow",
"Action": "bedrock-agentcore:InvokeWebAnswer",
"Resource": "arn:aws:bedrock-agentcore:us-east-1:aws:tool/web-answer.v1",
}
],
}),
)此角色只控制 Gateway 的對外呼叫。哪些人可以呼叫 Gateway,則由其入站授權器設定。此角色亦不需要 bedrock:InvokeModel:Agent 使用的模型會以 Agent 本身的身分執行。
步驟 2:建立 Web Answer 目標
新增 Web Answer 作為連接器目標。connectorId 會指示 Gateway 要佈建哪個受管理整合項目:在此情況下,是一個搜尋網頁並撰寫附有引用來源答案的 Agent。
import boto3
gateway_client = boto3.client("bedrock-agentcore-control", region_name="us-east-1")
target_response = gateway_client.create_gateway_target(
name="web-answer-tool",
gatewayIdentifier=gateway_id,
targetConfiguration={
"mcp": {
"connector": {
"source": {"connectorId": "web-answer"},
"configurations": [{"name": "WebAnswer", "parameterValues": {}}],
}
}
},
credentialProviderConfigurations=[
{"credentialProviderType": "GATEWAY_IAM_ROLE"}
],
)
target_id = target_response["targetId"]連接器的對外驗證會自動處理。使用 GATEWAY_IAM_ROLE 時,Gateway 會透過步驟 1 的服務角色呼叫 Web Answer 後端,因此你毋須為該工具建立或儲存任何憑證。請等待 get_gateway_target 顯示目標狀態為 READY,然後再呼叫該工具。
作為 Gateway 管理員,你亦可以在目標上設定網域篩選器。所有經由該目標的呼叫都會套用此篩選器。如要將目標限制在指定網域,請將 parameterValues 設為 {"domainFilter": {"include": ["bis.org"], "exclude": ["unreliable-source.net"]}}。
步驟 3:從 Strands Agent 呼叫 Web Answer
你的 Agent 會透過 Gateway 的 tools/list 找到 Web Answer,並像呼叫其他 MCP 工具一樣,使用 tools/call 呼叫它。此方法適用於 Strands Agents、LangChain、LangGraph、CrewAI,或任何其他兼容 MCP 的用戶端。
from strands import Agent
from strands.models.bedrock import BedrockModel
from strands.tools.mcp import MCPClient
from mcp_proxy_for_aws.client import aws_iam_streamablehttp_client
gateway_url = "https://gateway-<id>.gateway.bedrock-agentcore.us-east-1.amazonaws.com/mcp"
mcp_client = MCPClient(lambda: aws_iam_streamablehttp_client(
endpoint=gateway_url,
aws_region="us-east-1",
aws_service="bedrock-agentcore",
aws_profile="<aws-profile-id>", # identity with bedrock-agentcore:InvokeGateway on the Gateway
))
model = BedrockModel(model_id="us.anthropic.claude-sonnet-5", max_tokens=1024)
with mcp_client:
tools = mcp_client.list_tools_sync() # Web Answer tool discovered from the Gateway
agent = Agent(model=model, tools=tools)
result = agent("What are the Basel III minimum requirements for Tier 1 capital?")
print(result.message)當問題需要最新資訊時,你的 Agent 會呼叫 Web Answer 工具(web-answer-tool___WebAnswer)。Web Answer 會執行代理式搜尋,並傳回一份已完成且附有引用來源的答案。
除了問題外,Web Answer 工具亦接受一些可選參數,Agent 可在每次呼叫時設定:用於納入或排除網站的網域篩選器、發佈日期範圍,以及用於按國家/地區調整搜尋結果的設定。Agent 的網域篩選器會與目標的篩選器合併。Agent 可以排除更多網域,或將結果限制在目標已納入的部分網域,但不能加入被目標篩選器封鎖的網域。
回應格式
Web Answer 會傳回同時包含 content 和 structuredContent 欄位的 MCP 工具結果。答案是 Markdown 文字,並附有如 [1] 的行內引用標記;structuredContent.answer 會連同結構化引用清單一併提供相同文字:
{
"content": [
{
"type": "text",
"text": "Under Basel III, banks must hold Common Equity Tier 1 capital of at least 4.5% of risk-weighted assets [[1](https://www.bis.org/...)]..."
}
],
"structuredContent": {
"answer": [
{
"text": "Under Basel III, banks must hold Common Equity Tier 1 capital of at least 4.5% of risk-weighted assets [[1](https://www.bis.org/...)]...",
"citations": [
{ "domain": "bis.org", "url": "https://www.bis.org/..." }
]
}
]
},
"isError": false,
"_meta": {
"latencyMs": 5210
}
}structuredContent.answer 通常只包含一個區塊。每項引用都包含來源網址,以及在可用時提供的網域。
清理資源
不再需要 Web Answer 目標時,請將其刪除:
gateway_client.delete_gateway_target(gatewayIdentifier=gateway_id, targetId=target_id)如果你只為這次教學建立 Gateway,請先刪除其中的目標,然後刪除 Gateway (delete_gateway),再刪除服務角色及其政策。除這些資源外,AWS 方面沒有其他持續存在的基礎設施。移除這些資源後,便不會再產生費用。
內置企業控制措施
Web Answer 繼承與其他 AgentCore 工具相同的企業控制措施:
- Gateway 驗證。 無需另行配置、輪替或管理 API 金鑰。呼叫方會使用你配置的入站驗證方式向 Gateway 驗證身分,例如 AWS IAM (SigV4),或由你的身分提供者簽發的 JSON Web Token。然後,Gateway 會使用自己的服務角色呼叫 Web Answer,而該角色需要
bedrock-agentcore:InvokeWebAnswer權限。 - VPC 和 AWS PrivateLink。 你的 Agent 可透過介面虛擬私有雲 (VPC) 端點 (
com.amazonaws.us-east-1.bedrock-agentcore.gateway) 呼叫 Gateway,讓流量不經過公用互聯網。 - 零資料外傳。 你的查詢和結果會留在 AWS 環境內。
- Amazon CloudWatch 指標。 從首次呼叫起,操作指標便會發佈至 CloudWatch。
- 每個帳戶的速率限制。 自推出起即會執行限制;在美國東部(北弗吉尼亞)(us-east-1),每個帳戶每秒最多 10 次交易。如需提高限制,請聯絡 AWS Support。
- 管理員設定的政策範圍。 Gateway 管理員會在設定目標時設定網域篩選範圍。Agent 可在每次呼叫時縮小範圍,但不能擴大範圍。
- 查詢留在 AWS 內。 Web Answer 會搜尋由 Amazon 營運的網絡索引和 Amazon 的知識圖譜,不會將你的問題傳送至第三方搜尋引擎或外部網站。
使用案例
Web Answer 可協助 Agent 擷取最新且附有引用來源的資訊,支援各類知識密集型工作流程。以下是一些例子:
- 金融服務。 法規問答 Agent 回答有關合規要求、市場規例和政策變更的問題,每個答案都必須追溯至權威來源。
- 醫療保健。 臨牀支援 Agent 以網上發佈的最新醫學文獻和治療指引為依據,提供回應。
- 客戶服務。 支援 Agent 即時回答產品和政策問題;在這類情況下,十個按排名排列的連結並無幫助,附有引用來源的答案才有用。
- 法律及合規。 研究助理回答有關案例法規、監管申報文件和政策詮釋的問題,並提供可供審核的引用。
- 企業知識工作者。 內部 Copilot 根據最新的公開資訊回答問題,員工無需自行建立搜尋及綜合整理資訊的工作流程。
供應情況
Web Answer 現已在美國東部(北弗吉尼亞)(us-east-1) 提供,更多 AWS 區域即將推出。
定價
Amazon Bedrock AgentCore 上的 Web Answer 定價為每 1,000 次工具呼叫 $10。
結語
在這篇文章中,我們展示了 Web Answer 如何透過代理式搜尋,為你的智能代理提供最新且附有引用來源的答案,無需自行建立或維護搜尋流程。我們授予 Gateway 服務角色使用 Web Answer 的權限,新增 Web Answer 目標,透過 Strands 智能代理呼叫它,並從回應中讀取答案及其引用來源。如果你希望自己的模型推理原始搜尋結果,請在 AgentCore 使用 Web Search;如果智能代理需要完整且附有引用來源的答案,則使用 Web Answer。
開始使用,請參閲:
- Amazon Bedrock AgentCore 文件中的 Web Answer
- Web Answer 結構化輸出結構描述
- 在 Amazon Bedrock AgentCore Gateway 加入 Web Answer
- 支援的區域
作者簡介
Adrianna Chudy
Adrianna 是 Amazon AGI 的資深軟件開發工程師,負責開發 Amazon Bedrock AgentCore 上的 Web Answer。她專注於基礎模型和 AI 代理的網頁搜尋及代理式問答,協助它們根據最新資訊提供準確且附有引用來源的答案。她自 2020 年加入 Amazon,先後為 Alexa 和 AWS 建立大規模知識系統。
Gaurav Deshmukh
Gaurav 是 Amazon AGI 的資深軟件開發工程師,在 Amazon 建立大規模分佈式系統方面有九年經驗。他負責支援基礎模型和 AI 代理運作的資訊檢索、資訊根據建立及代理式 AI 服務,包括 Amazon Bedrock AgentCore 提供的功能。他的工作協助 AI 代理存取準確的即時資訊並執行複雜的研究任務,提升代理式應用程式在大規模運作時的可靠性。
Kalyan Garimella
Kalyan 是 Amazon AGI 的首席產品經理,負責領導 Amazon Bedrock AgentCore 網頁搜尋功能的開發和推出。他的工作着重解決現代 AI 代理的一項核心限制:無法存取即時且具事實根據的資訊;他透過讓代理以即時網頁資料作為推理依據,克服這項限制。Kalyan 與家人居於灣區。
Kamrul Tarafder
Kamrul 是 AWS 產品市場推廣示範工程團隊的解決方案架構師,專門負責 Amazon Bedrock 和 Amazon Bedrock AgentCore 的 AI/ML。他結合互動式示範和技術敍述,讓複雜技術更易理解。工作以外,他喜歡在太平洋西北地區遠足、閲讀和欣賞電子音樂演出。
Omar Abdelwahab
Omar 是 Amazon Web Services (AWS) 的技術產品市場推廣經理,專注於 AI 產品,包括代理式 AI 和 Web Search。他持有電腦科學博士學位,喜歡探索 AI、技術和市場推廣策略的交匯點,協助客戶建立創新應用程式。
來源:AWS Machine Learning Blog · aws.amazon.com
