All guides
IntermediateSelf-pacedFree GuideSection 18/95

Appeler une LLM API depuis Python

Practise development foundations: programming, web, APIs, data and AI tools. Work through sections and exercises to build your first projects.

The full lessons for this course are currently available in French. Use the section menu to navigate the French course.

💡

Free content, available without an account. Tools and models change: use the current model guide to check their versions. Models and 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 ?"))
Quick Check

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

Quick Check

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

Quick Check

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

Your progress

Progress is self-reported and stored in your browser. The final completion record is not a qualification or an independent assessment.

View progress and completion record

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

One practical AI workflow in your inbox

Methods, resources and new exercises. Free, unsubscribe at any time.