Full Stack AI AWS Bedrock en pratique : le code et les commandes qui comptent vraiment

Full Stack AI AWS Bedrock : l'essentiel en un article — vrai code, schémas et étapes concrètes, extraits d'un cours de 41 leçons.

Full Stack AI AWS Bedrock en pratique : le code et les commandes qui comptent vraiment

Pas de théorie interminable ici : on ouvre le terminal et on pratique. Voici l'essentiel de Full Stack AI AWS Bedrock, extrait directement d'un cours complet de 41 leçons — avec du vrai code que tu peux copier-coller maintenant.

tl;dr
  • Creer un compte AWS et decouvrir Bedrock
  • Introduction a l'IA generative et AWS Bedrock
  • API Bedrock et SDK Python Boto3
  • Prompt Engineering pour Bedrock
  • Backend FastAPI avec Bedrock
~$ cat ./parcours.md # Full Stack AI AWS Bedrock — 11 chapitres
01
Créer un compte AWS et découvrir Bedrock
→ Créer un compte AWS Free Tier→ Configurer IAM et la sécurité+ 1 autres leçons
02
Introduction à l'IA generative et AWS Bedrock
→ C'est quoi l'IA générative ?→ Panorama des modèles fondation+ 1 autres leçons
03
API Bedrock et SDK Python Boto3
→ Installer Boto3 et configurer les credentials→ Invoquer des modèles avec Python+ 1 autres leçons
04
Prompt Engineering pour Bedrock
→ Principes du Prompt Engineering→ Techniques zero-shot et few-shot+ 1 autres leçons
05
Backend FastAPI avec Bedrock
→ Architecture d'un backend IA→ Créer une API FastAPI + Bedrock+ 1 autres leçons
06
Frontend Streamlit pour l'IA
→ Interface de chat avec Streamlit→ Historique de conversation et mémoire+ 1 autres leçons
07
RAG Retrieval Augmented Génération
→ C'est quoi le RAG ?→ Embeddings et base vectorielle+ 1 autres leçons
08
Knowledge Bases et Agents Bedrock
→ Knowledge Bases Bedrock→ Agents Bedrock et actions+ 2 autres leçons
🏁
Projet final (+ 3 chapitres en chemin)
→ Tu repars avec un projet concret et démontrable

Installer Boto3 et configurer les credentials

NOTEObjectif de cette leçon : À la fin de cette partie, vous serez capable d'installer le SDK Python Boto3, de configurer vos credentials AWS et de vérifier que votre connexion à AWS Bedrock fonctionne correctement depuis un script Python.
TIPPrérequis : Vous devez disposer d'un compte AWS avec l'accès à Amazon Bedrock activé (voir Chapitre 01). Aucune connaissance préalable de Boto3 n'est nécessaire.

Objectifs pédagogiques

Qu'est-ce que Boto3 ?

Boto3 est le SDK officiel d'Amazon Web Services pour Python. Il permet d'interagir avec tous les services AWS (S3, DynamoDB, Lambda, Bedrock, etc.) directement depuis du code Python.

NOTEAnalogie : Imaginez que AWS est un immense restaurant avec des centaines de plats. Boto3 est le serveur qui prend vos commandes (appels API) et vous rapporte les résultats. Sans Boto3, vous devriez crier vos commandes à travers la fenêtre de la cuisine (requêtes HTTP brutes) – c'est faisable, mais beaucoup moins pratique.

Boto3 – Client bas niveau

Accès direct aux API AWS. Chaque méthode correspond exactement à une opération de l'API REST. Vous manipulez des dictionnaires Python.

Boto3 – Resource haut niveau

Abstraction orientée objet. Plus intuitive pour certains services (S3, DynamoDB). Pour Bedrock, on utilise principalement le client.

Étape 1 – Installer Python 3.8+

Boto3 nécessite Python 3.8 ou supérieur. Vérifiez d'abord si Python est déjà installé :

