L♾️pGPT
Модульная платформа Auto-GPT
L♾️pGPT — это повторная реализация популярного проекта Auto-GPT в виде полноценного пакета Python, написанного с учетом модульности и расширяемости.
? Будет установлена последняя стабильная версия L♾️pGPT. Большинству пользователей рекомендуется:
pip install loopgpt
Два приведенных ниже метода устанавливают последнюю разработанную версию L♾️pGPT. Обратите внимание, что эта версия может быть нестабильной:
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
Создайте файл .env
в текущем рабочем каталоге (откуда вы собираетесь запускать L♾️pGPT) и добавьте в него следующую строку:
OPENAI_API_KEY= " <your-openai-api-key> "
? ВАЖНЫЙ ?
Пользователи Windows, убедитесь, что в вашем проводнике включена функция «показывать расширения файлов». В противном случае ваш файл будет называться .env.txt
вместо .env
.
Установите переменную среды OPENAI_API_KEY
для вашего ключа OpenAI API.
Как установить переменные среды:
Давайте создадим агента в новом скрипте Python.
from loopgpt . agent import Agent
agent = Agent ()
L♾️pGPT по умолчанию использует gpt-3.5-turbo
, и все показанные здесь выходные данные сделаны с его использованием. Пользователи GPT-4 могут вместо этого установить 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'" ,
]
И мы поехали! Давайте запустим CLI агента:
agent . cli ()
Сохраните файл Python как research_gpt.py
и запустите его:
python research_gpt.py
Вы можете выйти из CLI, набрав «exit».
Если для continuous
установлено значение True
, агент не будет запрашивать разрешение пользователя на выполнение команд. Он может зацикливаться на бесконечных циклах, поэтому используйте его на свой страх и риск!
agent . cli ( continuous = True )
Вы можете запустить L♾️pGPT непосредственно из командной строки без необходимости писать код Python:
loopgpt run
Запустите loopgpt --help
чтобы просмотреть все доступные параметры.
Вы можете запустить L♾️pGPT в ранее упомянутых режимах, используя 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
Агенты L♾️pGPT поставляются с набором встроенных инструментов, которые позволяют им выполнять различные основные задачи, такие как поиск в Интернете, операции с файловой системой и т. д. Вы можете просмотреть эти инструменты с помощью print(agent.tools)
.
В дополнение к этим встроенным инструментам вы также можете добавить свои собственные инструменты в набор инструментов агента.
Давайте создадим WeatherGPT, помощника искусственного интеллекта для всего, что связано с погодой.
Инструмент наследуется от BaseTool
, и вам нужно всего лишь написать строку документации, чтобы запустить ваш инструмент!
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 присваивает вашему инструменту идентификатор по умолчанию, но вы можете переопределить его, если хотите:
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"
Теперь давайте определим, что будет делать наш инструмент в методе 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 } ."
Вот и все! Вы создали свой первый специальный инструмент. Давайте зарегистрируем его с новым агентом и запустим:
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 ()
Давайте взглянем на файл dressing_tips.txt
, который написал для нас WeatherGPT:
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.
В отличие от Auto-GPT, агент не завершает работу, когда пользователь отказывается от выполнения команды. Вместо этого он запрашивает у пользователя обратную связь, чтобы исправить его курс.
Чтобы исправить курс агента, достаточно запретить выполнение и предоставить обратную связь:
Агент обновил свой план действий:
Вы можете сохранить состояние агента в файл json с помощью:
agent . save ( "ResearchGPT.json" )
При этом сохраняется конфигурация агента (модель, имя, описание и т. д.), а также его внутреннее состояние (состояние разговора, память, состояния инструментов и т. д.). Вы также можете сохранить только конфигурацию, передав include_state=False
в agent.save()
:
agent . save ( "ResearchGPT.json" , include_state = False )
Затем продолжите с того места, где остановились:
import loopgpt
agent = loopgpt . Agent . load ( "ResearchGPT.json" )
agent . cli ()
или запустив сохраненный агент из командной строки:
loopgpt run ResearchGPT.json
Вы можете преобразовать состояние агента в словарь Python, совместимый с json, вместо записи в файл:
agent_config = agent . config ()
Чтобы получить только конфигурацию без внутреннего состояния:
agent_config = agent . config ( include_state = False )
Чтобы перезагрузить агент из конфига, используйте:
import loopgpt
agent = loopgpt . Agent . from_config ( agent_config )
Для официальной поддержки поиска Google вам потребуется настроить два ключа переменных среды GOOGLE_API_KEY
и CUSTOM_SEARCH_ENGINE_ID
. Вот как их получить:
CUSTOM_SEARCH_ENGINE_ID
.GOOGLE_API_KEY
.В случае их отсутствия L♾️pGPT вернется к использованию поиска DuckDuckGo.
Нам нужна ОЧЕНЬ помощь! Пожалуйста, откройте вопрос или PR, если вы хотите внести свой вклад.
Нужна помощь? Присоединяйтесь к нашему Discord.