Amazon Bedrock

Amazon Bedrock fournit une inférence managée pour les modèles de base via AWS. Agent Framework peut encapsuler un Bedrock IChatClient ou utiliser le Python BedrockChatClient tout en conservant les API d’agent, de session, d’intergiciel et d’outil standard.

Important

Amazon Bedrock est un système tiers. Passez en revue les termes du service AWS, la gestion des données, la disponibilité régionale, l’accès aux modèles et les coûts d’utilisation avant d’envoyer des données d’application.

Traitez la sortie du modèle ou de l’embedding et les appels d’outils générés par le modèle lorsqu’ils sont pris en charge, comme une entrée d’application non approuvée. Validez-les avant que le code effectue des effets secondaires ou affiche du contenu. Si vous configurez un point de terminaison personnalisé, vérifiez que vous faites confiance à son URL et à son opérateur.

Installer les packages

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"

L’authentification utilise la chaîne d’informations d’identification AWS standard, notamment les variables d’environnement, les profils partagés, l’identité de charge de travail et les rôles IAM.

Créez le client d’exécution AWS Bedrock, convertissez-le IChatClienten, puis créez un agent Agent Framework.

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

Les informations d’identification AWS suivent la chaîne d’informations d’identification AWS standard. Accordez uniquement les actions du modèle Bedrock dont l’application a besoin.

Installer le package

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 lit le modèle, la région et les informations d’identification AWS à partir de ses paramètres ou valeurs de constructeur explicites.

Lorsque le client crée un client runtime à partir de boto3_session, la priorité de la région est : l’argument explicite region, le paramètre résolu BEDROCK_REGION, boto3_session.region_name, puis us-east-1. Si vous fournissez un client préconstruit, la session n’est pas utilisée et sa région n’affecte pas la région signalée.

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

Utilisez BedrockChatOptions les options de demande spécifiques à Bedrock et BedrockGuardrailConfig lorsque votre déploiement utilise des garde-fous Bedrock. Le client Python transfère additionalModelRequestFields, guardrailConfig, performanceConfig, requestMetadataet promptVariables à l’API Bedrock Converse lorsque vous les définissez.

Pour les requêtes non diffusées en continu, le client omet guardrailConfig.streamProcessingMode car ce champ n’est valide que pour ConverseStream. Lorsque l’ID du modèle est un ARN de gestion des prompts, définissez les champs d’inférence, de système, d’outil et de requête de modèle supplémentaires dans le prompt géré. Bedrock rejette ces champs dans la demande d’exécution, de sorte que le client les omet ; promptVariables reste disponible.

Envoyer une entrée d’image

BedrockChatClient envoie, via l’API Bedrock Converse, des images sous forme de données issues des messages des utilisateurs lorsque le modèle sélectionné prend en charge les images en entrée. Créez le contenu de l’image avec Content.from_data() ou un URI de données base64.

Bedrock accepte les images GIF, JPEG, PNG et WebP. Le client n’envoie pas d’URL externes d’image, d’images provenant de l’historique des messages de l’assistant ni de contenu d’image riche dans les résultats d’outil. Téléchargez une image externe et transmettez ses octets lorsque vous devez l’envoyer au modèle.

Générer des embeddings

BedrockEmbeddingClient génère des incorporations avec des modèles d’incorporation Amazon Titan. Configurez BEDROCK_EMBEDDING_MODEL et BEDROCK_REGIONutilisez ensuite la même chaîne d’informations d’identification AWS que BedrockChatClient.

Lorsque le client d’incorporation crée un client d’exécution à partir de boto3_session, la priorité de région est l’argument explicite region, le paramètre résolu BEDROCK_REGION, boto3_session.region_name, puis us-east-1. Si vous fournissez un client préconstruit, la session n’est pas utilisée et sa région n’affecte pas la région signalée.

Aucun exemple d’incorporation d’Agent Framework runnable n’est actuellement publié pour ce client.

Note

L’intégration d’Amazon Bedrock n’est actuellement pas disponible pour Agent Framework Go. Consultez le référentiel Agent Framework Go pour connaître l’état le plus récent.

Tools

Bedrock prend en charge les outils Agent Framework invoqués localement, mais n’expose pas les fabriques d’outils hébergées par un fournisseur.

Tool C# Python Remarques
Outils de fonction ✅ ✅ La prise en charge du modèle varie selon le modèle Bedrock sélectionné.
Approbation de l’outil ✅ ✅ Appliqué par la boucle d’appel de fonction Agent Framework.
Interpréteur de code ❌ ❌ Aucune intégration de l’interpréteur de code hébergé par Bedrock.
Recherche de fichiers ❌ ❌ Aucune intégration de recherche de fichiers hébergée par Bedrock.
Recherche web ❌ ❌ Aucune intégration de recherche web hébergée par Bedrock.
Outils MCP hébergés ❌ ❌ Aucune intégration MCP hébergée par Bedrock.
Outils MCP locaux ✅ ✅ S’exécute dans le processus de l’application.

Étapes suivantes