L♾️pGPT
Un cadre modulaire Auto-GPT
L♾️pGPT est une réimplémentation du projet populaire Auto-GPT en tant que package python approprié, écrit dans un souci de modularité et d'extensibilité.
? Cela installe la dernière version stable de L♾️pGPT. Ceci est recommandé pour la plupart des utilisateurs :
pip install loopgpt
Les deux méthodes ci-dessous installent la dernière version de développement de L♾️pGPT. Notez que cette version peut être instable :
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
Créez un fichier .env
dans votre répertoire de travail actuel (où que vous alliez exécuter L♾️pGPT) et ajoutez-y la ligne suivante :
OPENAI_API_KEY= " <your-openai-api-key> "
? IMPORTANT ?
Utilisateurs Windows, veuillez vous assurer que « afficher les extensions de fichiers » est activé dans votre explorateur de fichiers. Sinon, votre fichier sera nommé .env.txt
au lieu de .env
.
Définissez une variable d'environnement appelée OPENAI_API_KEY
sur votre clé API OpenAI.
Comment définir les variables d'environnement :
Créons un agent dans un nouveau script Python.
from loopgpt . agent import Agent
agent = Agent ()
L♾️pGPT utilise gpt-3.5-turbo
par défaut et toutes les sorties présentées ici sont réalisées en l'utilisant. Les utilisateurs de GPT-4 peuvent définir model="gpt-4"
à la place :
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'" ,
]
Et c'est parti ! Exécutons la CLI de l'agent :
agent . cli ()
Enregistrez votre fichier Python sous research_gpt.py
et exécutez-le :
python research_gpt.py
Vous pouvez quitter la CLI en tapant « exit ».
Si continuous
est défini sur True
, l'agent ne demandera pas l'autorisation à l'utilisateur pour exécuter des commandes. Il peut former des boucles infinies, alors utilisez-le à vos risques et périls !
agent . cli ( continuous = True )
Vous pouvez exécuter L♾️pGPT directement à partir de la ligne de commande sans avoir à écrire de code python également :
loopgpt run
Exécutez loopgpt --help
pour voir toutes les options disponibles.
Vous pouvez exécuter L♾️pGPT dans les modes mentionnés précédemment, en utilisant Docker :
# 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
Les agents L♾️pGPT sont livrés avec un ensemble d'outils intégrés qui leur permettent d'effectuer diverses tâches de base telles que la recherche sur le Web, les opérations sur le système de fichiers, etc. Vous pouvez afficher ces outils avec print(agent.tools)
.
En plus de ces outils intégrés, vous pouvez également ajouter vos propres outils à la boîte à outils de l'agent.
Créons WeatherGPT, un assistant IA pour tout ce qui concerne la météo.
Un outil hérite de BaseTool
et il vous suffit d'écrire une docstring pour que votre outil soit opérationnel !
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 donne un identifiant par défaut à votre outil mais vous pouvez le remplacer si vous le souhaitez :
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"
Définissons maintenant ce que fera notre outil dans sa méthode run
:
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 } ."
C'est ça! Vous avez créé votre premier outil personnalisé. Enregistrons-le auprès d'un nouvel agent et exécutons-le :
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 ()
Jetons un coup d'œil au fichier dressing_tips.txt
que WeatherGPT a écrit pour nous :
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.
Contrairement à Auto-GPT, l'agent ne se termine pas lorsque l'utilisateur refuse l'exécution d'une commande. Au lieu de cela, il demande à l'utilisateur des commentaires pour corriger son cap.
Pour corriger le cap de l'agent, refusez simplement l'exécution et fournissez des commentaires :
L'agent a mis à jour son plan d'action :
Vous pouvez enregistrer l'état d'un agent dans un fichier json avec :
agent . save ( "ResearchGPT.json" )
Ceci enregistre la configuration de l'agent (modèle, nom, description etc) ainsi que son état interne (état de conversation, mémoire, états des outils etc). Vous pouvez également enregistrer uniquement la configuration en passant include_state=False
à agent.save()
:
agent . save ( "ResearchGPT.json" , include_state = False )
Ensuite, reprenez là où vous vous êtes arrêté avec :
import loopgpt
agent = loopgpt . Agent . load ( "ResearchGPT.json" )
agent . cli ()
ou en exécutant l'agent enregistré depuis la ligne de commande :
loopgpt run ResearchGPT.json
Vous pouvez convertir l'état de l'agent en un dictionnaire Python compatible Json au lieu d'écrire dans un fichier :
agent_config = agent . config ()
Pour obtenir uniquement la configuration sans l'état interne :
agent_config = agent . config ( include_state = False )
Pour recharger l'agent depuis la configuration, utilisez :
import loopgpt
agent = loopgpt . Agent . from_config ( agent_config )
Pour le support officiel de la recherche Google, vous devrez configurer deux clés de variable d'environnement GOOGLE_API_KEY
et CUSTOM_SEARCH_ENGINE_ID
, voici comment les obtenir :
CUSTOM_SEARCH_ENGINE_ID
.GOOGLE_API_KEY
.En cas d'absence, L♾️pGPT reviendra à l'utilisation de DuckDuckGo Search.
Nous avons besoin de BEAUCOUP d’aide ! Veuillez ouvrir un numéro ou un PR si vous souhaitez contribuer.
Besoin d'aide ? Rejoignez notre Discord.