Programmer avec du code et des prompts
Il y a plusieurs façons de concevoir l'IA avec le développement logiciel. Souvent on en parle pour aider au développement, pour générer du code. On parle parfois aussi d'agents qui sont eux mêmes des systemes avec du code et des prompts, mais ils contiennent souvent plus de logique dans les prompts que dans le code de l'agent lui même. Non je veux parler ici de l'intégration de l'IA dans le code d'un système plus large ou le code représente une large part de la logique du programme. C'est le genre de système que je construis ces derniers mois, alors j'ai décidé d'écrire sur le sujet pour essayer d'y voir plus clair sur ma pratique.
Un prompt c'est du code ?
Quand l'éxécution des prompts se passe au sein du code d'un programme, il y a plusieurs manières de voir les choses. Les LLM éxécutent en quelque sorte du code et retournent du texte en sortie. (ou un autre type de média: image, vidéo, son, ...)
On peut voir le prompt que l'on écrit pour un LLM comme des lignes de code que l'on écrit avec un langage de programmation. Même si c'est dans ce cas là, il n'y a pas de syntaxe stricte, de compilation. Néanmoins il semble que l'analogie va plus loin. L'ensemble d'un prompt + d'un LLM qui infère le résultat c'est comme un appel de fonction. Le prompt est l'input, le LLM est la fonction qui éxécute le code et retourne un output. Une fonction boite noire. Alors bien sur, pour interagir avec d'autres parties du code, il est bon de demander dans le prompt un format de sortie structuré, comme du JSON, du YAML, du XML, ou même du code dans un langage de programmation.
Il y a beaucoup de raisons de faire appel à l'IA mais cela revient peu souvent à lui demander une sortie simple non structurée. Si votre application ou votre idée est déja structurée, vous voulez adopter cette convention pour la sortie que l'on attend du LLM.
Dans un prompt, on décrit à la fois les instructions de la fonction (de manière plus ou moins précise), le format de sortie attendu, avec parfois quelques exemples, et bien sûr cette fonction prend des paramètres donc on passe des données existante du système dans le prompt.