Tous les guides
IntermédiaireÀ votre rythmeGuide gratuitSection 18/95

Appeler une LLM API depuis Python

Pratiquez les fondations du développement : programmation, web, API, données et usages de l’IA. Des sections et exercices pour construire vos premiers projets.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 11.1.18 : Appeler une LLM API depuis Python

🎯 Objectif pédagogique

Intégrer l'IA générative dans votre code en appelant l'API d'un LLM (Large Language Model) depuis Python. Vous serez capable de faire appel à GPT-4, Claude ou un modèle open-source pour générer du texte, analyser des données et automatiser des tâches cognitives.


L'IA comme service — Le tournant

Marc a utilisé ChatGPT dans un navigateur. Pratique, mais limité. La vraie puissance vient quand on appelle l'IA depuis son code : automatiser l'analyse de 1 000 CV, générer des rapports personnalisés, créer un chatbot sur son site. C'est la différence entre utiliser l'IA et programmer l'IA.

Les principales APIs LLM

ProviderModèlePrix (input/output)Forces
OpenAIGPT-4o2.50/10$ par 1M tokensLe plus polyvalent
AnthropicClaude 3.5 Sonnet3/15$ par 1M tokensRaisonnement, sécurité
GoogleGemini Pro1.25/5$ par 1M tokensMultimodal
GroqLlama 3 70BGratuit (limité)Ultra-rapide
MistralMistral Large2/6$ par 1M tokensFrançais, open-weight

Appeler l'API OpenAI

pip install openai
from openai import OpenAI
import os

# Clé API depuis variable d'environnement (JAMAIS en dur !)
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        \{"role": "system", "content": "Tu es un assistant développeur expert."\},
        \{"role": "user", "content": "Explique-moi async/await en JavaScript en 3 phrases."\}
    ],
    max_tokens=200,
    temperature=0.7
)

answer = response.choices[0].message.content
print(answer)

JAMAIS de clé API dans le code !

La clé API doit être dans un fichier .env (jamais committé sur Git). Marc a publié sa clé par erreur — 200$ de facture en 3 heures. Utilisez python-dotenv ou des variables d'environnement.

Utiliser un fichier .env

pip install python-dotenv
# .env (à la racine du projet, dans .gitignore !)
# OPENAI_API_KEY=sk-proj-votre-clé-ici
from dotenv import load_dotenv
import os

load_dotenv()    # Charge le .env
api_key = os.getenv("OPENAI_API_KEY")

Les paramètres clés

ParamètreRôleValeurs typiques
modelLe modèle à utiliser"gpt-4o-mini", "gpt-4o"
messagesL'historique de conversationListe de {role, content}
temperatureCréativité (0=déterministe, 2=chaos)0.3 analyse, 0.7 conversation, 1.0 créatif
max_tokensLongueur max de la réponse100-4000
systemInstructions de comportementLe "prompt système"

Roles dans la conversation

messages = [
    # system : définit le comportement de l'IA
    \{"role": "system", "content": "Tu es un analyste financier expert. Réponds en français."\},
    
    # user : les messages de l'utilisateur
    \{"role": "user", "content": "Analyse cette tendance : ventes +15% Q1, -3% Q2"\},
    
    # assistant : les réponses précédentes de l'IA (pour le contexte)
    \{"role": "assistant", "content": "La tendance montre un ralentissement..."\},
    
    # user : nouveau message (avec le contexte précédent)
    \{"role": "user", "content": "Quelles seraient tes recommandations ?"\}
]

Cas d'usage pratiques

1. Analyseur de code

def analyze_code(code_snippet):
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            \{"role": "system", "content": "Tu es un code reviewer expert. Analyse le code et donne 3 suggestions d'amélioration. Sois concis."\},
            \{"role": "user", "content": f"Analyse ce code :\n\n\{code_snippet\}"\}
        ],
        temperature=0.3
    )
    return response.choices[0].message.content

review = analyze_code("""
def calc(x,y,op):
    if op == '+': return x+y
    if op == '-': return x-y
    if op == '*': return x*y
    if op == '/': return x/y
""")
print(review)

2. Générateur de contenu

def generate_blog_outline(topic, audience="développeurs débutants"):
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            \{"role": "system", "content": f"Tu es un rédacteur tech. Crée un plan d'article pour \{audience\}."\},
            \{"role": "user", "content": f"Crée un plan détaillé pour un article sur : \{topic\}"\}
        ],
        temperature=0.7,
        max_tokens=500
    )
    return response.choices[0].message.content

outline = generate_blog_outline("Comment débuter en Python en 2026")
print(outline)

Alternative gratuite : Groq (Llama 3)

from openai import OpenAI

# Groq utilise le même format que OpenAI !
client = OpenAI(
    api_key=os.getenv("GROQ_API_KEY"),
    base_url="https://api.groq.com/openai/v1"
)

response = client.chat.completions.create(
    model="llama-3.3-70b-versatile",
    messages=[
        \{"role": "user", "content": "Bonjour ! Explique Docker en 2 phrases."\}
    ]
)
print(response.choices[0].message.content)

Le standard OpenAI

La plupart des providers (Groq, Together AI, Mistral, OpenRouter) utilisent le même format API que OpenAI. Changez juste base_url et api_key — le reste du code est identique. Apprenez le format OpenAI, vous connaissez tous les LLMs.

🏋️ Exercice pratique (25 minutes)

# Mini assistant de bootcamp
import os
from openai import OpenAI

# Utilisez Groq (gratuit) ou OpenAI
client = OpenAI(
    api_key=os.getenv("GROQ_API_KEY"),
    base_url="https://api.groq.com/openai/v1"
)

def ask_bootcamp_assistant(question, context=""):
    system_prompt = """Tu es un assistant pédagogique pour un bootcamp Tech & IA.
    Tu aides Marc, 34 ans, ex-analyste financier en reconversion.
    Réponds de manière concise, avec des exemples pratiques.
    Utilise des analogies financières quand c'est pertinent."""
    
    messages = [\{"role": "system", "content": system_prompt\}]
    if context:
        messages.append(\{"role": "assistant", "content": context\})
    messages.append(\{"role": "user", "content": question\})
    
    response = client.chat.completions.create(
        model="llama-3.3-70b-versatile",
        messages=messages,
        temperature=0.5,
        max_tokens=300
    )
    return response.choices[0].message.content

# Test
print(ask_bootcamp_assistant("C'est quoi une API REST ? Explique comme si j'étais un trader."))
print("---")
print(ask_bootcamp_assistant("Quelle est la différence entre Python et JavaScript ?"))
Vérification rapide

Pourquoi stocker sa clé API dans un fichier .env plutôt que dans le code ?

Vérification rapide

Que contrôle le paramètre 'temperature' dans un appel LLM ?

Vérification rapide

Quel est l'avantage de la compatibilité API OpenAI de Groq ?

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.