L'API Claude de Anthropic s'intègre en Python en moins de 10 minutes. Voici comment faire votre première requête et comprendre les réponses.

Pour commencer à utiliser l'API Claude de Anthropic, il faut trois choses : Python 3.9 ou plus récent, un compte gratuit sur la Claude Console et une clé API. Cette dernière s'obtient dans les paramètres de la console, sous l'onglet API Keys. Une fois la clé récupérée, la règle d'or est de ne jamais l'écrire directement dans votre code. Stockez-la plutôt dans une variable d'environnement pour éviter tout risque de fuite.

INSTALLER LE SDK PYTHON ET CONFIGURER LA CLÉ API

Le SDK officiel pour Python s'installe en une ligne de commande. Il suffit d'exécuter la commande suivante dans votre terminal :

pip install anthropic

Ensuite, créez une variable d'environnement nommée ANTHROPICAPIKEY et collez-y votre clé API. Si vous préférez, vous pouvez aussi utiliser un fichier .env à la racine de votre projet avec la bibliothèque python-dotenv. Le SDK lira automatiquement cette variable sans que vous ayez à la passer manuellement dans votre code.

FAIRE VOTRE PREMIÈRE REQUÊTE À L'API CLAUDE

L'entrée principale de l'API est la méthode client.messages.create(). Pour votre premier test, demandons à Claude d'expliquer ce qu'est une fenêtre de contexte — un concept essentiel à comprendre avant d'utiliser l'API. Voici comment procéder :

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=256,
    messages=[
        {
            "role": "user",
            "content": "In one sentence, what is a context window?"
        }
    ]
)

print(response.content[0].text)

Trois paramètres sont indispensables : le modèle à utiliser, le nombre maximum de tokens à générer (max_tokens) et la liste des messages. Cette dernière doit toujours commencer par un message de l'utilisateur.

Une fenêtre de contexte est la quantité maximale de texte (mesurée en tokens) qu'un modèle de langage peut traiter et considérer en une seule fois, incluant à la fois votre entrée et sa réponse.

COMPRENDRE LA STRUCTURE DE LA RÉPONSE

La réponse de l'API est un objet Message structuré. Voici à quoi il ressemble pour notre première requête :

Message(
  id='msg_01XFDUDYJgAACzvnptvVoYEL',
  type='message',
  role='assistant',
  content=[TextBlock(text='A context window is.', type='text')],
  model='claude-sonnet-5',
  stopreason='endturn',
  stop_sequence=None,
  usage=Usage(inputtokens=19, outputtokens=42)
)

Plusieurs champs méritent votre attention. stop_reason indique pourquoi Claude a arrêté de générer du texte. La valeur end_turn signifie que le modèle a terminé sa réponse de lui-même. Si vous voyez max_tokens, cela signifie que la réponse a été coupée à cause de votre limite, et qu'il faudra peut-être l'augmenter ou reformuler votre demande.

Le champ usage comptabilise les tokens en entrée et en sortie. Ces chiffres servent à la facturation et permettent de détecter si votre requête approche de la limite de la fenêtre de contexte. Le contenu est toujours une liste : dans le cas d'une réponse texte standard, elle contient un seul élément de type TextBlock. Pour extraire le texte, utilisez donc response.content[0].text.

UTILISER UN PROMPT SYSTÈME POUR GUIDER CLAUDE

Le prompt système permet de donner à Claude un rôle permanent, des contraintes ou un contexte qui s'appliquent à toute la conversation. Contrairement aux messages classiques, il est passé en paramètre séparé system et non dans la liste des messages. Voici un exemple où Claude agit comme un relecteur de code Python :

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=512,
    system=(
        "You are a Python code reviewer. "
        "Respond only with corrected or improved Python code. "
        "Do not explain changes unless the user explicitly asks."
    ),
    messages=[
        {
            "role": "user",
            "content": (
                "def get_user(id):\n"
                "    db = connect()\n"
                "    return db.query('SELECT * FROM users WHERE id=' + id)"
            )
        }
    ]
)

print(response.content[0].text)

