亞馬遜基岩

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 工具 ✅ ✅ 在應用程式程序中執行。

下一步