bash
python --version

Si la version affichée est 3.8+, passez à l'étape suivante. Sinon, installez Python selon votre système :

Windows

Téléchargez l'installateur officiel depuis https://www.python.org/downloads/. Cochez impérativement la case « Add Python to PATH » pendant l'installation.

bash
# Vérification après installation
python --version
pip --version

macOS

bash
# Via Homebrew (recommandé)
brew install python@3.11

# Vérification
python3 --version
pip3 --version

Linux (Ubuntu / Debian)

bash
sudo apt update
sudo apt install python3 python3-pip python3-venv -y

# Vérification
python3 --version
pip3 --version
WARNINGAttention : Sur macOS et Linux, utilisez python3 et pip3 au lieu de python et pip, car python peut pointer vers Python 2.x sur certains systèmes.

Étape 2 – Créer un environnement virtuel

Un environnement virtuel isole les dépendances de votre projet. Cela évite les conflits entre différents projets Python sur votre machine.

NOTEAnalogie : Un environnement virtuel, c'est comme une boîte à outils dédiée à un chantier. Chaque chantier (projet) a sa propre boîte avec ses propres outils (bibliothèques). Pas de mélange entre les chantiers.

Créer et activer le venv

Premier appel à Bedrock via la console

NOTEObjectif de cette leçon : Naviguer dans la console AWS Bedrock, activer l'accès aux modèles, envoyer votre premier prompt dans le Playground, et comprendre les paramètres de génération (température, max tokens, top-p).

Objectifs pédagogiques

1 – Accéder à Amazon Bedrock

Étape 1 : Se connecter à la console AWS

Ouvrez votre navigateur et rendez-vous sur :

bash
https://console.aws.amazon.com

Connectez-vous avec vos identifiants AWS. Si vous n'avez pas encore de compte, créez-en un (le Free Tier AWS vous donne accès à de nombreux services gratuitement).

Étape 2 : Choisir la bonne région

WARNINGAttention à la région : Bedrock n'est pas disponible dans toutes les régions. Assurez-vous d'être dans une région supportée. Nous recommandons US East (N. Virginia) – us-east-1 pour avoir accès à tous les modèles.

Vérifiez la région en haut à droite de la console :

output
+----------------------------------------------------------+
|  AWS Console                          [N. Virginia v]    |
|                                        ^^^^^^^^^^^^      |
|  Barre de recherche : [ Amazon Bedrock         ]         |
|                                                          |
+----------------------------------------------------------+

Si vous voyez une autre région, cliquez sur le menu
déroulant et sélectionnez « US East (N. Virginia) ».

Étape 3 : Trouver Amazon Bedrock

Dans la barre de recherche en haut de la console, tapez « Bedrock » et cliquez sur Amazon Bedrock dans les résultats :

output
+----------------------------------------------------------+
|  Recherche : [ Bedrock                          ]        |
|                                                          |
|  Résultats :                                              |
|  +------------------------------------------------------+|
|  |  Amazon Bedrock                                      ||
|  |  Build with foundation models                        ||
|  +------------------------------------------------------+|
+----------------------------------------------------------+

Vous arrivez sur le tableau de bord Bedrock (Bedrock Dashboard).

2 – Activer l'accès aux modèles

Par défaut, aucun modèle n'est activé. Vous devez explicitement demander l'accès avant de pouvoir les utiliser.

Étape 1 : Aller dans Model Access

Dans le menu latéral gauche de Bedrock, cliquez sur « Model access » (tout en bas) :

output
+----------------------------+------------------------------+
|  Amazon Bedrock            |                              |
|                            |  Bedrock Dashboard           |
|  Playgrounds               |                              |
|    Chat                    |  Bienvenue sur Amazon        |
|    Text                    |  Bedrock. Accédez à des      |
|    Image                   |  modèles fondation de         |
|                            |  pointe via une API unique.  |
|  Orchestration             |                              |
|    Agents                  |                              |
|    Knowledge bases         |                              |
|                            |                              |
|  Foundation models         |                              |
|    Base models             |                              |
|    Custom models           |                              |
|                            |                              |
|  Bedrock configurations    |                              |
|  > Model access    <--    |                              |
+----------------------------+------------------------------+