Le prompt système reste actif pendant toute la conversation. Vous n'avez pas besoin de le répéter à chaque message. Cela permet de définir des règles de formatage, des instructions de rôle ou des contraintes de domaine qui persistent automatiquement.

RÉCUPÉRER LES RÉSULTATS EN TEMPS RÉEL AVEC LE STREAMING

Pour les requêtes qui prennent quelques secondes à traiter, le streaming affiche le texte au fur et à mesure de sa Génération, plutôt que d'attendre la réponse complète. Le SDK propose cette fonctionnalité via client.messages.stream(), utilisée comme un gestionnaire de contexte.

Voici comment l'implémenter pour expliquer le fonctionnement d'une liste Python :

import anthropic

client = anthropic.Anthropic()

with client.messages.stream(
    model="claude-sonnet-5",
    max_tokens=512,
    messages=[
        {
            "role": "user",
            "content": "Walk me through what happens when a Python list grows beyond its initial capacity."
        }
    ]
) as stream:
    for chunk in stream.text_stream:
        print(chunk, end="", flush=True)

print()  # newline after stream ends

L'itérateur text_stream fournit des fragments de texte en temps réel. Chaque morceau est une chaîne de caractères incomplète, pas une phrase entière. Pour un affichage fluide, utilisez end="" et flush=True dans la fonction print().

Le gestionnaire de contexte garantit que la connexion HTTP est fermée proprement à la fin du bloc, même en cas d'erreur. Si vous avez besoin de l'objet Message complet après le streaming — y compris les comptes de tokens — appelez stream.getfinalmessage() avant la fermeture du bloc.

COMMENT FONCTIONNE UNE LISTE PYTHON EN ARRIÈRE-PLAN

Pour mieux comprendre l'exemple précédent, voici comment Python gère l'ajout d'éléments dans une liste quand elle atteint sa capacité maximale :

Python lists are dynamic arrays. When you append an element and the list has no
room, Python allocates a new, larger block of memory — typically 1.125x the current
size — copies all existing elements into it, and releases the old block. This
operation is O(n) in the worst case, but because it happens infrequently relative to
the number of appends, the amortized cost per append stays O(1). You can pre-allocate
capacity with a list comprehension or by passing an iterable to the list constructor
if you know the final size upfront.

En résumé, une liste Python est un tableau dynamique. Quand elle est pleine et qu'on ajoute un élément, Python alloue un nouveau bloc de mémoire plus grand — généralement 1,125 fois la taille actuelle — copie tous les éléments existants, puis libère l'ancien bloc. Cette opération est en O(n) dans le pire cas, mais comme elle se produit rarement comparée au nombre d'ajouts, le coût moyen par ajout reste en O(1). Si vous connaissez la taille finale de la liste à l'avance, vous pouvez pré-allouer sa capacité avec une list comprehension ou en passant un itérable au constructeur de liste.

LES BASES POUR ALLER PLUS LOIN

Vous avez maintenant les éléments essentiels pour commencer : faire des requêtes, lire les réponses structurées, utiliser des prompts système et gérer le streaming. L'API est sans état, ce qui signifie que vous devez envoyer l'historique complet de la conversation avec chaque requête. La documentation officielle propose des exemples pour gérer les erreurs, optimiser l'usage des tokens et créer des conversations multi-tours.

D'autres fonctionnalités avancées sont disponibles, comme les sorties structurées ou l'utilisation d'outils. Ces options sont détaillées dans la documentation du SDK. L'API Claude ouvre la porte à des intégrations puissantes dans vos projets Python, que ce soit pour automatiser des tâches, générer du code ou analyser des données.

Le SDK Python d'Anthropic simplifie l'interaction avec l'API Claude en fournissant des objets de réponse typés, une gestion automatique des relances et une interface intuitive pour travailler avec l'API Messages.
Sources :
  • KDnuggets

L'indépendance de CLODCO est votre garantie.

Pour que l'actualité de l'IA reste sans filtre et sans concession, votre soutien est indispensable. Votre contribution est le seul moteur de notre liberté éditoriale.

Soutenir CLODCO