---
jupytext:
  text_representation:
    extension: .md
    format_name: myst
    format_version: 0.13
kernelspec:
  display_name: Python 3 (ipykernel)
  language: python
  name: python3
---

# Chercher des informations

Les éléments de programmation que vous découvrez dans ce cours mettent au bout de vos
doigts une foule d'outils, par exemple pour manipuler toutes sortes de données: images,
sons, ... Pour découvrir comment utiliser ces outils, vous pouvez:

- chercher des sources fiables sur internet, comme typiquement:

  - la page Wikipedia des bibliothèques, pour avoir des informations sur les conditions
    d'utilisation, la pérennité, ...
  - la documentation de Python et de ses bibliothèques. Elle est souvent hébergée sur des
    sites dédiés (par exemple <https://docs.python.org/fr/> et <https://matplotlib.org>)
    ou sur des sites hébergés par [ReadtheDocs](https://about.readthedocs.com/), par
    exemple <https://jupyter-ai.readthedocs.io>.
  - les sites de discussion ou les foires aux questions (FAQ) pour programmeurs:
    - <https://stackoverflow.com/>
    - <https://superuser.com/>
    - <https://askubuntu.com/>
    - <https://math.stackexchange.com/>
    - <https://unix.stackexchange.com/>
    - <https://datascience.stackexchange.com>
    - [autres sites](https://stackexchange.com/sites#) utilisant StackExchange
    - <https://discuss.python.org/>
    - ...

- suivre des tutoriels ; le plus souvent, chaque bibliothèque en inclut un dans sa
  documentation ;

- Utiliser un agent conversationnel, avec parcimonie, pertinence, beaucoup de recul, et
  en ayant en tête les nombreux enjeux: impact environnemental, (non) fiabilité, biais,
  données sensibles, coût, ...

Dans la suite de cette fiche, nous détaillons les enjeux des agents conversationnels, et
proposons quelques pistes pour bien les utiliser pour l'apprentissage de la
programmation.

## Utilisation d'un agent conversationnel depuis Jupyter et MyDocker

Dans cette fiche, nous faisons l'hypothèse que votre environnement Jupyter intègre un
agent conversationnel (*chatbot*). C'est par exemple le cas si vous travaillez sur
MyDocker: ce dernier s'appuie en effet sur l'extension
[Jupyter AI](https://jupyter-ai.readthedocs.io/) pour intégrer l'agent conversationnel
libre et souverain (modèle llama3) fourni par le projet [Aristote] (bientôt [ILAAS]).

:::{admonition} Alternatives
:class: dropdown

Il existe de nombreux autres agents conversationnels:

- Le Chat (Mistral IA, France)
- ChatGPT (OpenIA, USA)
- Gemini (Google, USA)
- Perplexity (Perplexity AI, USA)
- Claude (Anthropic, USA)
- DeepSeek (DeepSeek, Chine)

Il est possible d'utiliser Jupyter AI pour les intégrer dans votre environnement Jupyter.
:::

:::{admonition} Comparatif rapide par rapport aux alternatives
- 👍 Intégré dans votre environnement de travail
- 👍 Contextualisé à votre cours (à venir)
- 👍 Pas de collecte de données (personnelles, sensibles)
- 👍 Gratuit
- 👍 Plus sobre énergétiquement
- 👎 Moins puissant, mais en général bien suffisant pour les usages d'aide à
  l'apprentissage de la programmation (pas besoin d'un marteau pilon pour enfoncer un
  clou).
- 👎 Parfois un peu lent: [Aristote] / [ILAAS] montent continuellement en puissance, avec
  une course entre augmentation forte des usages et des ressources disponibles.
:::

Vous pouvez utiliser l'agent conversationnel pour poser des questions, générer du code,
obtenir des explications, etc. Pour y accéder: cliquez sur l'onglet "Jupyter AI Chat"
dans la barre de gauche.

## Exemples d'usage

:::{admonition} Exercice
Essayez quelques-uns des exemples suivants, ou d'autres de votre choix !
:::

:::{admonition} Exemples
> En programmation, qu'appelle-t-on une boucle ?

> Traduis en allemand le texte suivant: «....»

> Relis le texte suivant et signale les fautes d'orthographes et de grammaire: «...»
:::

:::{admonition} Exemple: générer du code
1. Posez la question:

   > Écris du code Python pour afficher la fonction sinus

2. Utilisez les icônes pour insérer le code produit dans la fiche
:::

:::{admonition} Exemple: expliquer du code ou une erreur
1. Sélectionnez du code (ou le texte d'une erreur)

2. Saisissez la question:

   > Je suis débutant en programmation Python. Explique le code suivant:

3. Cliquez sur «envoyer la sélection» avec la question.
:::

:::{admonition} Exemple: expertiser un code
1. Sélectionnez du code

2. Saisissez la question:

   > Je suis débutant en programmation Python. Commente le code suivant en proposant des
   > améliorations:

3. Cliquez sur «envoyer la sélection» avec la question.
:::

:::{admonition} Exemple: demander une indication sur un exercice
1. Sélectionnez l'énoncé de l'exercice

2. Saisissez la question:

   > Je suis débutant en programmation Python ; tu es un enseignant bienveillant. Sans me
   > donner la solution, donne moi une indication pour m'aider à réaliser l'exercice
   > suivant:

3. Cliquez sur «envoyer la sélection» avec la question.
:::

## Principe

Les outils d'IA générative fonctionnent sur la base des statistiques. Ici, l'agent
conversationnel (*chatbot*) s'appuie sur un *grand modèle de language*: un logiciel qui a
été entraîné sur un grand corpus de texte (ex: Wikipedia, bases de code, ...) pour, étant
donné un début de texte, essayer de choisir le mot suivant le plus probable. En
réitérant, il génère du texte qui, statistiquement, ressemble à un texte moyen du corpus
sur lequel il a été entraîné. Le texte produit va donc fortement dépendre (qualité,
biais, connaissances), du choix du corpus par les concepteurs du modèle (ligne
éditoriale). Cette ligne éditoriale est complétée par un post-entraînement pour simuler
une conversation, brider l'expression sur certains sujets, etc.

Les agents conversationnels peuvent compléter les connaissances acquises lors de leur
entraînement par des recherches, par exemple sur internet ; on parle alors de RAG
(*Retrieval-Augmented Generation*). Là encore, le texte produit est conditionné par le
choix éditorial du corpus utilisé pour ces recherches.

Vous pouvez vous le représenter comme un beau parleur qui a très confiance en lui ; il
peut raconter n'importe quoi: raisonnements faux voire inexistants, faits inventés
(hallucinations), biais (de genre, de culture, ...). À vous d'exercer un regard critique
sur ce qui est produit avant de l'utiliser: demandez les sources; croisez les
informations auprès de sources fiables, etc. En bref, procédez comme dans toute recherche
d'information.

### Enjeux

- **Impact environnemental:** Chaque requête à un agent conversationnel a un coût
  environnemental très supérieur à celui d'un moteur de recherche; chacune de ces
  dernières étant déjà coûteuse. Le coût initial d'une requête est quadratique en la
  taille de l'entrée (si votre question est deux fois plus longue, notamment si vous y
  incluez des documents longs, le coût est multiplié par quatre) et proportionnel à la
  taille de la sortie. Réfléchissez avant de poser vos questions. Formulez vos questions
  pour amener des réponses courtes.

  :::{todo}
  Discussion différence d'impact selon les modèles.
  :::

- **Propriété intellectuelle et plagiat:** ...

- **Utilisation pédagogique pertinente:** ...

- **Données sensibles:** ...

### Recommendations

- **Soyez précis dans vos consignes:** vous pouvez donner des indication de rôle «Tu es
  un enseignant de ...», de contexte «Programmation Python», de style «formel, lyrique,
  concis», d'action à réaliser: «Résume le texte suivant `...`», de format souhaité de la
  réponse «N'écris que le code» ... Plus les consignes sont précises, plus la réponse a
  des chances d'être pertinente.

- **Itérez:** lorsque la réponse ne vous convient pas complètement, vous pouvez demander
  de la reformuler avec des consignes supplémentaires. L'agent garde en mémoire les
  quelques dernières questions et réponses de la conversation.

- **Restez maître de vos productions:** vous êtes entièrement responsable de vos
  productions, y compris si vous y intégrez des contenus générés par IA ou si vous vous
  en inspirez (comme pour toute autre source). Assurez-vous que vos productions reflètent
  précisément ce que vous souhaitez exprimer, que vous citez vos sources, etc.

[aristote]: https://www.centralesupelec.fr/fr/aristote-une-ia-au-service-de-lenseignement-superieur
[ilaas]: https://www.ilaas.fr/
