Amazon Bedrock

Amazon Bedrock biedt beheerde deductie voor basismodellen via AWS. Agent Framework kan een Bedrock IChatClient verpakken of de Python BedrockChatClient gebruiken terwijl de standaardagent, sessie, middleware en hulpprogramma-API's behouden blijven.

Belangrijk

Amazon Bedrock is een systeem van derden. Bekijk servicevoorwaarden voor AWS, gegevensverwerking, regionale beschikbaarheid, modeltoegang en gebruikskosten voordat u toepassingsgegevens verzendt.

De pakketten installeren

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"

Verificatie maakt gebruik van de standaard-AWS-referentieketen, waaronder omgevingsvariabelen, gedeelde profielen, workloadidentiteit en IAM-rollen.

Maak de AWS Bedrock Runtime-client, converteer deze naar IChatClienten maak vervolgens een 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-referenties volgen de standaard-AWS-referentieketen. Verdeel alleen de acties van het Bedrock-model die de toepassing nodig heeft.

Installeer het pakket

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 leest het model, de regio en AWS-referenties uit de instellingen of expliciete constructorwaarden.

Wanneer de client een runtimeclient maakt op basis van boto3_session, is de regioprecedentie het expliciete region argument, de opgeloste BEDROCK_REGION instelling, boto3_session.region_name en vervolgens us-east-1. Als u een vooraf gebouwde client opgeeft, wordt de sessie niet gebruikt en heeft de regio ervan geen invloed op de gerapporteerde regio.

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

Gebruik BedrockChatOptions voor Bedrock-specifieke aanvraagopties en BedrockGuardrailConfig wanneer uw implementatie Bedrock-guardrails gebruikt. De Python-client stuurt additionalModelRequestFields, guardrailConfig, , performanceConfigrequestMetadataen promptVariables naar de Bedrock Converse-API wanneer u ze instelt.

Voor niet-streaming-aanvragen laat de client weg guardrailConfig.streamProcessingMode omdat dat veld alleen geldig is voor ConverseStream. Wanneer de model-id een Prompt Management ARN is, definieert u deductie-, systeem-, hulpprogramma- en aanvullende modelaanvraagvelden in de beheerde prompt. Bedrock weigert deze velden in de runtime-aanvraag, zodat de client ze weglaat; promptVariables blijft beschikbaar.

Afbeeldingsinvoer verzenden

BedrockChatClient verzendt door gegevens ondersteunde afbeeldingen van gebruikersberichten via de Bedrock Converse-API wanneer het geselecteerde model ondersteuning biedt voor afbeeldingsinvoer. Maak de inhoud van de afbeelding met Content.from_data() of een base64-gegevens-URI.

Bedrock accepteert GIF-, JPEG-, PNG- en WebP-afbeeldingen. De client verzendt geen externe afbeeldings-URL's, afbeeldingen uit de geschiedenis van assistentberichten of uitgebreide inhoud van afbeeldingen in de resultaten van het hulpprogramma. Download een externe afbeelding en geef de bytes door wanneer u deze naar het model wilt verzenden.

Embeddings genereren

BedrockEmbeddingClient genereert insluitingen met Amazon Titan-insluitingsmodellen. Configureer BEDROCK_EMBEDDING_MODEL en BEDROCK_REGIONgebruik vervolgens dezelfde AWS-referentieketen als BedrockChatClient.

Er is momenteel geen runnable Agent Framework-insluitingsvoorbeeld gepubliceerd voor deze client.

Opmerking

Amazon Bedrock-integratie is momenteel niet beschikbaar voor Agent Framework Go. Zie de opslagplaats Agent Framework Go voor de meest recente status.

Tools

Bedrock ondersteunt lokaal aangeroepen Agent Framework-tools, maar stelt geen door providers gehoste tool factories beschikbaar.

Tool C# Python Opmerkingen
Functiehulpmiddelen ✅ ✅ Modelondersteuning verschilt per geselecteerd Bedrock-model.
Goedkeuring van hulpprogramma ✅ ✅ Toegepast door de functie-aanroeplus van agentframework.
Code-interpreter ❌ ❌ Geen door Bedrock gehoste code-interpreter-integratie.
Zoeken naar bestanden ❌ ❌ Geen door Bedrock gehoste integratie van bestandszoekopdrachten.
Zoeken op internet ❌ ❌ Geen door Bedrock gehoste integratie van webzoekopdrachten.
Gehoste MCP-tools ❌ ❌ Geen door Bedrock gehoste MCP-integratie.
Lokale MCP-hulpprogramma's ✅ ✅ Wordt uitgevoerd in het toepassingsproces.

Volgende stappen