Auto-GPT-это инструмент AI с открытым исходным кодом, который использует API GPT-4 или GPT-3.5 от OpenaI для достижения определенных пользователей целей, выраженных на естественном языке. Это делает это путем рассечения основной задачи на более мелкие компоненты и автономно использовать различные ресурсы в циклическом процессе.
В этом руководстве мы рассмотрим различные функции AutoGPT и рассмотрим лучшие практики и советы по использованию AutoGPT для кодирования.
git clone https://github.com/significant-gravitas/auto-gpt.git на вашем терминале или нажав кнопку «Код» на странице репозитория и загрузив zip-файл.autogpt --version . Вы должны увидеть номер версии, отображаемый в терминале.Вы также можете использовать виртуальную среду для содержания установки AutoGPT, а также для того, чтобы вы не сталкивались с какими -либо ошибками при установке зависимостей или запуска AutoGPT.
Обязательно обновите '.env' с вашими собственными конфигурациями и собственными ключами API. Файл содержит каждый API, который вам может понадобиться. Вы можете отложить некоторые, если не используете их, например, для генерации изображений, однако убедитесь, что у вас есть:
OpenAI API -ключ - этот ключ необходим для использования API OpenAI, который AutoGPT строится сверху. Вы можете получить ключ API, зарегистрировавшись в программе OpenAI API:
Github_api_key - этот ключ должен разрешить ваш доступ к API GitHub. Вы можете получить этот ключ, выполнив шаги на веб -сайте GitHub.
Ваш github_username
Вы можете добавить все API здесь. «.ENV» является самообъяснением, когда вы получите эти ключи, вам необходимо отредактировать файл .env в репозиторий и добавить клавиши API, перечисленные выше.
Также обратите внимание на ниже:
Вам необходимо отредактировать файл .env в репозитории и добавить клавиши API, перечисленные выше. Это связано с тем, что клавиши API являются конфиденциальной информацией, которую не следует жестко кодировать в приложение.
Вам также необходимо добавить свои собственные подсказки в файл prompts.json , чтобы сделать Autogpt более полезным для вашего конкретного варианта использования. Подсказки, представленные в репозитории, являются общими подсказками, которые могут быть не применимы к вашему проекту. Добавляя свои собственные подсказки, вы можете обучить AutoGPT для создания ответов, которые адаптированы к вашему конкретному варианту использования.
Чтобы попросить Autogpt, используйте командный python -m autogpt в вашем терминале. Убедитесь, что вы находитесь на правильном пути. Если нет, установите на «CD Path»
Для достижения наилучших результатов убедитесь, что ваши подсказки являются конкретными и четко определенными. Это даст AutoGPT четкое понимание того, чего вы пытаетесь достичь, и поможет ему генерировать более точные ответы.
При рассмотрении ответов модели имейте в виду, что Autogpt - это языковая модель, а не человек. Таким образом, он может генерировать ответы, которые не являются полностью точными или подходящими для вашего варианта использования. Вы должны пересмотреть ответы и внести какие -либо необходимые модификации.
Другой способ использования AutoGPT - это интегрировать его в ваш код. Вы можете взглянуть на команды в клонированной папке и использовать ее для программного генерации ответов. Это может быть полезно, если вы хотите генерировать ответы в определенном контексте.
Вот некоторые из лучших способов использования Autogpt для быстрого инженера:
Декоратор @command используется для определения пользовательских команд. Требуется три аргумента:
name : Имя команды.description : Краткое описание команды.params : строка, представляющая ожидаемые параметры для команды. Вот пример использования декоратора @command для определения пользовательской команды под названием execute_python_file :
@ command ( "execute_python_file" , "Execute Python File" , '"filename": "<filename>"' )
def execute_python_file ( filename : str ) -> str :
# Implementation of the command Чтобы выполнить команды оболочки, вы можете использовать subprocess модуль. Вот два метода запуска команд оболочки:
subprocess.run() :Этот метод запускает команду и ожидает его завершения. Он возвращает выход (stdout и stderr) команды.
result = subprocess . run ( command_line , capture_output = True , shell = True )
output = f"STDOUT: n { result . stdout } n STDERR: n { result . stderr } " subprocess.Popen() :Этот метод запускает команду как отдельный процесс и немедленно возвращается. Это может быть полезно для запуска неблокирующих команд.
process = subprocess . Popen (
command_line , shell = True , stdout = subprocess . DEVNULL , stderr = subprocess . DEVNULL
)
return f"Subprocess started with PID:' { str ( process . pid ) } '" Чтобы создать пользовательскую команду, которая выполняет команды Shell, вы можете использовать декоратор @command вместе с методами subprocess :
@ command ( "execute_shell" , "Execute Shell Command" , '"command_line": "<command_line>"' )
def execute_shell ( command_line : str ) -> str :
result = subprocess . run ( command_line , capture_output = True , shell = True )
output = f"STDOUT: n { result . stdout } n STDERR: n { result . stderr } "
return output Модуль analyze_code предназначен для анализа данного фрагмента кода и предоставления предложений для улучшений. Он использует декоратор @command для определения пользовательской команды под названием analyze_code . Функция принимает строку, содержащую анализ кода, и возвращает список предложений.
Вот упрощенное объяснение кода:
analyze_code с помощью декоратора @command : @ command ( "analyze_code" , "Analyze Code" , '"code": "<full_code_string>"' )
def analyze_code ( code : str ) -> list [ str ]: function_string = "def analyze_code(code: str) -> list[str]:"
args = [ code ]
description_string = (
"Analyzes the given code and returns a list of suggestions for improvements."
) return call_ai_function ( function_string , args , description_string ) Функция improve_code предназначена для улучшения данного фрагмента кода на основе списка предоставленных предложений. Он использует декоратор @command для определения пользовательской команды под названием improve_code . Функция принимает список предложений и строку, содержащую улучшение кода, и возвращает новую строку кода с применяемыми предложенными улучшениями.
Вот упрощенное объяснение кода:
improve_code с помощью Decorator @command : @ command ( "improve_code" , "Get Improved Code" , '"suggestions": "<list_of_suggestions>", "code": "<full_code_string>"' )
def improve_code ( suggestions : list [ str ], code : str ) -> str : function_string = "def generate_improved_code(suggestions: list[str], code: str) -> str:"
args = [ json . dumps ( suggestions ), code ]
description_string = (
"Improves the provided code based on the suggestions"
" provided, making no other changes."
) return call_ai_function ( function_string , args , description_string ) Чтобы использовать функцию improve_code , передайте список предложений и строку, содержащую фрагмент кода, который вы хотите улучшить:
suggestions = [
"Replace the print statement with a return statement." ,
"Add type hints to the function."
]
code_to_improve = '''
def some_function():
print("Hello, World!")
'''
improved_code = improve_code ( suggestions , code_to_improve )
print ( improved_code ) Функция improve_code затем вызовет функцию ИИ, которая, в свою очередь, использует API OpenAI, чтобы применить предлагаемые улучшения к коду и генерировать новую, улучшенную версию кода. Обратите внимание, что качество улучшений зависит от понимания языковой модели предложений и ее способности правильно их применять.
prompt = "Generate documentation for the function 'Function name'"
generator = response = openai.Completion.create(
engine=engine,
prompt=prompt,
max_tokens=150,
n=1,
stop=None,
temperature=1.2,
presence_penalty=0.5,
frequency_penalty=0.5,
)
Используйте функцию improve_code для отладки, вы можете выполнить шаги ниже:
Определите проблемы или ошибки в вашем коде. Вы можете сделать это вручную, или вы можете использовать такие инструменты, как Linters, статические анализаторы или отладчики, чтобы помочь определить проблемы.
Создайте список предложений, основанных на выявленных вопросах. Каждое предложение должно описать, как исправить конкретную проблему или ошибку в коде.
Вызовите функцию improve_code , передавая список предложений и фрагмент кода с проблемами в качестве аргументов:
suggestions = [
"Fix the IndexError by using a conditional statement." ,
"Handle the ZeroDivisionError exception."
]
buggy_code = '''
def buggy_function(a, b):
result = a / b
return result
def another_buggy_function(lst):
return lst[0]
'''
improved_code = improve_code ( suggestions , buggy_code )
print ( improved_code )improve_code . Убедитесь, что улучшения, сгенерированные AI, соответствуют вашим предложениям и правильно исправляют выявленные проблемы. Убедитесь, что улучшенный код работает, как и ожидалось. - Choose the search function: `google_search` for DuckDuckGo or `google_official_search` for the official Google API.
- Call the chosen function with your search query:
```python
query = "example search query"
num_results = 5
# Perform the search using DuckDuckGo
search_results = google_search(query, num_results)
print(search_results)
# Or, perform the search using the official Google API
# search_results = google_official_search(query, num_results)
# print(search_results)
Функция возвращает список URL -адресов результатов поиска, которые соответствуют данному запросу. Убедитесь, что у вас сохранен Google API в secrets.json
Позвоните в функцию browse_website с помощью URL -адреса веб -сайта, который вы хотите поцарапать, и вопрос, связанный с контентом, который вы ищете:
url = "https://example.com"
question = "What is the main purpose of the website?"
answer_and_links = browse_website ( url , question )
print ( answer_and_links ) Функция browse_website использует scrape_text_with_selenium , чтобы соскрести текстовое содержание веб -сайта и scrape_links_with_selenium для извлечения ссылок.
list_files с помощью каталога, который вы хотите найти: directory = "path/to/directory"
all_files = list_files ( directory ) search_criteria = "example"
matching_files = [ file for file in all_files if search_criteria in file ]
print ( matching_files ) В этом примере matching_files будет содержать список всех файлов в указанном каталоге (и его подкаталогах), которые имеют строку search_criteria в своих именах. Измените условие фильтрации по мере необходимости, чтобы соответствовать вашим конкретным требованиям поиска.
Autogpt имеет функцию clone_repository , которая позволяет вам клонировать репозиторий GIT от данного URL в локальный каталог на вашей машине. Чтобы попросить его для ввода и клонировать репозиторий GIT, используя функцию clone_repository , выполните следующие действия:
repo_url = "repository URL"
clone_path = "the path to clone the repository"clone_repository с предоставленным URL и пути: result = clone_repository ( repo_url , clone_path ) Этот код вызывает функцию clone_repository , которая клонирует репозиторий, используя предоставленные учетные данные по аутентификации GitHub из объекта Config .
Используйте AutoGPT для автоматического генерации описательных комментариев для вашего кода. Это может помочь сделать ваш код более читаемым и проще для понимания, особенно для членов команды, которые могут не быть знакомы с кодовой базой.
Используйте AutoGPT для генерации кода шаблона для вашего проекта. Например, вы можете использовать AutoGPT для генерации кода для настройки журнала, создания файлов конфигурации или инициализации базы данных.
Используйте AutoGPT для создания тестовых примеров для вашего кода. Это может помочь гарантировать, что ваш код работает, как и ожидалось, и что любые изменения, которые вы вносите в код, не вводят новые ошибки.
Используйте AutoGPT для создания документации для вашего проекта. AutoGPT может автоматически генерировать документацию по API, руководства пользователя и другие типы документации, сохраняя ваше время и усилия.
Autogpt - это мощный инструмент, который может помочь вам в кодировании и быстрого разработки. Он может генерировать фрагменты кода, проверить синтаксис кода, улучшать код, генерировать тестовые примеры, генерировать документацию и выполнять файлы Python. Используя AutoGPT, вы можете сэкономить время и повысить производительность.