Utiliser Aider et Openrouter pour développer avec un LLM

Published: 2025-01-04

Pourquoi ?

L'envie d'essayer les LLM pour coder m'est venue de la lecture du blog de Simon Willison. Simon est l'auteur de nombreux outils, en particulier datasette, un formidable couteau suisse pour l'exploration de données. Il s'intéresse à l'usage des LLM pour l'écriture de code depuis quelques années déjà, et publie régulièrement des articles sur le sujet (un exemple ici).

Quand on commence à se frotter à l'écriture de code accompagné d'un LLM, on s'aperçoit vite que les interfaces utilisateur génériques des grands modèles (ChatGPT, Claude...) se prêtent bien à l'écriture de codes courts from scratch mais sont mal adaptées à un projet existant dans lequel il faut fournir et "garder en tête" un contexte --par exemple les dépendances du projet, son architecture générale etc.-- et s'y référer par la suite (mais les choses changent vite ! C'était en tout cas la situation dans laquelle j'ai commencé).

Alors, comment faire ?

Aider

Aider is AI pair programming in your terminal

-- https://aider.chat

Aider est un outil libre pour programmer à l'aide de LLM. Outre l'accès aux modèles (locaux ou distants), il propose un environnement qui permet de les utiliser efficacement pour programmer:

Astuces

Openrouter

Pour utiliser différents LLM sans créer un compte par fournisseur (au rythme de sortie des nouveautés, c'est très appréciable), on peut utiliser Openrouter, qui donne accès à de nombreux modèles moyennant des frais de paiement et une commission à l'usage.

Pour l'utiliser avec Aider, il suffit d'exporter la clé d'API OPENROUTER_API_KEY et d'utiliser un préfixe pour le nom des modèles.

Par exemple, pour utiliser claude 3.5-sonnet avec aider, dans .aider.conf.yml on pourra déclarer model: openrouter/anthropic/claude-3.5-sonnet ; et pour passer sur deepseek chat, on pourra utiliser la même clé d'API et changer simplement la configuration pour model: openrouter/deepseek/deepseek-chat (note: Aider peut changer de modèle à la volée, c'est parfois pratique pour faire franchir une étape dans l'écriture d'une fonction si un modèle particulier s'enferre...)

Conclusion

Les LLM ont une interface a priori très simple (compléter un texte), mais cette simplicité rend en fait leur utilisation difficile. Des outils spécialisés permettent de guider ce processus dans le cadre de l'écriture de code. L'important, cela dit, est d'expérimenter et de trouver un environnement qui nous convienne -- pourquoi pas aider ?