AutoBrowse ist ein autonomer KI-Agent, der im Internet surfen kann. Sie geben AutoBrowse einfach eine Aufgabe und es erledigt diese, indem es mit dem Webbrowser interagiert, als wäre es ein Mensch.
Einige Beispiele für Aufgaben, die Sie ihm geben können:
Gehen Sie zu booking.com und finden Sie ab dem 2. November ein Hotel für 2 Personen in Madrid für 2 Nächte für weniger als 200 EUR pro Nacht.
Melden Sie sich bei ryanair.com mit der E-Mail-Adresse [email protected] und dem Passwort C0mplexPassword! an.
Gehen Sie zu Craigslist und suchen Sie nach Nintendo DS. Klicken Sie auf das erste Ergebnis.
https://drive.google.com/file/d/1Ind9z3mjHKTS-Q0vJl2FaHcPLrZtdEX0/view
Erstellen Sie eine Python 3.9-Umgebung
conda create --name py39 python=3.9
Aktivieren Sie die Umgebung
conda activate py39
Abhängigkeiten installieren
pip install -r requirements.txt
Starten Sie die Browserumgebung
Anweisungen zur Ausführung finden Sie in der README-Datei unter browser-console/
.
Erstellen Sie eine Datei OAI_CONFIG_LIST
mit folgendem Inhalt und geben Sie Ihren OpenAI-API-Schlüssel ein:
[
{
"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> "
}
]
Führen Sie AutoBrowse aus
python autobrowse.py
Anschließend werden Sie aufgefordert, AutoBrowse eine Aufgabe zu erteilen.
Sie können Änderungen an der Agentenkonfiguration vornehmen, indem Sie die Datei agent_config.py
ändern. Sie können die Systemeingabeaufforderungen bearbeiten, die verwendeten OpenAI-Modelle ändern usw.
AutoBrowse verwendet Autogen-Agenten und eine Browserkonsole, um die Aufgabe zu planen und auszuführen.
Das Design besteht aus 3 Agenten:
Ein HTML-Assistent, der Fragen zum HTML der aktuell im Browser geöffneten Seite beantwortet.
Ein Codegenerator-Agent, der puppeteer.js-Code generiert, um mit dem Browser zu interagieren (z. B. zu einer neuen Seite navigieren, auf eine Schaltfläche klicken, Formularelemente ausfüllen)
Ein Planer-Agent, der die Verwendung der beiden oben genannten Agenten koordiniert, um die vom Benutzer bereitgestellte übergeordnete Aufgabenbeschreibung zu erfüllen.
Die Agenten interagieren mit dem Browser über eine Websocket-Verbindung zu einer Sandbox-Browserumgebung, die über einen Endpunkt verfügt, der den auszuführenden Puppeteer.js-Code akzeptiert, sowie über einen Endpunkt, der den gerenderten HTML-Code der aktuell geöffneten Seite zurückgibt.
Da HTML-Dokumente recht lang sein können und das Token-Limit von OpenAI überschreiten können, wird für die Beantwortung von Anfragen zum HTML folgender Ansatz gewählt:
Der von der Browserumgebung zurückgegebene HTML-Code wird reduziert und vereinfacht, um seine Größe zu reduzieren. Dies geschieht, indem nur die wichtigsten Attribute wie ID, Name, Typ und Klasse beibehalten werden. Darüber hinaus werden die Tags script
“, style
, noscript
, img
, svg
, link
“ und meta
vollständig entfernt.
Der verarbeitete HTML-Code wird in 15.000 Token aufgeteilt (von OpenAI gezählt), sodass diese problemlos in das 16K-Kontextfenster von gpt-3.5-turbo-16k
passen.
Bei Verwendung von RAG mit OpenAI-Einbettungen wird der relevanteste Teil als Kontext für die Frage bereitgestellt, und gpt-3.5-turbo
kann dann die Frage zum HTML beantworten.
Der Codegenerator verwendet gpt-4
um puppeteer.js-Code für die Interaktion mit dem Browser zu generieren. Ein an den Codegenerator angeschlossener Benutzer-Proxy-Agent sendet diesen Code zur Ausführung an die Browserumgebung und meldet das Ergebnis zurück, sodass der Codegenerator den Code bei Fehlern anpassen kann. Da die Codegenerierung so genau wie möglich sein muss, wird das teurere gpt-4
Modell zugunsten des günstigeren gpt-3.5-turbo
verwendet.
Der Planer erhält die Aufgabenbeschreibung vom Benutzer und versucht, diese abzuschließen, indem er bei Bedarf den HTML-Assistenten und den Codegenerator aufruft. Der Planer hat zusätzlich zu seinem eigenen Denken die Möglichkeit, zwei Funktionen aufzurufen:
ask_html_assistant()
um dem HTML-Assistenten eine Frage zum aktuellen HTML zu stellen (z. B. den HTML-Code für das Anmeldeformular extrahieren) und
ask_code_generator()
um den Codegenerator aufzufordern, puppeteer.js-Code zu erstellen, der an den Browser gesendet wird. Der Planer kann auch vom HTML-Assistenten abgerufenes HTML hinzufügen, um dem Codegenerator mehr Kontext bereitzustellen.