Appeler une API LLM avec Node.js et Python
Les bases pour intégrer un modèle de langage dans vos applications web ou vos scripts d'automatisation.
Que vous utilisiez l’API distante d’OpenAI, d’Anthropic, ou une API locale via Ollama, le principe reste exactement le même. L’industrie s’est standardisée autour d’un format de requête commun.
Comment intégrer l’intelligence artificielle dans vos scripts Python et vos applications Node.js en ciblant une instance Ollama locale (le code reste quasi-identique pour du cloud).
L’endpoint de Chat comme fondation
Un LLM “Chat” attend une structure précise, un tableau de messages. Chaque message possède un role (qui parle) et un content (le texte).
Les rôles principaux sont.
system. Les instructions globales données au modèle (son comportement).user. La question ou la requête de l’utilisateur final.assistant. La réponse générée par le modèle.
Implémentation en Python
Python est le langage roi dans l’écosystème IA. Plutôt que de faire des requêtes HTTP brutes, nous utilisons généralement le SDK officiel openai qui permet de taper sur n’importe quel endpoint compatible.
Installez le package.
pip install openai
Le code pour interroger une API locale.
from openai import OpenAI
# On pointe vers l'URL locale d'Ollama.
# Si c'était OpenAI, on enlèverait base_url et on mettrait une vraie API key.
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama"
)
reponse = client.chat.completions.create(
model="llama3", # Le nom du modèle installé
messages=[
{"role": "system", "content": "Tu es un expert en cybersécurité. Réponds brièvement."},
{"role": "user", "content": "Qu'est-ce qu'une attaque XSS ?"}
],
temperature=0.7 # Contrôle la créativité (0 = factuel, 1 = créatif)
)
print(reponse.choices[0].message.content)
Implémentation en Node.js (TypeScript/JavaScript)
Côté backend web ou script JS, la logique est identique. Le SDK Node.js gère la structure pour nous.
Installez le package.
npm install openai
Le code d’intégration.
import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'http://localhost:11434/v1',
apiKey: 'ollama' // Requis par le SDK, même si Ollama s'en moque
});
async function genererReponse() {
try {
const completion = await openai.chat.completions.create({
model: 'llama3',
messages: [
{ role: 'system', content: 'Tu es un assistant utile qui répond uniquement au format JSON.' },
{ role: 'user', content: 'Donne-moi 3 langages de programmation backend avec leur année de création.' }
],
response_format: { type: 'json_object' } // Force la sortie en JSON
});
const resultat = completion.choices[0].message.content;
console.log(JSON.parse(resultat));
} catch (erreur) {
console.error('Erreur API:', erreur);
}
}
genererReponse();
Le mode “Streaming” (Pour de l’UX)
Générer un long texte peut prendre plusieurs secondes. Si vous construisez une interface web, faire attendre l’utilisateur devant une page blanche est une mauvaise pratique.
Il faut utiliser le streaming, le modèle vous envoie les mots (tokens) un par un, au fur et à mesure qu’il les calcule.
En Node.js, il suffit d’ajouter stream: true.
const stream = await openai.chat.completions.create({
model: 'llama3',
messages: [{ role: 'user', content: 'Raconte une histoire.' }],
stream: true,
});
// Affichage progressif dans la console
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
Avec ces bases, vous êtes prêt à intégrer des LLMs dans n’importe quel projet d’ingénierie logicielle.