Amazon Bedrock 透過 AWS 為基礎模型提供受管推論。 Agent Framework 可以封裝 Bedrock IChatClient,或使用 Python BedrockChatClient,同時保留標準代理程式、工作階段、中介軟體和工具 API。
這很重要
Amazon Bedrock 是第三方系統。 在傳送應用程式資料前,請先審查 AWS 服務條款、資料處理、區域可用性、模型存取及使用成本。
安裝套件
dotnet add package AWSSDK.Extensions.Bedrock.MEAI
dotnet add package Microsoft.Agents.AI --prerelease
Configuration
AWS_REGION="us-east-1"
BEDROCK_MODEL_ID="anthropic.claude-3-5-sonnet-20241022-v2:0"
認證使用標準的 AWS 憑證鏈,包括環境變數、共享設定檔、工作負載身份及 IAM 角色。
建立 AWS Bedrock 執行時客戶端,轉換成 IChatClient,然後建立一個代理框架代理。
var awsRegion = Environment.GetEnvironmentVariable("AWS_REGION") ?? "us-east-1";
var modelId = Environment.GetEnvironmentVariable("BEDROCK_MODEL_ID") ?? "anthropic.claude-3-5-sonnet-20241022-v2:0";
// Create the Bedrock runtime client.
var bedrockRuntime = new AmazonBedrockRuntimeClient(RegionEndpoint.GetBySystemName(awsRegion));
IChatClient chatClient = bedrockRuntime.AsIChatClient(modelId);
AIAgent agent = chatClient.AsAIAgent(
instructions: "You are a helpful assistant.",
name: "BedrockAgent");
AWS 憑證遵循標準的 AWS 憑證鏈。 僅授予應用程式所需的 Bedrock 模型操作。
安裝套件
pip install agent-framework-bedrock --pre
Configuration
BEDROCK_REGION="us-east-1"
BEDROCK_CHAT_MODEL="anthropic.claude-3-5-sonnet-20241022-v2:0"
AWS_ACCESS_KEY_ID="<access-key>"
AWS_SECRET_ACCESS_KEY="<secret-key>"
# Optional temporary credentials:
AWS_SESSION_TOKEN="<session-token>"
# Optional shared profile:
AWS_PROFILE="<profile>"
BedrockChatClient 從設定或明確的建構值讀取模型、區域及 AWS 憑證。
async def main() -> None:
"""Run a Bedrock-backed agent with one tool call."""
# 1. Create an agent with Bedrock chat client and one tool.
agent = Agent(
client=BedrockChatClient(),
instructions="You are a concise travel assistant.",
name="BedrockWeatherAgent",
tools=[get_weather],
default_options=BedrockChatOptions(tool_choice="auto"),
)
# 2. Run a query that uses the weather tool.
query = "Use the weather tool to check the forecast for New York."
print(f"User: {query}")
response = await agent.run(query)
print(f"Assistant: {response.text}")
將 BedrockChatOptions 用於 Bedrock 專用的要求選項,並在您的部署使用 Bedrock 護欄時使用 BedrockGuardrailConfig。 當你設定 requestMetadata、promptVariables、additionalModelRequestFields、performanceConfig 和 guardrailConfig 時,Python 用戶端會將它們轉送至 Bedrock Converse API。
對於非串流請求,用戶端會省略 guardrailConfig.streamProcessingMode ,因為該欄位僅適用於 ConverseStream。 當模型 ID 是提示管理 ARN 時,請在受管提示上定義推論、系統、工具和其他模型請求欄位。 Bedrock 在執行時請求中拒絕這些欄位,因此客戶端會省略它們; promptVariables 仍然存在。
傳送影像輸入
BedrockChatClient 會在所選模型支援影像輸入時,透過 Bedrock Converse API 從使用者訊息傳送資料支援的影像。 使用 或 base64 資料 URI 建立Content.from_data()。
Bedrock 支援 GIF、JPEG、PNG 及 WebP 影像。 客戶端不會傳送外部圖片網址、助理訊息歷史中的圖片,或工具結果中的豐富圖片內容。 下載外部圖片,並在需要將其傳送給模型時傳遞其位元組資料。
產生內嵌
BedrockEmbeddingClient 透過 Amazon Titan 嵌入模型產生嵌入資料。 設定 BEDROCK_EMBEDDING_MODEL 和 BEDROCK_REGION,然後使用與 BedrockChatClient 相同的 AWS 憑證鏈。
目前尚未為此客戶端發布可執行的 Agent Framework 嵌入範例。
備註
目前 Agent Framework Go 沒有 Amazon Bedrock 整合功能。 最新狀態請參閱 Agent Framework Go 倉庫 。
Tools
Bedrock 支援本地調用的 Agent Framework 工具,但不會暴露由提供者託管的工具工廠。
| Tool | C# | Python | 註釋 |
|---|---|---|---|
| 函式工具 | ✅ | ✅ | 模型支援依所選基岩模型而異。 |
| 工具核准 | ✅ | ✅ | 透過代理框架函式調用迴圈應用。 |
| 程式碼解譯器 | ❌ | ❌ | 沒有與 Bedrock 託管的程式碼直譯器整合。 |
| 檔案搜尋 | ❌ | ❌ | 沒有由 Bedrock 代管的檔案搜尋整合。 |
| 網路搜尋 | ❌ | ❌ | 沒有 Bedrock 託管的網路搜尋整合。 |
| 託管 MCP 工具 | ❌ | ❌ | 沒有由 Bedrock 託管的 MCP 整合。 |
| 本地 MCP 工具 | ✅ | ✅ | 在應用程式程序中執行。 |