Étape 2 : Demander l'accès

Cliquez sur le bouton « Manage model access » (en haut à droite).

Vous verrez la liste de tous les modèles disponibles. Cochez les modèles suivants pour ce cours :

output
+----------------------------------------------------------+
|  Manage model access                                     |
|                                                          |
|  Provider        Model                   Access Status   |
|  -------------------------------------------------------+|
|  [x] Anthropic   Claude 3 Haiku          Available      ||
|  [x] Anthropic   Claude 3.5 Sonnet       Available      ||
|  [ ] Anthropic   Claude 3 Opus           Available      ||
|  [x] Amazon      Titan Text Express      Available      ||
|  [x] Meta        Llama 3 8B Instruct     Available      ||
|  [x] Mistral AI  Mistral 7B Instruct     Available      ||
|  [x] Mistral AI  Mixtral 8x7B Instruct   Available      ||
|                                                          |
|                        [ Save changes ]                  |
+----------------------------------------------------------+

Cliquez sur « Save changes ». L'accès est généralement activé en quelques secondes.

TIPConseil : Vous pouvez activer tous les modèles d'un coup sans risque. Vous ne payez rien tant que vous ne faites pas d'appels. L'activation est gratuite.

Créer une API FastAPI + Bedrock

Full Stack AI avec AWS Bedrock • Backend FastAPI avec Bedrock

NOTEObjectif : Construire pas à pas une API FastAPI complète qui reçoit un message utilisateur et retourne la réponse générée par AWS Bedrock (Claude). À la fin de cette leçon, vous aurez un endpoint /chat fonctionnel testable via Swagger UI, curl et PowerShell.

Ce que vous allez apprendre

1. Installation des dépendances

Assurez-vous que votre environnement virtuel est activé, puis installez les bibliothèques :

bash
# Activer l'environnement virtuel (Windows PowerShell)
.\venv\Scripts\Activate.ps1

# Installer les bibliothèques principales
pip install fastapi uvicorn boto3 pydantic python-dotenv python-multipart

Vérifiez que tout est installé correctement :

bash
pip list | findstr -i "fastapi uvicorn boto3"

Vous devriez voir les trois bibliothèques avec leurs numéros de version.

TIPAnalogie : Installer les dépendances, c'est comme rassembler vos ingrédients avant de cuisiner. FastAPI est la poêle, Uvicorn est le feu, et Boto3 est l'ingrédient principal qui connecte à AWS.

2. Les modèles Pydantic

Pydantic permet de définir la forme exacte des données que notre API accepte et retourne. C'est comme un formulaire avec des champs obligatoires : si les données ne correspondent pas, l'API refuse automatiquement la requête avec un message d'erreur clair.

output
# backend/models/schemas.py
from pydantic import BaseModel, Field
from typing import Optional, List


class Message(BaseModel):
    """Représente un message dans la conversation."""
    role: str = Field(
        ...,
        description="Rôle : 'user' ou 'assistant'",
        examples=["user"]
    )
    content: str = Field(
        ...,
        description="Contenu du message",
        examples=["Explique-moi les boucles Python"]
    )


class ChatRequest(BaseModel):
    """Requête envoyée par le frontend pour chatter avec l'IA."""
    message: str = Field(
        ...,
        min_length=1,
        max_length=10000,
        description="Message de l'utilisateur"
    )
    history: Optional[List[Message]] = Field(
        default=[],
        description="Historique de la conversation"
    )
    model_id: Optional[str] = Field(
        default=None,
        description="ID du modèle Bedrock"
    )
    temperature: Optional[float] = Field(
        default=0.7,
        ge=0.0,
        le=1.0,
        description="Créativité du modèle (0 = précis, 1 = créatif)"
    )
    max_tokens: Optional[int] = Field(
        default=4096,
        ge=1,
        le=8192,
        description="Nombre maximum de tokens dans la réponse"
    )


