---
title: "Premier appel à un modèle"
description: "Le premier appel à un modèle, en Python, et ce que chaque ligne fait."
url: https://meridal.fr/apprendre/premier-appel/
language: fr
written: 2026-10-07
verified: 2026-10-07
license: CC BY 4.0
---

[Apprendre](https://meridal.fr/apprendre/) › [Construction et programmation](https://meridal.fr/apprendre/dossier/construire/)

S'exercer · Niveau 3, Construire · 15 minutes

# Premier appel à un modèle

Le premier appel à un modèle, en Python, chez OpenAI, Anthropic, Google ou Mistral : une dizaine de lignes, et ce que fait chacune.

Écrit le 7 octobre 2026 · Vérifié le 7 octobre 2026

## Vous saurez

- Installer la bibliothèque d'un éditeur et lui donner la clé
- Envoyer une question à un modèle et lire sa réponse
- Dire ce que fait chaque ligne du programme
- Reconnaître les erreurs d'un premier appel

## Dans le parcours

[Construction](https://meridal.fr/apprendre/parcours/construire/)

Étape 3 sur 12

Aussi dans : [Premiers pas en développement](https://meridal.fr/apprendre/premier-appel/)

- [← Avant Tokens, fenêtre de contexte et prix](https://meridal.fr/apprendre/tokens/)
- [→ Ensuite Réponse dans un format imposé](https://meridal.fr/apprendre/format-impose/)

Rappel de la page précédente

Répondez de tête, puis ouvrez. [Tokens, fenêtre de contexte et prix](https://meridal.fr/apprendre/tokens/)

**1 Pourquoi une conversation coûte-t-elle de plus en plus cher à chaque échange ?**

Parce que le modèle relit tout l'historique à chaque échange : ce qu'il lit grandit à chaque tour. Le cache réduit le prix de ce qui est relu.

**2 Qu'est-ce qui doit tenir dans la fenêtre de contexte ?**

Tout ce que le modèle lit d'un coup, instructions, documents, historique et question, et ce qu'il écrit en réponse.

L'essentiel

1. Un appel tient en trois gestes : créer le client avec la clé, envoyer la demande, lire la réponse.
2. Chaque éditeur a sa bibliothèque et sa forme de demande, mais le principe est le même.
3. La clé se lit dans une variable d'environnement ; elle n'apparaît jamais dans le code.
4. Le nom du modèle se choisit à chaque appel : c'est lui qui fixe le prix et la qualité.
5. Les bibliothèques réessaient seules les erreurs passagères ; une erreur de budget, elle, ne passe pas en réessayant.

## Objectif

Envoyer une question à un modèle depuis un programme Python, chez l'éditeur de votre choix, lire sa réponse, et savoir ce que fait chaque ligne.

Le code suit la documentation de chaque éditeur, lue le 7 octobre 2026, et les versions de leurs bibliothèques de ce jour. Il n'a pas encore été exécuté par Meridal : sa sortie n'est pas montrée.

Avant de commencer : [le poste de développement](https://meridal.fr/apprendre/poste-de-developpement/), avec uv, un projet, et la clé de l'éditeur dans un fichier .env.

## Données fournies

Aucune : la question est dans le code. Il faut seulement une clé d'API chez l'éditeur choisi, avec un plafond de dépense.

## Consignes

![Trois gestes : créer le client avec la clé de l'éditeur, lue dans une variable d'environnement depuis le fichier .env, hors du code ; envoyer la demande, le nom du modèle et la question, à l'API de l'éditeur ; lire la réponse, le texte que le modèle a écrit. Le nom du modèle fixe le prix et la qualité ; une erreur passagère se réessaie seule, une erreur de budget non.](https://meridal.fr/assets/apprendre/medias/apprendre-appeler.svg)

*Un appel en trois gestes, la clé hors du code.*

OpenAI Anthropic Google Mistral

La bibliothèque `openai`, la clé dans `OPENAI_API_KEY`, le code de la documentation de l'éditeur, adapté sur deux points : la question en français et la lecture du fichier .env.

`Terminal`

```
uv add openai python-dotenv
```

`appel.py`

```
from dotenv import load_dotenv
load_dotenv()  # lit la clé dans le fichier .env

from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-luna",
    input="Explique en une phrase ce qu'est un token.",
)

print(response.output_text)
```

1. `from openai import OpenAI` : importe le client de la bibliothèque d'OpenAI.
2. `client = OpenAI()` : crée le client ; il lit tout seul la clé dans la variable `OPENAI_API_KEY`.
3. `client.responses.create(...)` : envoie la demande à l'API Responses, qu'OpenAI recommande pour tout nouveau projet.
4. `model="gpt-6-luna"` : le modèle qu'OpenAI présente pour les gros volumes à petit prix ; sa documentation prend gpt-6-astra, le plus capable.
5. `response.output_text` : le texte de la réponse, tous morceaux réunis.

La sortie`uv run appel.py`

**Pas encore exécuté par Meridal.** Ce qu'on attend : une phrase en français qui définit un token.

La bibliothèque `anthropic`, la clé dans `ANTHROPIC_API_KEY`, le code de la documentation de l'éditeur, adapté sur deux points : la question en français et la lecture du fichier .env.

`Terminal`

```
uv add anthropic python-dotenv
```

`appel.py`

```
from dotenv import load_dotenv
load_dotenv()  # lit la clé dans le fichier .env

import anthropic

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1000,
    messages=[{"role": "user", "content": "Explique en une phrase ce qu'est un token."}],
)
for block in message.content:
    if block.type == "text":
        print(block.text)
```

1. `anthropic.Anthropic()` : crée le client ; il lit la clé dans `ANTHROPIC_API_KEY`.
2. `client.messages.create(...)` : envoie la demande à l'API Messages.
3. `model="claude-opus-5-5"` : le modèle qu'Anthropic conseille pour commencer ; Claude Haiku 5.5 coûte moins, pour les gros volumes.
4. `max_tokens=1000` : le plafond de ce que le modèle écrira, obligatoire chez Anthropic : la réponse s'arrête là.
5. `messages=[...]` : la conversation, ici un seul message de l'utilisateur.
6. `for block in message.content` : la réponse arrive en blocs ; on n'affiche que les blocs de texte.

La sortie`uv run appel.py`

**Pas encore exécuté par Meridal.** Ce qu'on attend : une phrase en français qui définit un token.

La bibliothèque `google-genai`, la clé dans `GEMINI_API_KEY`, le code de la documentation de l'éditeur, adapté sur deux points : la question en français et la lecture du fichier .env.

`Terminal`

```
uv add google-genai python-dotenv
```

`appel.py`

```
from dotenv import load_dotenv
load_dotenv()  # lit la clé dans le fichier .env

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input="Explique en une phrase ce qu'est un token.",
)
print(interaction.output_text)
```

1. `genai.Client()` : crée le client ; il lit la clé dans `GEMINI_API_KEY` ou `GOOGLE_API_KEY`, la seconde l'emportant si les deux existent.
2. `client.interactions.create(...)` : l'API Interactions, que Google recommande pour tout nouveau projet depuis juin 2026 ; generateContent reste disponible.
3. `model="gemini-3.8-flash"` : le modèle stable le plus capable de Google pour le texte ; le démarrage rapide prend encore gemini-3.5-flash, que la page des modèles dit ancien.
4. `interaction.output_text` : le texte de la réponse.

La sortie`uv run appel.py`

**Pas encore exécuté par Meridal.** Ce qu'on attend : une phrase en français qui définit un token.

La bibliothèque `mistralai`, la clé dans `MISTRAL_API_KEY`, le code de la documentation de l'éditeur, adapté sur deux points : la question en français et la lecture du fichier .env.

`Terminal`

```
uv add mistralai python-dotenv
```

`appel.py`

```
from dotenv import load_dotenv
load_dotenv()  # lit la clé dans le fichier .env

import os
from mistralai.client import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

response = client.chat.complete(
    model="mistral-large-latest",
    messages=[{"role": "user", "content": "Explique en une phrase ce qu'est un token."}],
)

print(response.choices[0].message.content)
```

1. `from mistralai.client import Mistral` : l'import des versions 2 et 3 de la bibliothèque ; l'ancien `from mistralai import Mistral` ne marche plus.
2. `Mistral(api_key=...)` : ici, la clé se passe explicitement, lue dans `MISTRAL_API_KEY`.
3. `client.chat.complete(...)` : envoie la demande à l'API de conversation.
4. `model="mistral-large-latest"` : le nom que prend la documentation : un alias qui suit la dernière version du modèle.
5. `response.choices[0].message.content` : le texte de la première réponse.

La sortie`uv run appel.py`

**Pas encore exécuté par Meridal.** Ce qu'on attend : une phrase en français qui définit un token.

## Critères de réussite

- Le programme affiche une réponse en français
- La clé n'apparaît nulle part dans `appel.py` elle vient du fichier .env, exclu de git
- Vous savez quel modèle a répondu, et ce qu'il coûte par million de tokens
- Vous retrouvez l'appel dans la console de l'éditeur, avec ses tokens lus et écrits

## Indications

**Erreur d'authentification, ou code 401**

**Cause**La clé n'est pas lue : fichier .env absent, nom de variable faux, ou clé révoquée.

**À faire**Vérifiez le nom exact de la variable pour l'éditeur, et que `load_dotenv()` vient avant la création du client.

**Erreur 429**

**Cause**Trop de demandes à la minute, ou le budget atteint. Chez OpenAI, une erreur 429 de crédits ou de dépense ne se règle pas en réessayant ; chez Anthropic, une 429 de plafond de dépense n'a pas d'en-tête retry-after.

**À faire**Attendre et réessayer pour une limite de débit ; relever le plafond pour une limite de dépense.

**« ImportError » avec Mistral**

**Cause**L'ancien import des versions 1.

**À faire**`from mistralai.client import Mistral`.

**Erreur 529, 503 ou 504**

**Cause**Le service est surchargé (529 chez Anthropic, 503 chez OpenAI et Mistral) ou la demande a pris trop de temps (504).

**À faire**Rien à corriger dans le code : les bibliothèques réessaient déjà, deux fois chez OpenAI et Anthropic, jusqu'à quatre fois chez Google.

## Correction commentée

**Ouvrir la correction**

**Ce que les quatre programmes ont en commun**Un client, créé avec la clé lue dans l'environnement ; une demande, qui nomme le modèle et donne la question ; une réponse, dont on extrait le texte. Seuls les noms changent : `responses.create` et `output_text` chez OpenAI, `messages.create` et des blocs de texte chez Anthropic, `interactions.create` et `output_text` chez Google, `chat.complete` et `choices[0].message.content` chez Mistral.

**Ce qu'on attend en sortie**Une phrase en français qui définit un token, différente d'un modèle à l'autre et d'un lancement à l'autre : un modèle ne répond pas deux fois à l'identique.

**Ce qui coûte**Quelques dizaines de tokens lus, une ou deux centaines écrits : une fraction de centime, aux prix du [marché des modèles](https://meridal.fr/apprendre/modeles/).

## Extensions

- **Les erreurs** : entourez l'appel d'un `try`, et traitez à part la connexion, la limite de débit et les autres erreurs, comme le montre la page des erreurs d'OpenAI.
- **La conservation chez Google** : l'API Interactions garde chaque échange par défaut, 55 jours sur l'offre payante, un jour sur l'offre gratuite ; le paramètre `store` à faux l'en empêche.
- **Les versions** : uv fige la version de chaque bibliothèque dans `uv.lock`. En mai 2026, une version piégée de la bibliothèque de Mistral volait les clés dès l'import : une version figée, et mise à jour à dessein, protège de ce genre d'accident.
- **La suite** : [faire répondre un modèle dans un format imposé](https://meridal.fr/apprendre/format-impose/), pour qu'un programme puisse lire la réponse.

## Lectures suivantes

↑ Plus général

Rien avant : c'est un point de départ.

← Avant [Tokens, fenêtre de contexte et prix Comprendre · Niveau 2 · 12 minutes](https://meridal.fr/apprendre/tokens/)

Vous êtes ici

Premier appel à un modèle

→ Ensuite [Réponse dans un format imposé S'exercer · Niveau 3 · 20 minutes](https://meridal.fr/apprendre/format-impose/)

Construction · étape 4 sur 12

↓ Plus concret

Rien avant : c'est un point de départ.

[Tout le dossier « Construction et programmation »](https://meridal.fr/apprendre/dossier/construire/)

Les pages qui renvoient ici

- [Ajustement d'un modèle](https://meridal.fr/apprendre/ajustement-d-un-modele/)
- [Bibliothèques d'agents](https://meridal.fr/apprendre/bibliotheques-d-agents/)
- [Choix d'une API et d'une bibliothèque](https://meridal.fr/apprendre/choix-d-une-api-et-d-une-bibliotheque/)
- [Collecte de données publiques](https://meridal.fr/apprendre/collecte-de-donnees-publiques/)
- [Déploiement en région européenne](https://meridal.fr/apprendre/deploiement-en-europe/)
- [Embeddings et bases vectorielles](https://meridal.fr/apprendre/embeddings-et-bases-vectorielles/)

**Limites et sources**

Le code suit la documentation des éditeurs et les versions de leurs bibliothèques du 7 octobre 2026 (openai 3.26.0, anthropic 1.12.0, google-genai 2.28.0, mistralai 3.1.0) ; il n'a pas encore été exécuté par Meridal.

Les noms de modèles changent souvent ; la page des modèles de chaque éditeur fait foi.

1. [OpenAI, Developer quickstart](https://developers.openai.com/api/docs/quickstart) ; [Anthropic, Get started](https://platform.claude.com/docs/en/get-started) ; [Google, Gemini API quickstart](https://ai.google.dev/gemini-api/docs/quickstart) ; [Mistral, Send your first API request](https://docs.mistral.ai/getting-started/quickstarts/developer/first-api-request).
2. Le relevé complet, avec chaque extrait de code : `apprendre/recherches/2026-10-07-dev-appels-modeles.json`.

Écrit par Meridal, avec l'aide de l'IA ; chaque fait vérifié à sa source et relu avant publication. Texte et schémas sous licence [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/deed.fr) : reprenez-les en citant Meridal. Le code sous licence MIT.

Service correspondant

Former vos équipes, et vous

Une demi-journée à deux journées, 550 € à 3 400 €

[Voir le service](https://meridal.fr/offre/#formation)

## Un premier échange de 30 minutes

En visio et sans frais : vous décrivez votre situation, nous vous indiquons ce qui est réalisable, avec quels outils et pour quel ordre de prix. Vous pouvez aussi nous écrire ; chaque message reçoit une réponse écrite.

[Réserver 30 minutes](https://meridal.fr/contact/#reserver) [Écrire un message](https://meridal.fr/contact/)
