AutoBrowse est un agent IA autonome capable de naviguer sur le Web. Vous confiez simplement une tâche à AutoBrowse et il la terminera en interagissant avec le navigateur Web comme s'il s'agissait d'un humain.
Quelques exemples de tâches que vous pouvez lui confier :
Allez sur booking.com et trouvez un hôtel pour 2 personnes à Madrid pour 2 nuits à partir du 2 novembre pour moins de 200 EUR par nuit.
Inscrivez-vous sur ryanair.com avec l'e-mail : [email protected] et le mot de passe C0mplexPassword !.
Accédez à Craigslist et recherchez Nintendo DS. Cliquez sur le premier résultat.
https://drive.google.com/file/d/1Ind9z3mjHKTS-Q0vJl2FaHcPLrZtdEX0/view
Créer un environnement Python 3.9
conda create --name py39 python=3.9
Activer l'environnement
conda activate py39
Installer les dépendances
pip install -r requirements.txt
Démarrez l'environnement du navigateur
Consultez le fichier README sous browser-console/
pour obtenir des instructions sur la façon de l'exécuter.
Créez un fichier OAI_CONFIG_LIST
avec le contenu suivant et insérez votre clé API OpenAI :
[
{
"model" : " gpt-4 " ,
"api_key" : " <your-api-key> "
},
{
"model" : " gpt-3.5-turbo " ,
"api_key" : " <your-api-key> "
},
{
"model" : " gpt-3.5-turbo-16k " ,
"api_key" : " <your-api-key> "
}
]
Exécuter la navigation automatique
python autobrowse.py
Vous serez ensuite invité à confier une tâche à AutoBrowse.
Vous pouvez apporter des modifications aux configurations d'agent en modifiant le fichier agent_config.py
. Vous pouvez modifier les invites du système, modifier les modèles OpenAI utilisés, etc.
AutoBrowse utilise des agents autogen et une console de navigateur pour planifier et exécuter la tâche.
La conception se compose de 3 agents :
Un assistant HTML qui répond aux questions sur le HTML de la page actuelle ouverte dans le navigateur.
Un agent générateur de code qui génère du code puppeteer.js pour interagir avec le navigateur (c'est-à-dire naviguer vers une nouvelle page, cliquer sur un bouton, remplir des éléments de formulaire)
Un agent de planification qui coordonne l'utilisation des deux agents ci-dessus pour remplir la description de tâche de haut niveau fournie par l'utilisateur.
Les agents interagissent avec le navigateur via une connexion Websocket à un environnement de navigateur en bac à sable qui possède un point de terminaison pour accepter le code puppeteer.js à exécuter, ainsi qu'un point de terminaison pour renvoyer le code HTML rendu de la page actuellement ouverte.
Étant donné que les documents HTML peuvent être assez longs et dépasser la limite de jetons d'OpenAI, l'approche suivante est adoptée pour répondre aux requêtes concernant le HTML :
Le code HTML renvoyé par l'environnement du navigateur est épuré et simplifié pour réduire sa taille. Ceci est fait en ne conservant que les attributs les plus importants tels que id, name, type et class . De plus, les balises script
, style
, noscript
, img
, svg
, link
, meta
sont complètement supprimées.
Le code HTML traité est divisé en 15 000 jetons (selon OpenAI) afin qu'ils puissent facilement s'insérer dans la fenêtre contextuelle de 16 Ko de gpt-3.5-turbo-16k
.
En utilisant RAG avec les intégrations OpenAI, le morceau le plus pertinent est fourni comme contexte à la question, et gpt-3.5-turbo
peut ensuite répondre à la question sur le HTML.
Le générateur de code utilise gpt-4
pour générer du code puppeteer.js afin d'interagir avec le navigateur. Un agent proxy utilisateur attaché au générateur de code envoie ce code à l'environnement du navigateur pour être exécuté et renvoie le résultat, afin que le générateur de code puisse modifier le code en cas d'erreurs. Parce que la génération de code doit être aussi précise que possible, le modèle gpt-4
plus cher, est utilisé au profit du gpt-3.5-turbo
, moins cher.
Le planificateur reçoit la description de la tâche de l'utilisateur et essaie de la compléter en appelant l'assistant HTML et le générateur de code si nécessaire. Le planificateur, en plus de sa propre réflexion, a la capacité d’invoquer deux fonctions :
ask_html_assistant()
pour poser à l'assistant HTML une question sur le HTML actuel (par exemple extraire le HTML pour le formulaire d'inscription), et
ask_code_generator()
pour demander au générateur de code de produire du code puppeteer.js à envoyer au navigateur. Le planificateur peut également ajouter du code HTML récupéré à partir de l'assistant HTML pour fournir plus de contexte au générateur de code.