Aller au contenu principal

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.

https://openrouter.ai/

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.).

astuce

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
remarque

Voici la liste des modèles de génération de textes, gratuits, à faibles latences, disponibles sur OpenRouter :

https://openrouter.ai/models?fmt=cards&input_modalities=text&max_price=0&output_modalities=text&order=latency-low-to-high

Quelques exemples de modèles gratuits er rapides disponibles :

  • arcee-ai/trinity-mini:free
  • nvidia/nemotron-3-nano-30b-a3b:free
  • google/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 :

  1. S’inscrire sur https://openrouter.ai pour obtenir une clé API.
  2. Choisir un modèle (par exemple : openai/gpt-3.5-turbo, mistralai/mistral-7b-instruct…).
  3. Envoyer une requête POST en JSON à l’URL de l’API.
  4. Lire la réponse et l’utiliser dans le programme.
info

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 à utiliser
  • messages : une liste de messages simulant une conversation (avec les rôles system, 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
attention

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)
remarque

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


Quel est le rôle principal d’OpenRouter ?


Quel est le format des messages envoyés à l’API ?


Quel rôle est utilisé pour envoyer une question dans une conversation ?


Quelle bibliothèque Python est utilisée pour envoyer une requête HTTP ?


Quel en-tête HTTP contient la clé API ?


Quelle URL permet d’envoyer une requête à OpenRouter ?


Le paramètre 'temperature' sert à :


Quel est le format attendu pour l’envoi des données dans la requête ?


Que contient la clé 'choices' dans la réponse JSON ?


Quel est le rôle du champ 'model' dans la requête ?



TP pour réfléchir et résoudre des problèmes

Étape 1 : Créer un environnement de travail propre

  1. Dans le dossier Documents, créer un nouveau dossier nommé tp_openrouter.
  2. Initialiser un projet Python dans ce dossier.
  3. Créer un fichier main.py.
  4. Créer un fichier .env pour stocker la clé API.
  5. Installer les bibliothèques nécessaires (requests et python-dotenv).
Une solution

Étape 2 : Charger la clé API depuis le fichier .env

  1. Modifier le fichier main.py pour lire la clé API depuis le fichier .env à l’aide de python-dotenv.
Une solution

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

  1. Créer un dictionnaire Python nommé data contenant :
    • le modèle arcee-ai/trinity-mini:free ou nvidia/nemotron-3-nano-30b-a3b:free ou google/gemma-3n-e2b-it:free
    • un message de type user avec une question libre (ex. : "Quelle différence majeure existe entre un virus et un cheval de Troie ?")
    • une température de 0.7
Une solution

Étape 4 : Préparer les en-têtes HTTP de la requête

  1. Créer un dictionnaire headers contenant :
    • l’en-tête Authorization avec la clé API
    • l’en-tête Content-Type avec la valeur application/json
Une solution

Étape 5 : Envoyer la requête POST à l’API OpenRouter

  1. Envoyer une requête HTTP POST à l’URL https://openrouter.ai/api/v1/chat/completions
  2. Utiliser la bibliothèque requests pour envoyer cette requête avec les en-têtes et le corps JSON
  3. Stocker la réponse dans une variable response
Une solution

Étape 6 : Analyser la réponse de l’API

  1. Vérifier que le code de réponse HTTP est 200
  2. Extraire le contenu généré par l’IA
  3. Afficher ce contenu dans la console
Une solution

Exécuter le script pour vérifier que tout fonctionne toujours :

python main.py

Étape 7 : Tester avec plusieurs questions

  1. Modifier le contenu du message pour poser trois questions différentes à l’IA
  2. Exécuter le programme à chaque fois et observer les réponses
Une solution

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

  1. Modifier le script pour que l’utilisateur puisse taper sa question dans le terminal
  2. Utiliser input() pour lire la question
  3. Injecter cette question dans data["messages"]
Une solution

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

  1. Ajouter une boucle while qui permet à l’utilisateur de poser plusieurs questions
  2. Quitter la boucle si l’utilisateur tape exit ou quit
Une solution

Exécuter le script pour vérifier que tout fonctionne toujours :

python main.py

Étape 10 : Enregistrer les échanges dans un fichier texte

  1. Ajouter une fonctionnalité pour sauvegarder chaque question et réponse dans un fichier log.txt
  2. Ajouter un horodatage pour chaque échange
Une solution

Exécuter le script pour vérifier que tout fonctionne toujours :

python main.py