class ChatResponse(BaseModel):
    """Réponse retournée par l'API après appel à Bedrock."""
    response: str = Field(
        ...,
        description="Réponse générée par l'IA"
    )
    model_id: str = Field(
        ...,
        description="ID du modèle utilisé"
    )
    input_tokens: int = Field(
        default=0,
        description="Tokens consommés par le prompt"
    )
    output_tokens: int = Field(
        default=0,
        description="Tokens générés dans la réponse"
    )


class HealthResponse(BaseModel):
    """Réponse du endpoint de santé."""
    status: str
    message: str
NOTEPourquoi Pydantic ? Sans Pydantic, vous devez manuellement vérifier chaque champ (est-ce une chaîne ? est-elle vide ? le nombre est-il dans la plage ?). Pydantic fait tout cela automatiquement et génère des messages d'erreur clairs pour le frontend.

Si le frontend envoie un champ temperature de valeur 5.0 (hors de la plage 0-1), Pydantic retourne :

output
{
  "detail": [
    {
      "loc": ["body", "temperature"],
      "msg": "Input should be less than or equal to 1",
      "type": "less_than_equal"
    }
  ]
}

3. Le service Bedrock

Le service Bedrock encapsule toute la logique de communication avec AWS. C'est ici que la « magie » opère : votre message texte est transformé en requête AWS, envoyé à Claude, et la réponse est retournée.

output
# backend/services/bedrock_service.py
import json
import boto3
from config import AWS_REGION, BEDROCK_MODEL_ID, MAX_TOKENS, TEMPERATURE


def get_bedrock_client():
    """Crée et retourne un client Bedrock Runtime."""
    return boto3.client(
        service_name="bedrock-runtime",
        region_name=AWS_REGION
    )


def build_messages(message: str, history: list = None) -> list:
    """Construit la liste de messages pour l'API Bedrock."""
    messages = []
    if history:
        for msg in history:
            messages.append({
                "role": msg.role,
                "content": [{"type": "text", "text": msg.content}]
            })
    messages.append({
        "role": "user",
        "content": [{"type": "text", "text": message}]
    })
    return messages


def invoke_bedrock(
    message: str,
    history: list = None,
    model_id: str = None,
    temperature: float = None,
    max_tokens: int = None
) -> dict:
    """
    Appelle AWS Bedrock avec le message et retourne la réponse.

    Args:
        message: Le message de l'utilisateur
        history: L'historique de la conversation
        model_id: L'identifiant du modèle Bedrock
        temperature: La créativité (0.0 à 1.0)
        max_tokens: Le nombre max de tokens en sortie

    Returns:
        dict avec la réponse, le modèle utilisé et les tokens
    """
    client = get_bedrock_client()
    model = model_id or BEDROCK_MODEL_ID
    temp = temperature if temperature is not None else TEMPERATURE
    tokens = max_tokens or MAX_TOKENS

    messages = build_messages(message, history)

    body = json.dumps({
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": tokens,
        "temperature": temp,
        "messages": messages
    })

    response = client.invoke_model(
        modelId=model,
        contentType="application/json",
        accept="application/json",
        body=body
    )

    response_body = json.loads(response["body"].read())

    return {
        "response": response_body["content"][0]["text"],
        "model_id": model,
        "input_tokens": response_body.get("usage", {}).get(
            "input_tokens", 0
        ),
        "output_tokens": response_body.get("usage", {}).get(
            "output_tokens", 0
        ),
    }

Détails du paramètre body

