Se familiariser aux IA génératives en trois étapes

November 4, 2024

De nombreux amis dev ou data me demandent comment faire le premier pas dans l'usage des IA génératives. En filigrane, je perçois leur hantise des calculs matriciels. Je comprends, je compatis même. Après tout, passés les bancs de la prépa MPSI ou de l'école d'ingénieur qui ressent une poussée de dopamine à l'idée de faire des calculs de "propagation de gradient" avant le petit déj (moi ! mais ça ne compte pas haha). À force de faire quasiment la même réponse à chaque fois, je me suis dit qu’il serait intéressant de mettre cela par écrit, pour la postérité (rien que ça 😂).

D'entrée de jeu, parlons de l'éléphant dans la pièce : faut-il être un génie des maths pour espérer tirer profit des IA génératives ? Cette question est trop importante pour que j'y apporte une réponse démagogique. Je vais donc m'efforcer à être le plus pertinent possible en donnant une réponse à laquelle vous ne vous attendez peut-être pas mais qui rayonne de vérité : ça dépend ! (haha, je vous ai bien fait marcher hein)

Plus sérieusement, si votre but est de faire du machine learning, de devenir Data Scientist, ou de travailler comme chercheur chez OpenAI ou Google Deepmind, alors oui, il vous faut un bon bagage en mathématiques. Si en revanche vous voulez juste utiliser les IA génératives pour booster votre productivité ou développer des scripts ou applications permettant de booster votre productivité, alors non, pas besoin d’avoir la moindre notion de calcul matriciel.

Que faire pour saisir le taureau par les cornes et enfin pouvoir vous vanter sur LinkedIn de votre expertise nouvelle en IA générative ou "genAI" pour les plus cools ?

Premièrement, et je pense que tout le monde ou presque est à ce niveau, créez-vous un compte sur "Le Chat" de Mistral ou le très populaire ChatGPT d’OpenAI. Utilisez ces applications chaque jour et surtout testez leurs limites. Essayez de trouver des prompts qui poussent les LLMs (modèles de langages) qui sous tendent ces applications à faire des erreurs. C’est seulement en comprenant ce qui marche et de ce qui ne marche pas que vous arriverez à développer des intuitions justes du fonctionnement des IA génératives (LLMs, ici en l’occurrence). Cette utilisation régulière vous permettra aussi d’identifier les cas d’utilisation les plus importants pour vous sur le plan personnel ou professionnel. Ces cas d’utilisations ont le don de booster votre productivité.

Vous noterez que dans cet article, je parle uniquement des LLMs, alors que l'IA générative inclut aussi Midjourney (pour la génération d'images), ElevenLabs (pour l'audio), ainsi qu'une belle panoplie d'autres outils pour la génération de vidéos. Le choix de centrer l'article sur les LLMs n'est pas anodin : il réside dans leur versatilité et leur accès facile. Il est beaucoup plus simple d'écrire des prompts pour des LLMs que d'en créer pour des modèles de génération d'images ou de vidéos. Les LLMs permettent ainsi de monter en compétence et de se forger des intuitions solides sur les apports des IA génératives, des intuitions facilement transposables aux autres types de modèles.

Deuxièmement, créez-vous un compte sur le Nebius AI Studio ou pour accéder aux API d’OpenAI ou Anthropic. Je recommande le Nebius AI Studio que j’ai découvert récemment car cela vous permettra d’obtenir $100 de crédits API dès le départ, ce qui est assez généreux pour commencer à expérimenter sur leur plateforme sans engager de frais. Générez une clé d’API. Copiez-la, gardez-la précieusement, enregistrez-la quelque part sur votre ordinateur, puis ouvrez VS Code ou votre éditeur de code par défaut, créez un fichier main.py et ajoutez-y le code suivant :

from openai import OpenAI
from dotenv import load_dotenv
import os

# Load the environment variables, you should have an .env file in the same directory as this file
load_dotenv()

# Initialize the client to interact with the Nebius API Studio
client = OpenAI(base_url="https://api.studio.nebius.ai/v1/",
                api_key=os.environ.get("NEBIUS_API_KEY"),
                )

# Create a completion using the Meta-Llama model
response = client.chat.completions.create(
    model="meta-llama/Meta-Llama-3.1-405B-Instruct",
    messages=[
        {
            "role": "user",
            "content": "Qui est le président de la France?"
        },
    ]
)

# Print the response
print(response.choices[0].message.content)

Dans le terminal, lancez l'exécution du script et observez le résultat.

Python main.py

Changez de prompt. Observez encore. Fascinant, non?

Troisièmement, remplacez le contenu actuel de votre fichier main.py par celui-ci :

from openai import OpenAI
from dotenv import load_dotenv
import os

# Load the environment variables, you should have an .env file in the same directory as this file
load_dotenv()

# Initialize the client to interact with the Nebius API Studio
client = OpenAI(base_url="https://api.studio.nebius.ai/v1/",
                api_key=os.environ.get("NEBIUS_API_KEY"),
                )

# Load the content of the wikipedia.txt file
with open("wikipedia.txt", "r") as file:
    wikipedia_content = file.read()

# The Llama model has a 128K context window, so let's split the content into chunks of less than 128K characters
chunk_size = 120000
chunks = [wikipedia_content[i:i + chunk_size] for i in range(0, len(wikipedia_content), chunk_size)]

# Now let's summarize each chunk except if the document fits in a single chunk
summaries = []
for chunk in chunks:
    response = client.chat.completions.create(
        model="meta-llama/Meta-Llama-3.1-405B-Instruct",
        messages=[
            {
                "role": "user",
                "content": f"Résumez le texte suivant en 5 phrases: {chunk}"
            },
        ]
    )
    summaries.append(response.choices[0].message.content)


# Combine the summaries into a single text
summary_text = " ".join(summaries)

# Print the summary
print(summary_text)

Avant de l'exécuter, créez un fichier .txt dans le dossier contenant le script main.py et insérez dans ce fichier le contenu d'une page Wikipedia de votre choix. Nommez le fichier "wikipedia.txt", puis exécutez le script contenu dans le fichier main.py.

Vous obtenez un résumé de l’article Wikipedia contenu dans le fichier wikipedia.txt. Simple. Basique. Utile aussi, tant la création automatique de résumés est un cas d’utilisation très prisé des LLMs.

Alors, tout ceci semble bien basique me direz-vous (certains d’entre vous du moins) avec un air médusé et une mine hautaine 😂. C’est bien le but, répondrais-je sourire au coin, car le but de cet article est bien de montrer que tout le monde peut s’y mettre, expérimenter, aller du très simple au simple, puis du simple au complexe (sans jamais passer par la case de l’inutilement compliqué).

Bonne exploration !