L♾️pGPT
Un marco modular Auto-GPT
L♾️pGPT es una reimplementación del popular proyecto Auto-GPT como un paquete Python adecuado, escrito teniendo en cuenta la modularidad y la extensibilidad.
? Esto instala la última versión estable de L♾️pGPT. Esto se recomienda para la mayoría de los usuarios:
pip install loopgpt
Los dos métodos siguientes instalan la última versión de desarrollo de L♾️pGPT. Tenga en cuenta que esta versión puede ser inestable:
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
Cree un archivo .env
en su directorio de trabajo actual (desde donde vaya a ejecutar L♾️pGPT) y agréguele la siguiente línea:
OPENAI_API_KEY= " <your-openai-api-key> "
? IMPORTANTE ?
Usuarios de Windows, asegúrese de que "mostrar extensiones de archivo" esté habilitado en su explorador de archivos. De lo contrario, su archivo se llamará .env.txt
en lugar de .env
.
Establezca una variable de entorno llamada OPENAI_API_KEY
en su clave API de OpenAI.
Cómo configurar variables de entorno:
Creemos un agente en un nuevo script de Python.
from loopgpt . agent import Agent
agent = Agent ()
L♾️pGPT usa gpt-3.5-turbo
de forma predeterminada y todas las salidas que se muestran aquí se realizan con él. Los usuarios de GPT-4 pueden configurar model="gpt-4"
en su lugar:
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'" ,
]
¡Y nos vamos! Ejecutemos la CLI del Agente:
agent . cli ()
Guarde su archivo Python como research_gpt.py
y ejecútelo:
python research_gpt.py
Puede salir de la CLI escribiendo "salir".
Si continuous
se establece en True
, el agente no solicitará permiso al usuario para ejecutar comandos. Puede entrar en bucles infinitos, ¡así que úsalo bajo tu propia responsabilidad!
agent . cli ( continuous = True )
Puedes ejecutar L♾️pGPT directamente desde la línea de comando sin tener que escribir ningún código Python también:
loopgpt run
Ejecute loopgpt --help
para ver todas las opciones disponibles.
Puedes ejecutar L♾️pGPT en los modos mencionados anteriormente, usando 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
Los agentes L♾️pGPT vienen con un conjunto de herramientas integradas que les permiten realizar diversas tareas básicas, como búsquedas en la web, operaciones del sistema de archivos, etc. Puede ver estas herramientas con print(agent.tools)
.
Además de estas herramientas integradas, también puede agregar sus propias herramientas a la caja de herramientas del agente.
Creemos WeatherGPT, un asistente de inteligencia artificial para todo lo relacionado con el clima.
¡Una herramienta hereda de BaseTool
y solo necesita escribir una cadena de documentación para que su herramienta esté en funcionamiento!
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 proporciona una ID predeterminada a su herramienta, pero puede anularla si lo desea:
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"
Ahora definamos qué hará nuestra herramienta en su método 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 } ."
¡Eso es todo! Ha creado su primera herramienta personalizada. Registrémoslo con un nuevo agente y ejecútelo:
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 ()
Echemos un vistazo al archivo dressing_tips.txt
que WeatherGPT escribió para nosotros:
consejos_de_vestirse.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.
A diferencia de Auto-GPT, el agente no finaliza cuando el usuario niega la ejecución de un comando. En lugar de eso, solicita comentarios al usuario para corregir su rumbo.
Para corregir el rumbo del agente, simplemente niegue la ejecución y proporcione comentarios:
El agente ha actualizado su curso de acción:
Puede guardar el estado de un agente en un archivo json con:
agent . save ( "ResearchGPT.json" )
Esto guarda la configuración del agente (modelo, nombre, descripción, etc.), así como su estado interno (estado de conversación, memoria, estados de herramientas, etc.). También puedes guardar solo la configuración pasando include_state=False
a agent.save()
:
agent . save ( "ResearchGPT.json" , include_state = False )
Luego continúa donde lo dejaste con:
import loopgpt
agent = loopgpt . Agent . load ( "ResearchGPT.json" )
agent . cli ()
o ejecutando el agente guardado desde la línea de comando:
loopgpt run ResearchGPT.json
Puede convertir el estado del agente a un diccionario de Python compatible con json en lugar de escribir en un archivo:
agent_config = agent . config ()
Para obtener sólo la configuración sin el estado interno:
agent_config = agent . config ( include_state = False )
Para recargar el agente desde la configuración, use:
import loopgpt
agent = loopgpt . Agent . from_config ( agent_config )
Para obtener soporte oficial de búsqueda de Google, deberá configurar dos claves de variable de entorno GOOGLE_API_KEY
y CUSTOM_SEARCH_ENGINE_ID
. Aquí se explica cómo obtenerlas:
CUSTOM_SEARCH_ENGINE_ID
.GOOGLE_API_KEY
.En caso de que no estén presentes, L♾️pGPT volverá a utilizar DuckDuckGo Search.
¡Necesitamos MUCHA ayuda! Abra un problema o un PR si desea contribuir.
¿Necesitar ayuda? Únete a nuestro Discord.