Paramètre Type Description
anthropic_version string Version de l'API Anthropic utilisée par Bedrock
max_tokens int Limite la longueur de la réponse (1 token ≈ 0.75 mot)
temperature float 0.0 = réponses précises, 1.0 = réponses créatives
messages list La conversation complète (historique + nouveau message)

4. Le fichier main.py complet

C'est le point d'entrée de l'application. Il assemble tous les composants : configuration, CORS, routes et gestion d'erreurs.

output
# backend/main.py
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from dotenv import load_dotenv

from config import CORS_ORIGINS
from models.schemas import (
    ChatRequest,
    ChatResponse,
    HealthResponse,
)
from services.bedrock_service import invoke_bedrock

load_dotenv()

app = FastAPI(
    title="Full Stack AI - Backend Bedrock",
    description="API pour interagir avec AWS Bedrock (Claude)",
    version="1.0.0",
)

# --- Middleware CORS ---
app.add_middleware(
    CORSMiddleware,
    allow_origins=CORS_ORIGINS,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)


# --- Endpoints ---

@app.get("/health", response_model=HealthResponse)
def health_check():
    """Vérifie que le serveur est opérationnel."""
    return HealthResponse(
        status="ok",
        message="Le serveur fonctionne correctement"
    )


@app.post("/chat", response_model=ChatResponse)
def chat(request: ChatRequest):
    """
    Envoie un message à AWS Bedrock et retourne la réponse de l'IA.

    - **message** : le texte envoyé par l'utilisateur
    - **history** : l'historique de conversation (optionnel)
    - **model_id** : le modèle Bedrock à utiliser (optionnel)
    - **temperature** : la créativité de 0.0 à 1.0 (optionnel)
    - **max_tokens** : nombre max de tokens en sortie (optionnel)
    """
    try:
        result = invoke_bedrock(
            message=request.message,
            history=request.history,
            model_id=request.model_id,
            temperature=request.temperature,
            max_tokens=request.max_tokens,
        )
        return ChatResponse(**result)

    except Exception as e:
        raise HTTPException(
            status_code=500,
            detail=f"Erreur lors de l'appel à Bedrock : {str(e)}"
        )


@app.get("/models")
def list_models():
    """Retourne la liste des modèles disponibles."""
    return {
        "models": [
            {
                "id": "anthropic.claude-3-sonnet-20240229-v1:0",
                "name": "Claude 3 Sonnet",
                "description": "Bon équilibre performance/coût"
            },
            {
                "id": "anthropic.claude-3-haiku-20240307-v1:0",
                "name": "Claude 3 Haiku",
                "description": "Le plus rapide et économique"
            },
            {
                "id": "anthropic.claude-3-5-sonnet-20240620-v1:0",
                "name": "Claude 3.5 Sonnet",
                "description": "Le plus performant"
            },
        ]
    }
va-plus-loin

Cet article couvre les extraits les plus utiles — le cours complet Full Stack AI AWS Bedrock (12 chapitres, 41 leçons, exercices corrigés et projet final) t'emmène jusqu'au bout.

./acceder-au-cours-complet cours gratuit : Maîtriser Claude Code

FAQ

Combien de temps pour apprendre Full Stack AI AWS Bedrock ?
Avec une progression structurée (12 chapitres, 41 leçons courtes et pratiques), on atteint un niveau opérationnel en quelques semaines à raison de 30 à 60 minutes par jour. L'important est de pratiquer chaque notion immédiatement.
Faut-il des prérequis ?
Des bases en informatique suffisent. Si tu sais utiliser un terminal et lire du code simple, tu es prêt.
Par où commencer concrètement ?
Reproduis les commandes de cet article, puis suis le cours complet Full Stack AI AWS Bedrock : il enchaîne les 41 leçons dans l'ordre, avec exercices et projet final.

📬 Tu veux recevoir ce type de guide chaque semaine ? Abonne-toi gratuitement — code réel, zéro blabla.