L♾️pGPT
Ein modulares Auto-GPT-Framework
L♾️pGPT ist eine Neuimplementierung des beliebten Auto-GPT-Projekts als richtiges Python-Paket, geschrieben mit Blick auf Modularität und Erweiterbarkeit.
? Dadurch wird die neueste stabile Version von L♾️pGPT installiert. Dies wird den meisten Benutzern empfohlen:
pip install loopgpt
Mit den beiden folgenden Methoden wird die neueste Entwicklungsversion von L♾️pGPT installiert. Beachten Sie, dass diese Version möglicherweise instabil ist:
pip install git+https://www.github.com/farizrahman4u/loopgpt.git@main
git clone https://www.github.com/farizrahman4u/loopgpt.git
cd loopgpt
pip install -e .
git clone https://www.github.com/farizrahman4u/loopgpt.git
cd loopgpt
docker build -t loopgpt:local-dev .
.env
Datei Erstellen Sie eine .env
Datei in Ihrem aktuellen Arbeitsverzeichnis (wo immer Sie L♾️pGPT ausführen möchten) und fügen Sie die folgende Zeile hinzu:
OPENAI_API_KEY= " <your-openai-api-key> "
? WICHTIG ?
Windows-Benutzer stellen bitte sicher, dass „Dateierweiterungen anzeigen“ in Ihrem Datei-Explorer aktiviert ist. Andernfalls wird Ihre Datei .env.txt
anstelle von .env
benannt.
Legen Sie eine Umgebungsvariable namens OPENAI_API_KEY
auf Ihren OpenAI-API-Schlüssel fest.
So legen Sie Umgebungsvariablen fest:
Lassen Sie uns einen Agenten in einem neuen Python-Skript erstellen.
from loopgpt . agent import Agent
agent = Agent ()
L♾️pGPT verwendet standardmäßig gpt-3.5-turbo
und alle hier gezeigten Ausgaben werden damit erstellt. GPT-4-Benutzer können stattdessen model="gpt-4"
festlegen:
agent = Agent ( model = "gpt-4" )
agent . name = "ResearchGPT"
agent . description = "an AI assistant that researches and finds the best tech products"
agent . goals = [
"Search for the best headphones on Google" ,
"Analyze specs, prices and reviews to find the top 5 best headphones" ,
"Write the list of the top 5 best headphones and their prices to a file" ,
"Summarize the pros and cons of each headphone and write it to a different file called 'summary.txt'" ,
]
Und los geht’s! Lassen Sie uns die CLI des Agenten ausführen:
agent . cli ()
Speichern Sie Ihre Python-Datei unter dem Namen research_gpt.py
und führen Sie sie aus:
python research_gpt.py
Sie können die CLI verlassen, indem Sie „exit“ eingeben.
Wenn continuous
auf True
gesetzt ist, fragt der Agent den Benutzer nicht nach der Erlaubnis, Befehle auszuführen. Es kann zu Endlosschleifen kommen, daher erfolgt die Nutzung auf eigene Gefahr!
agent . cli ( continuous = True )
Sie können L♾️pGPT direkt über die Befehlszeile ausführen, ohne auch Python-Code schreiben zu müssen:
loopgpt run
Führen Sie loopgpt --help
aus, um alle verfügbaren Optionen anzuzeigen.
Sie können L♾️pGPT in den zuvor genannten Modi mit Docker ausführen:
# CLI mode
docker run -i --rm loopgpt:local-dev loopgpt run
# Script mode example
docker run -i --rm -v " $( pwd ) /scripts:/scripts " loopgpt:local-dev python /scripts/myscript.py
L♾️pGPT-Agenten verfügen über eine Reihe integrierter Tools, mit denen sie verschiedene grundlegende Aufgaben wie das Durchsuchen des Webs, Dateisystemoperationen usw. ausführen können. Sie können diese Tools mit print(agent.tools)
anzeigen.
Zusätzlich zu diesen integrierten Tools können Sie auch Ihre eigenen Tools zur Toolbox des Agenten hinzufügen.
Lassen Sie uns WeatherGPT erstellen, einen KI-Assistenten für alles, was mit dem Wetter zu tun hat.
Ein Tool erbt von BaseTool
und Sie müssen nur einen Dokumentstring schreiben, um Ihr Tool zum Laufen zu bringen!
from loopgpt . tools import BaseTool
class GetWeather ( BaseTool ):
"""Quickly get the weather for a given city
Args:
city (str): name of the city
Returns:
dict: The weather report for the city
"""
def run ( self , city ):
...
L♾️pGPT gibt Ihrem Tool eine Standard-ID, Sie können diese jedoch bei Bedarf überschreiben:
class GetWeather ( BaseTool ):
"""Quickly get the weather for a given city
Args:
city (str): name of the city
Returns:
dict: The weather report for the city
"""
@ property
def id ( self ):
return "get_weather_command"
Definieren wir nun, was unser Tool in seiner run
tun wird:
import requests
# Define your custom tool
class GetWeather ( BaseTool ):
"""Quickly get the weather for a given city
Args:
city (str): name of the city
Returns:
dict: The weather report for the city
"""
def run ( self , city ):
try :
url = "https://wttr.in/{}?format=%l+%C+%h+%t+%w+%p+%P" . format ( city )
data = requests . get ( url ). text . split ( " " )
keys = ( "location" , "condition" , "humidity" , "temperature" , "wind" , "precipitation" , "pressure" )
data = dict ( zip ( keys , data ))
return data
except Exception as e :
return f"An error occurred while getting the weather: { e } ."
Das ist es! Sie haben Ihr erstes benutzerdefiniertes Tool erstellt. Registrieren wir es bei einem neuen Agenten und führen es aus:
from loopgpt . tools import WriteToFile
import loopgpt
# Register custom tool type
# This is actually not required here, but is required when you load a saved agent with custom tools.
loopgpt . tools . register_tool_type ( GetWeather )
# Create Agent
agent = loopgpt . Agent ( tools = [ GetWeather , WriteToFile ])
agent . name = "WeatherGPT"
agent . description = "an AI assistant that tells you the weather"
agent . goals = [
"Get the weather for NewYork and Beijing" ,
"Give the user tips on how to dress for the weather in NewYork and Beijing" ,
"Write the tips to a file called 'dressing_tips.txt'"
]
# Run the agent's CLI
agent . cli ()
Werfen wir einen Blick auf die Datei dressing_tips.txt
die WeatherGPT für uns geschrieben hat:
Dressing_tips.txt
- It's Clear outside with a temperature of +10°C in Beijing. Wearing a light jacket and pants is recommended.
- It's Overcast outside with a temperature of +11°C in New York. Wearing a light jacket, pants, and an umbrella is recommended.
Im Gegensatz zu Auto-GPT wird der Agent nicht beendet, wenn der Benutzer die Ausführung eines Befehls verweigert. Stattdessen bittet es den Benutzer um Feedback, um seinen Kurs zu korrigieren.
Um den Kurs des Agenten zu korrigieren, verweigern Sie einfach die Ausführung und geben Sie Feedback:
Der Agent hat seine Vorgehensweise aktualisiert:
Sie können den Status eines Agenten wie folgt in einer JSON-Datei speichern:
agent . save ( "ResearchGPT.json" )
Dadurch werden die Konfiguration des Agenten (Modell, Name, Beschreibung usw.) sowie sein interner Status (Konversationsstatus, Speicher, Tool-Status usw.) gespeichert. Sie können auch nur die Konfiguration speichern, indem Sie include_state=False
an agent.save()
übergeben:
agent . save ( "ResearchGPT.json" , include_state = False )
Dann machen Sie dort weiter, wo Sie aufgehört haben:
import loopgpt
agent = loopgpt . Agent . load ( "ResearchGPT.json" )
agent . cli ()
oder indem Sie den gespeicherten Agenten über die Befehlszeile ausführen:
loopgpt run ResearchGPT.json
Sie können den Agentenstatus in ein JSON-kompatibles Python-Wörterbuch konvertieren, anstatt ihn in eine Datei zu schreiben:
agent_config = agent . config ()
Um nur die Konfiguration ohne den internen Status zu erhalten:
agent_config = agent . config ( include_state = False )
Um den Agenten aus der Konfiguration neu zu laden, verwenden Sie:
import loopgpt
agent = loopgpt . Agent . from_config ( agent_config )
Für die offizielle Google-Suchunterstützung müssen Sie zwei Umgebungsvariablenschlüssel GOOGLE_API_KEY
und CUSTOM_SEARCH_ENGINE_ID
einrichten. So erhalten Sie sie:
CUSTOM_SEARCH_ENGINE_ID
verwendet.GOOGLE_API_KEY
zu füllen.Falls diese fehlen, greift L♾️pGPT auf die Verwendung der DuckDuckGo-Suche zurück.
Wir brauchen VIEL Hilfe! Bitte öffnen Sie eine Ausgabe oder eine PR, wenn Sie einen Beitrag leisten möchten.
Brauchen Sie Hilfe? Treten Sie unserem Discord bei.