Très loin de la hype autour des AutoGPT et autres expériences autour des "AGI" (Artificial General Intelligence), cela reste très compliqué pour GPT-4 de construire une réflexion poussée sur une tâche à résoudre sans lui fournir les instructions et actions adéquates. (Les développeurs de BeeBot ont même jeté l'éponge)
Il faut considérer un Agent LLM comme un développeur débutant avec une réflexion limitée mais une connaissance quasiment illimitée.
La meilleure manière d'obtenir des résultats satisfaisant est de guider l'Agent LLM dans la réalisation de sa tâches.
Le cœur d'un Agent LLM est son prompt, avoir plusieurs Agents permet de se concentrer sur le Prompt Engineering spécifique à chaque tâche.
Ce que vous écrivez dans le bloc d'instruction doit être précis et décrire la manière dont vous auriez réaliser la tâche, étape par étape.
Imaginons un Agent en charge de faire un backup:
You are a backup agent capable of moving files from one place to another.
You task is to backup the files containing the user typescript code of a project.
You need to copy the files containing the code into a backup directory.
You can only move one file after another.
Do not move dependencies or build files.
Ce genre de bloc d'instructions détaillée donne de très bon résultats. Il ne faut pas hésiter à itérer et rajouter des instructions si l'Agent à un comportement non attendu.
A contrario, un bloc d'instructions trop vague laisse une trop grand interprétation au LLM et les risques d'hallucination sur son objectif sont plus importants.
You are a backup agent capable of moving files from one place to another.
Your task is to backup the files of a project into the backup directory.
Plus notre Agent aura d'actions à sa disposition et plus il y aura de risques qu'il hallucine ou perde du temps sur la résolution de la tâche.
Cela concerne autant la quantité d'actions que la surface de celles-ci.
Reprenons notre exemple, afin de mener sa tâche à bien, notre Agent va avoir besoin de copier et lister des fichiers ainsi que de créer des répertoires.
On pourrait être tenter de lui fournir une action généraliste pour exécuter des commandes shell:
You can use the following actions:
<Action name="executeShellCommand">
<Parameter name="command">
// command to execute
</Parameter>
</Action>
On observe une réduction des performances de l'Agent voir un bouclage lorsque celui-ci n'est pas guidé correctement.
Dans ce cas, il vaut mieux fournir uniquement les actions dont il aura besoin:
<Action name="copyFile">
<Parameter name="source">
// path of the file to copy
</Parameter>
<Parameter name="destination">
// path of the destination file
</Parameter>
</Action>
<Action name="listFiles">
<Parameter name="directory">
// path of the directory to list
</Parameter>
</Action>
<Action name="createDirectory">
<Parameter name="directory">
// path of the directory to create
</Parameter>
</Action>
Les Agents LLM sont encore loin de l'autonomie qu'on pourrait attendre d'un véritable développeur.
Il est nécessaire de les guider pour réaliser des tâches spécifiques, cela demande plus d'effort mais les résultats sont tout de même impressionnants!
La création du prompt reste la partie la plus importante et il y a des techniques pour améliorer ses prompts.
Une des clés pour améliorer l'autonomie d'un LLM est la construction d'une mémoire, celle-ci peut-être linéaire en incluant dans le prompt le résultat de toutes les actions précédentes par exemple ou clairsemée avec un système d'écriture et de lecture de connaissances à ajouter au prompt.
TAGS:
GenAI est un site français à propos des avancées technologiques dans le monde de l'intelligence artificielle.
© Copyright CC-BY-SA 2023-2024 gen-ai.fr