Amazon Bedrock

Amazon Bedrock bietet verwaltete Rückschlüsse auf Foundation-Modelle über AWS. Agent Framework kann einen Bedrock IChatClient verpacken oder den Python BedrockChatClient verwenden und dabei die Standard-Agent-, -Sitzungs-, -Middleware- und -Tool-APIs beibehalten.

Important

Amazon Bedrock ist ein Drittanbietersystem. Überprüfen Sie die AWS-Servicebedingungen, datenverarbeitung, regionale Verfügbarkeit, Modellzugriff und Nutzungskosten, bevor Sie Anwendungsdaten senden.

Installieren der Pakete

dotnet add package AWSSDK.Extensions.Bedrock.MEAI
dotnet add package Microsoft.Agents.AI --prerelease

Konfiguration

AWS_REGION="us-east-1"
BEDROCK_MODEL_ID="anthropic.claude-3-5-sonnet-20241022-v2:0"

Die Authentifizierung verwendet die standardmäßige AWS-Anmeldeinformationskette und umfasst Umgebungsvariablen, gemeinsam genutzte Profile, Workload-Identität und IAM-Rollen.

Erstellen Sie den AWS Bedrock-Runtime-Client, konvertieren Sie ihn in IChatClient, und erstellen Sie dann einen Agent Framework-Agent.

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-Anmeldeinformationen folgen der standardmäßigen AWS-Anmeldeinformationskette. Gewähren Sie nur die Bedrock-Modellaktionen, die die Anwendung benötigt.

Installiere das Paket

pip install agent-framework-bedrock --pre

Konfiguration

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 liest das Modell, die Region und die AWS-Anmeldeinformationen aus seinen Einstellungen oder aus explizit angegebenen Konstruktorwerten.

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}")

Verwenden Sie BedrockChatOptions für Bedrock-spezifische Anforderungsoptionen und BedrockGuardrailConfig, wenn Ihre Bereitstellung Bedrock-Schutzmaßnahmen verwendet. Der Python-Client leitet additionalModelRequestFields, guardrailConfig, performanceConfig, requestMetadata und promptVariables an die Bedrock Converse-API weiter, wenn Sie sie setzen.

Bei Nicht-Streaming-Anfragen lässt der Client guardrailConfig.streamProcessingMode weg, da dieses Feld nur für ConverseStream gilt. Wenn die Modell-ID eine ARN für die Prompt-Verwaltung ist, definieren Sie Inferenz-, System-, Tool- und zusätzliche Anforderungsfelder des Modells in der verwalteten Eingabeaufforderung. Bedrock lehnt diese Felder in der Laufzeitanforderung ab, sodass sie vom Client weggelassen werden; promptVariables bleibt verfügbar.

Senden von Bildeingaben

BedrockChatClient sendet datengestützte Bilder von Benutzernachrichten über die Bedrock Converse-API, wenn das ausgewählte Modell Bildeingaben unterstützt. Erstellen Sie den Bildinhalt mit Content.from_data() oder einem Base64-Daten-URI.

Bedrock akzeptiert GIF-, JPEG-, PNG- und WebP-Bilder. Der Client sendet keine externen Bild-URLs, Bilder aus dem Verlauf von Assistentennachrichten oder umfangreiche Bildinhalte in Toolergebnissen. Laden Sie ein externes Bild herunter, und übergeben Sie die Bytes, wenn Sie es an das Modell senden müssen.

Einbettungen generieren

BedrockEmbeddingClient generiert Einbettungen mit Amazon Titan Embedding-Modellen. Konfigurieren Sie BEDROCK_EMBEDDING_MODEL und BEDROCK_REGION und verwenden Sie dann dieselbe AWS-Anmeldeinformationskette wie BedrockChatClient.

Für diesen Client wird derzeit kein runnables Agent Framework-Einbettungsbeispiel veröffentlicht.

Note

Amazon Bedrock-Integration ist derzeit nicht für Agent Framework Go verfügbar. Den neuesten Status finden Sie im Agent Framework Go-Repository .

Tools

Bedrock unterstützt lokal aufgerufene Agent Framework-Tools, stellt aber keine vom Anbieter gehosteten Toolfabriken zur Verfügung.

Tool C# Python Hinweise
Funktionswerkzeuge ✅ ✅ Die Modellunterstützung variiert je nach ausgewähltem Bedrock-Modell.
Toolgenehmigung ✅ ✅ Wird von der Funktionsaufrufschleife des Agent Framework verwendet.
Codedolmetscher ❌ ❌ Keine Bedrock-gehostete Codedolmetscherintegration.
Dateisuche ❌ ❌ Keine Bedrock-gehostete Dateisuche-Integration.
Websuche ❌ ❌ Keine von Bedrock gehostete Integration der Websuche.
Gehostete MCP-Tools ❌ ❌ Keine Bedrock-gehostete MCP-Integration.
Lokale MCP-Tools ✅ ✅ Wird im Anwendungsprozess ausgeführt.

Nächste Schritte