Utiliser une IA avec Python
Comprendre comment interagir avec une IA avec Python et Openrouter
Notions théoriques
Une API, c'est quoi ?
API et intelligence artificielle
Une API (Application Programming Interface) est un ensemble de règles qui permet à deux programmes de communiquer entre eux. Dans le cas d’OpenRouter, l’API permet d’envoyer une requête à un modèle d’IA (par exemple : une question) et de recevoir une réponse générée automatiquement.
L’IA utilisée ici est de type LLM (Large Language Model), un modèle de traitement du langage naturel entraîné à comprendre et générer du texte.
Quelle API utiliser ?

Nous allons utiliser OpenRouter, une alternative gratuite à OpenAI.
- OpenRouter est gratuit dans sa version de base
- OpenRouter fonctionne avec une clé API que vous pouvez obtenir facilement
- OpenRouter permet d’accéder à des modèles comme GPT-3.5 ou Mistral
OpenRouter propose par exemple Mistral 7B Instruct, qui est très performants et gratuits à utiliser.
Qu’est-ce qu’OpenRouter ?
OpenRouter est une plateforme qui permet d’accéder à plusieurs modèles d’intelligence artificielle (IA) à travers une API unique.
OpenRouter joue un rôle d’intermédiaire entre les développeurs et les différents fournisseurs de modèles d’IA (comme OpenAI, Anthropic, Mistral, Cohere, etc.).
Avec OpenRouter, vous n'avez pas besoin de créer un compte et une configuration spécifique pour chaque fournisseur d'IA.
Comment fonctionne l’API OpenRouter ?
L’API d’OpenRouter fonctionne comme celle d’OpenAI :
- Vous envoyez un prompt (texte d’instruction)
- Vous recevez une réponse générée par l’IA
Voici la liste des modèles de génération de textes, gratuits, à faibles latences, disponibles sur OpenRouter :
Quelques exemples de modèles gratuits er rapides disponibles :
arcee-ai/trinity-mini:freenvidia/nemotron-3-nano-30b-a3b:freegoogle/gemma-3n-e2b-it:free
Pourquoi utiliser Python avec OpenRouter ?
Python est un langage simple, lisible, et très utilisé dans le domaine de l’IA.
Il permet d’envoyer des requêtes HTTP facilement, de traiter les réponses, et de construire rapidement des scripts pour interagir avec des modèles d’IA.
Fonctionnement général
Voici les grandes étapes pour utiliser OpenRouter avec Python :
- S’inscrire sur https://openrouter.ai pour obtenir une clé API.
- Choisir un modèle (par exemple :
openai/gpt-3.5-turbo,mistralai/mistral-7b-instruct…). - Envoyer une requête POST en JSON à l’URL de l’API.
- Lire la réponse et l’utiliser dans le programme.
OpenRouter est compatible avec la spécification de l’API d’OpenAI. Cela signifie que les appels sont très similaires à ceux faits à api.openai.com.
Format d’une requête à l’API
L’URL de l’API est :
https://openrouter.ai/api/v1/chat/completions
Le corps de la requête est un objet JSON contenant :
model: le nom du modèle à utilisermessages: une liste de messages simulant une conversation (avec les rôlessystem,user,assistant)temperature: un paramètre pour ajuster la créativité de la réponse
Exemple de corps JSON :
{
"model": "openai/gpt-3.5",
"messages": [
{"role": "user", "content": "Quelle différence majeure existe entre un virus et un cheval de Troie ?"}
],
"temperature": 0.7
}
Gestion de la clé API
La clé API est une chaîne secrète qui doit être transmise dans l’en-tête HTTP Authorization :
Authorization: Bearer VOTRE_CLE_API
Ne jamais publier une clé API sur Internet ou dans un dépôt public.
Avantages de l’API OpenRouter
- Accès unifié à plusieurs modèles
- Facilité d’utilisation avec Python
- Coût potentiellement réduit selon le modèle choisi
- Documentation claire et rapide à prendre en main
Exemple pratique
Il est possible de créer un petit script Python qui envoie une question à un modèle d’IA via OpenRouter et affiche la réponse.
Voici un exemple complet :
import requests
import json
# Clé API personnelle (à remplacer par la vôtre)
API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxx"
# En-têtes HTTP
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Corps de la requête
data = {
"model": "openai/gpt-3.5",
"messages": [
{"role": "user", "content": "Quelle différence majeure existe entre un virus et un cheval de Troie ?"}
],
"temperature": 0.7
}
# Envoi de la requête
response = requests.post(
"https://openrouter.ai/api/v1/chat/completions",
headers=headers,
data=json.dumps(data)
)
# Affichage de la réponse
if response.status_code == 200:
result = response.json()
print("Réponse de l'IA :")
print(result["choices"][0]["message"]["content"])
else:
print("Erreur :", response.status_code)
print(response.text)
Il est recommandé d’utiliser une bibliothèque comme python-dotenv pour stocker la clé API dans un fichier .env et éviter de l’écrire en dur dans le code.
Ce script permet :
- d’envoyer une question à l’IA
- de recevoir une réponse textuelle
- de comprendre comment structurer les requêtes
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Étape 1 : Créer un environnement de travail propre
- Dans le dossier
Documents, créer un nouveau dossier nommétp_openrouter. - Initialiser un projet Python dans ce dossier.
- Créer un fichier
main.py. - Créer un fichier
.envpour stocker la clé API. - Installer les bibliothèques nécessaires (
requestsetpython-dotenv).
Une solution
Vous devez être connecté pour voir le contenu.
Étape 2 : Charger la clé API depuis le fichier .env
- Modifier le fichier
main.pypour lire la clé API depuis le fichier.envà l’aide depython-dotenv.
Une solution
Vous devez être connecté pour voir le contenu.
Exécuter le script pour vérifier que la clé est bien chargée :
python main.py
Étape 3 : Construire le corps de la requête à envoyer à l’API
- Créer un dictionnaire Python nommé
datacontenant :- le modèle
arcee-ai/trinity-mini:freeounvidia/nemotron-3-nano-30b-a3b:freeougoogle/gemma-3n-e2b-it:free - un message de type
useravec une question libre (ex. : "Quelle différence majeure existe entre un virus et un cheval de Troie ?") - une température de 0.7
- le modèle
Une solution
Vous devez être connecté pour voir le contenu.
Étape 4 : Préparer les en-têtes HTTP de la requête
- Créer un dictionnaire
headerscontenant :- l’en-tête
Authorizationavec la clé API - l’en-tête
Content-Typeavec la valeurapplication/json
- l’en-tête
Une solution
Vous devez être connecté pour voir le contenu.
Étape 5 : Envoyer la requête POST à l’API OpenRouter
- Envoyer une requête HTTP POST à l’URL
https://openrouter.ai/api/v1/chat/completions - Utiliser la bibliothèque
requestspour envoyer cette requête avec les en-têtes et le corps JSON - Stocker la réponse dans une variable
response
Une solution
Vous devez être connecté pour voir le contenu.
Étape 6 : Analyser la réponse de l’API
- Vérifier que le code de réponse HTTP est 200
- Extraire le contenu généré par l’IA
- Afficher ce contenu dans la console
Une solution
Vous devez être connecté pour voir le contenu.
Exécuter le script pour vérifier que tout fonctionne toujours :
python main.py
Étape 7 : Tester avec plusieurs questions
- Modifier le contenu du message pour poser trois questions différentes à l ’IA
- Exécuter le programme à chaque fois et observer les réponses
Une solution
Vous devez être connecté pour voir le contenu.
Exécuter le script pour vérifier que tout fonctionne toujours :
python main.py
Étape 8 : Ajouter une saisie utilisateur pour interagir avec l’IA
- Modifier le script pour que l’utilisateur puisse taper sa question dans le terminal
- Utiliser
input()pour lire la question - Injecter cette question dans
data["messages"]
Une solution
Vous devez être connecté pour voir le contenu.
Exécuter le script pour vérifier que tout fonctionne toujours :
python main.py
Étape 9 : Ajouter une boucle pour poser plusieurs questions à la suite
- Ajouter une boucle
whilequi permet à l’utilisateur de poser plusieurs questions - Quitter la boucle si l’utilisateur tape
exitouquit
Une solution
Vous devez être connecté pour voir le contenu.
Exécuter le script pour vérifier que tout fonctionne toujours :
python main.py
Étape 10 : Enregistrer les échanges dans un fichier texte
- Ajouter une fonctionnalité pour sauvegarder chaque question et réponse dans un fichier
log.txt - Ajouter un horodatage pour chaque échange
Une solution
Vous devez être connecté pour voir le contenu.
Exécuter le script pour vérifier que tout fonctionne toujours :
python main.py