AI Coding · 5 mondes · 15 étapes

Agents & outils

Messages, outils, boucle d'agent, RAG et garde-fous, écrits de ses mains.

Progression

0 %

0/15 étapes terminées

Fondamental · 8 min de lecture

Parler à un modèle

Ce qu'une application envoie vraiment

1Définition

Une API de modèle de langage reçoit une liste de messages (avec les rôles system, user, assistant) et renvoie le suivant. Le modèle est sans mémoire : l'application renvoie tout l'historique utile à chaque appel, et vérifie ce qui revient avant de s'en servir.

2Principes fondamentaux

01

La mémoire est dans ton code

Le tableau de messages est la seule mémoire de la conversation. Ce que tu n'envoies pas n'existe pas pour le modèle.

02

Le message system est le règlement

Il vient en premier, ne change pas, et fixe le rôle et les limites de l'assistant.

03

Une réponse est une entrée

Un JSON produit par un modèle peut être mal formé ou hors sujet : try / catch, puis validation.

04

Chaque appel se paie

On est facturé aux jetons lus et écrits : un long historique coûte à chaque tour.

3Exemples pratiques

Un appel réel avec le SDK d'Anthropic

Exemple
1import Anthropic from "@anthropic-ai/sdk";2 3const client = new Anthropic();   // lit ANTHROPIC_API_KEY dans l'environnement4const reponse = await client.messages.create({5  model: "claude-sonnet-5",6  max_tokens: 500,7  system: "Tu es l'assistant de Sys-Code. Réponds en une phrase.",8  messages: [{ role: "user", content: "Qu'est-ce qu'une variable ?" }],9});10console.log(reponse.content[0].text);

Même forme que dans le cours : un règlement, une liste de messages, une réponse à lire. La clé d'API reste côté serveur, jamais dans le navigateur.

Valider une réponse structurée

Exemple
1let donnees;2try {3  donnees = JSON.parse(texte);4} catch {5  return "inconnu";6}7return THEMES.includes(donnees.theme) ? donnees.theme : "inconnu";

Deux contrôles : la forme (du JSON valide), puis le fond (une valeur attendue).

4Erreurs courantes

Oublier l'historique

À éviter

await modele([{ role: "user", content: texte }])

À faire

conversation.push(…); await modele(conversation)

Pourquoi : Le modèle répond à la dernière phrase comme si elle tombait du ciel.

Croire le JSON sur parole

À éviter

const { theme } = JSON.parse(texte);

À faire

try / catch, puis THEMES.includes(theme)

Pourquoi : Un texte mal formé fait planter ; un thème inventé se propage dans l'application.

Une clé d'API dans le navigateur

À éviter

fetch(api, { headers: { "x-api-key": "sk-…" } })  // côté client

À faire

Une route serveur qui appelle le modèle

Pourquoi : Tout ce qui est envoyé au navigateur est lisible par l'utilisateur.

5Subtilités à connaître

  • ◆La plupart des API proposent des sorties structurées qui garantissent un JSON conforme à un schéma ; la validation du fond reste nécessaire.
  • ◆La température règle la part de hasard : basse pour extraire ou classer, plus haute pour écrire.
  • ◆Un même message peut recevoir des réponses différentes d'un appel à l'autre : on teste un assistant sur plusieurs essais, pas un seul.

6Vérifie ta compréhension

Question 1/3

Score 0

Où vit la mémoire d'une conversation ?

Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.