94 lines
3.6 KiB
Markdown
94 lines
3.6 KiB
Markdown
# Démonstration d'une première interaction avec un LLM
|
|
|
|
## Installation
|
|
|
|
Ouvrir un terminal dans le dossier racine du projet :
|
|
|
|
```bash
|
|
poetry install # installer les dépendances nécessaires
|
|
```
|
|
|
|
## Instructions
|
|
|
|
L'objectif est de vous familiariser avec le cœur de l'interaction avec une Intelligence Artificielle : lui envoyer une instruction (un **prompt**) et recevoir sa réponse.
|
|
|
|
Nous allons utiliser un script Python pré-rempli où vous devrez compléter les étapes clés de ce processus.
|
|
|
|
### Vue d'ensemble de l'architecture
|
|
|
|
Ce diagramme montre comment les différents composants interagissent :
|
|
|
|
```mermaid
|
|
graph LR
|
|
User["Vous (IDE)"] -- "Lance le script" --> Script["Script Python 'demo_llm.py'"]
|
|
Script -- "Envoie le prompt (requête HTTP)" --> Server["Serveur LM Studio 'localhost'"]
|
|
Server -- "Transmet au modèle" --> Model["Modèle LLM 'llama-3.1'"]
|
|
Model -- "Génère la réponse" --> Server
|
|
Server -- "Retourne la réponse (JSON)" --> Script
|
|
Script -- "Affiche dans la console" --> User
|
|
```
|
|
|
|
-----
|
|
|
|
### Prérequis
|
|
|
|
Avant de commencer, assurez-vous que :
|
|
|
|
1. **LM Studio est lancé** et qu'un modèle (ex: `meta-llama-3.1-8b-instruct`) est entièrement chargé.
|
|
2. Le **serveur local** de LM Studio est bien démarré.
|
|
|
|
Attention : si vous êtes derrière un proxy, vous devez définir en haut de votre fichier Python :
|
|
|
|
```python
|
|
import os
|
|
os.environ["NO_PROXY"] = "127.0.0.1,localhost"
|
|
```
|
|
|
|
---
|
|
|
|
### Votre mission
|
|
|
|
Ouvrez le fichier `demo_llm.py`. Votre mission est de trouver et de compléter les sections marquées par des commentaires `# TODO`.
|
|
|
|
Voici le flux logique que vous allez implémenter dans le script :
|
|
|
|
```mermaid
|
|
graph TD
|
|
Start(Début) --> T1["TODO 1: Définir 'prompt'"]
|
|
T1 --> T2["TODO 2: Appeler 'await llm.ainvoke(prompt)'"]
|
|
T2 --> T3["TODO 3: Extraire 'response.content'"]
|
|
T3 --> Print["Afficher le résultat"]
|
|
Print --> End(Fin)
|
|
```
|
|
|
|
#### Étape 1 : formuler le Prompt (`TODO 1`)
|
|
|
|
Un "prompt" est simplement l'instruction que vous donnez à l'IA.
|
|
|
|
**Action :** dans la fonction `main`, trouvez la ligne `prompt = ""` et remplacez la chaîne de caractères vide par la question de votre choix.
|
|
* *Simple :* `"Quelle est la distance entre la Terre et la Lune ?"`
|
|
* *Créatif :* `"Invente un nom de super-héros pour un écureuil."`
|
|
|
|
#### Étape 2 : invoquer le LLM (`TODO 2`)
|
|
|
|
Maintenant que nous avons notre question, il faut l'envoyer au modèle. Nous utilisons pour cela l'objet `llm` qui a été initialisé pour nous.
|
|
|
|
**Action :** repérez la ligne `response = None`. Remplacez `None` par l'appel à la méthode qui envoie le prompt au LLM.
|
|
* **Indice** : la bibliothèque `langchain` utilise une méthode asynchrone nommée **`ainvoke()`** sur l'objet `llm`. Vous devez lui passer votre variable `prompt` en argument. N'oubliez pas le mot-clé `await` car la fonction est asynchrone.
|
|
|
|
#### Étape 3 : extraire la Réponse (`TODO 3`)
|
|
|
|
L'appel au LLM ne retourne pas directement le texte de la réponse, mais un objet qui contient plusieurs informations. Le texte généré par l'IA se trouve dans un attribut spécifique de cet objet.
|
|
|
|
**Action :** trouvez la ligne `ai_message = ""`. Remplacez la chaîne vide par le code qui permet d'accéder au contenu textuel de l'objet `response`.
|
|
* **Indice** : le texte se trouve dans l'attribut **`.content`** de l'objet `response`.
|
|
|
|
---
|
|
|
|
### Lancement
|
|
|
|
Une fois que vous avez complété les 3 `TODO`, lancez le script via le bouton "Run" de votre IDE.
|
|
|
|
Vous devriez voir s'afficher dans la console la question que vous avez posée ainsi que la réponse générée par le modèle IA.
|
|
|
|
Vous avez réalisé votre première interaction avec un LLM en Python ! |