L♾️pGPT
Uma estrutura modular Auto-GPT
L♾️pGPT é uma reimplementação do popular projeto Auto-GPT como um pacote python adequado, escrito com modularidade e extensibilidade em mente.
? Isso instala a versão estável mais recente do L♾️pGPT. Isso é recomendado para a maioria dos usuários:
pip install loopgpt
Os dois métodos abaixo instalam a versão de desenvolvimento mais recente do L♾️pGPT. Observe que esta versão pode ser instável:
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
Crie um arquivo .env
em seu diretório de trabalho atual (de onde você irá executar L♾️pGPT) e adicione a seguinte linha a ele:
OPENAI_API_KEY= " <your-openai-api-key> "
? IMPORTANTE ?
Usuários do Windows, certifique-se de que "mostrar extensões de arquivo" esteja ativado em seu explorador de arquivos. Caso contrário, seu arquivo será nomeado .env.txt
em vez de .env
.
Defina uma variável de ambiente chamada OPENAI_API_KEY
para sua chave de API OpenAI.
Como definir variáveis de ambiente:
Vamos criar um agente em um novo script Python.
from loopgpt . agent import Agent
agent = Agent ()
L♾️pGPT usa gpt-3.5-turbo
por padrão e todas as saídas mostradas aqui são feitas usando-o. Os usuários do GPT-4 podem definir model="gpt-4"
:
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'" ,
]
E partimos! Vamos executar a CLI do Agente:
agent . cli ()
Salve seu arquivo Python como research_gpt.py
e execute-o:
python research_gpt.py
Você pode sair da CLI digitando "exit".
Se continuous
estiver definido como True
, o agente não solicitará permissão do usuário para executar comandos. Ele pode entrar em loops infinitos, então use-o por sua conta e risco!
agent . cli ( continuous = True )
Você pode executar L♾️pGPT diretamente da linha de comando sem precisar escrever nenhum código python:
loopgpt run
Execute loopgpt --help
para ver todas as opções disponíveis.
Você pode executar L♾️pGPT nos 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
Os agentes L♾️pGPT vêm com um conjunto de ferramentas integradas que lhes permite executar várias tarefas básicas, como pesquisa na web, operações no sistema de arquivos, etc. Você pode visualizar essas ferramentas com print(agent.tools)
.
Além dessas ferramentas integradas, você também pode adicionar suas próprias ferramentas à caixa de ferramentas do agente.
Vamos criar o WeatherGPT, um assistente de IA para todas as questões climáticas.
Uma ferramenta herda do BaseTool
e você só precisa escrever uma docstring para colocar sua ferramenta em funcionamento!
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 fornece um ID padrão para sua ferramenta, mas você pode substituí-los se desejar:
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"
Agora vamos definir o que nossa ferramenta fará em seu 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 } ."
É isso! Você construiu sua primeira ferramenta personalizada. Vamos registrá-lo com um novo agente e executá-lo:
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 ()
Vamos dar uma olhada no dressing_tips.txt
que WeatherGPT escreveu para nós:
dicas de vestir.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.
Ao contrário do Auto-GPT, o agente não termina quando o usuário nega a execução de um comando. Em vez disso, ele pede feedback ao usuário para corrigir seu curso.
Para corrigir o rumo do agente, basta negar a execução e fornecer feedback:
O agente atualizou seu curso de ação:
Você pode salvar o estado de um agente em um arquivo JSON com:
agent . save ( "ResearchGPT.json" )
Isso salva a configuração do agente (modelo, nome, descrição etc.), bem como seu estado interno (estado de conversação, memória, estados de ferramentas etc.). Você também pode salvar apenas a configuração passando include_state=False
para agent.save()
:
agent . save ( "ResearchGPT.json" , include_state = False )
Em seguida, continue de onde parou com:
import loopgpt
agent = loopgpt . Agent . load ( "ResearchGPT.json" )
agent . cli ()
ou executando o agente salvo na linha de comando:
loopgpt run ResearchGPT.json
Você pode converter o estado do agente em um dicionário python compatível com json em vez de gravar em um arquivo:
agent_config = agent . config ()
Para obter apenas a configuração sem o estado interno:
agent_config = agent . config ( include_state = False )
Para recarregar o agente da configuração, use:
import loopgpt
agent = loopgpt . Agent . from_config ( agent_config )
Para obter suporte oficial à pesquisa do Google, você precisará configurar duas chaves de variáveis de ambiente GOOGLE_API_KEY
e CUSTOM_SEARCH_ENGINE_ID
, veja como obtê-las:
CUSTOM_SEARCH_ENGINE_ID
.GOOGLE_API_KEY
.Caso estes estejam ausentes, L♾️pGPT voltará a usar o DuckDuckGo Search.
Precisamos de MUITA ajuda! Abra um problema ou um PR se quiser contribuir.
Precisar de ajuda? Junte-se ao nosso Discord.