automata вдохновлены теорией о том, что код — это, по сути, форма памяти, и при наличии правильных инструментов ИИ может развивать возможности реального времени, которые потенциально могут привести к созданию ОИИ. Слово automata происходит от греческого слова αὐτόματος, обозначающего «самодействующий, своевольный, самодвижущийся», а теория automata — это изучение абстрактных машин и automata , а также вычислительных задач, которые можно решить с их помощью. .
Более подробная информация приведена ниже.
Выполните следующие шаги, чтобы настроить среду automata
# Clone the repository
git clone [email protected]:emrgnt-cmplxty/ automata .git && cd automata /
# Initialize git submodules
git submodule update --init
# Install poetry and the project
pip3 install poetry && poetry install
# Configure the environment and setup files
poetry run automata configure
Загрузите образ Docker:
$ docker pull ghcr.io/emrgnt-cmplxty/ automata :latest
Запустите образ Docker:
$ docker run --name automata _container -it --rm -e OPENAI_API_KEY= < your_openai_key > -e GITHUB_API_KEY= < your_github_key > ghcr.io/emrgnt-cmplxty/ automata :latest
Это запустит контейнер Docker с установленными automata и откроет интерактивную оболочку, которую вы сможете использовать.
Пользователям Windows может потребоваться установить поддержку C++ через Visual Studio «Разработка настольных компьютеров с C++» для определенных зависимостей.
Кроме того, может потребоваться обновление до gcc-11 и g++-11. Это можно сделать, выполнив следующие команды:
# Adds the test toolchain repository, which contains newer versions of software
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
# Updates the list of packages on your system
sudo apt update
# Installs gcc-11 and g++-11 packages
sudo apt install gcc-11 g++-11
# Sets gcc-11 and g++-11 as the default gcc and g++ versions for your system
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 60 --slave /usr/bin/g++ g++ /usr/bin/g++-11
Индексы SCIP необходимы для запуска поиска automata . Эти индексы используются для создания графа кода, который связывает символы зависимостями в базе кода. Новые индексы периодически генерируются и загружаются для базы кода automata , но программистам приходится генерировать их вручную, если это необходимо для локальной разработки. Если у вас возникнут проблемы, мы рекомендуем обратиться к инструкциям здесь.
# Install dependencies and run indexing on the local codebase
poetry run automata install-indexing
# Refresh the code embeddings (after making local changes)
poetry run automata run-code-embedding
# Refresh the documentation + embeddings
poetry run automata run-doc-embedding --embedding-level=2
Следующие команды иллюстрируют, как запустить систему с помощью тривиальной инструкции. Рекомендуется выполнить что-то подобное при первом запуске, чтобы убедиться, что система работает должным образом.
# Run a single agent w/ trivial instruction
poetry run automata run-agent --instructions= " Return true " --model=gpt-3.5-turbo-0613
# Run a single agent w/ a non-trivial instruction
poetry run automata run-agent --instructions= " Explain what automata Agent is and how it works, include an example to initialize an instance of automata Agent. "
automata работают путем объединения больших языковых моделей, таких как GPT-4, с векторной базой данных для формирования интегрированной системы, способной документировать, искать и писать код. Процедура начинается с создания подробной документации и экземпляров кода. Это, в сочетании с возможностями поиска, формирует основу потенциала самокодирования automata .
automata использует последующие инструменты для выполнения сложных задач кодирования, постоянно наращивая свой опыт и автономию. Этот подход самокодирования отражает работу автономного мастера, где инструменты и методы последовательно совершенствуются на основе отзывов и накопленного опыта.
Иногда лучший способ понять сложную систему — начать с понимания простого примера. Следующий пример иллюстрирует, как запустить собственный агент- automata . Агент будет инициализирован тривиальной инструкцией, а затем попытается написать код для выполнения этой инструкции. Затем агент вернет результат своей попытки.
from automata . config . base import AgentConfigName , OpenAI automata AgentConfigBuilder
from automata . agent import OpenAI automata Agent
from automata . singletons . dependency_factory import dependency_factory
from automata . singletons . py_module_loader import py_module_loader
from automata . tools . factory import AgentToolFactory
# Initialize the module loader to the local directory
py_module_loader . initialize ()
# Construct the set of all dependencies that will be used to build the tools
toolkit_list = [ "context-oracle" ]
tool_dependencies = dependency_factory . build_dependencies_for_tools ( toolkit_list )
# Build the tools
tools = AgentToolFactory . build_tools ( toolkit_list , ** tool_dependencies )
# Build the agent config
agent_config = (
OpenAI automata AgentConfigBuilder . from_name ( " automata -main" )
. with_tools ( tools )
. with_model ( "gpt-4" )
. build ()
)
# Initialize and run the agent
instructions = "Explain how embeddings are used by the codebase"
agent = OpenAI automata Agent ( instructions , config = agent_config )
result = agent . run ()
Внедрения в этой базе кода представлены такими классами, как SymbolCodeEmbedding
и SymbolDocEmbedding
. Эти классы хранят информацию о символе и его соответствующих вложениях, которые представляют собой векторы, представляющие символ в многомерном пространстве.
Примерами этих классов являются: SymbolCodeEmbedding
класс, используемый для хранения внедрений, связанных с кодом символа. SymbolDocEmbedding
класс, используемый для хранения вложений, связанных с документацией символа.
Пример кода для создания экземпляра SymbolCodeEmbedding:
import numpy as np
from automata . symbol_embedding . base import SymbolCodeEmbedding
from automata . symbol . parser import parse_symbol
symbol_str = 'scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 ` automata .agent.agent_enums`/ActionIndicator#'
symbol = parse_symbol ( symbol_str )
source_code = 'symbol_source'
vector = np . array ([ 1 , 0 , 0 , 0 ])
embedding = SymbolCodeEmbedding ( symbol = symbol , source_code = source_code , vector = vector )
Пример кода для создания экземпляра SymbolDocEmbedding:
from automata . symbol_embedding . base import SymbolDocEmbedding
from automata . symbol . parser import parse_symbol
import numpy as np
symbol = parse_symbol ( 'your_symbol_here' )
document = 'A document string containing information about the symbol.'
vector = np . random . rand ( 10 )
symbol_doc_embedding = SymbolDocEmbedding ( symbol , document , vector )
Если вы хотите внести свой вклад в automata , обязательно ознакомьтесь с правилами внесения вклада. Этот проект придерживается кодекса поведения automata . Ожидается, что, участвуя, вы будете соблюдать этот кодекс.
Мы используем выпуски GitHub для отслеживания запросов и ошибок. Общие вопросы и обсуждения см. в разделе «Обсуждения automata , а также задавайте конкретные вопросы.
Проект automata стремится следовать общепринятым лучшим практикам разработки программного обеспечения с открытым исходным кодом.
Конечная цель проекта automata — достичь такого уровня квалификации, при котором они смогут самостоятельно проектировать, писать, тестировать и совершенствовать сложные программные системы. Это включает в себя способность понимать большие базы кода и ориентироваться в них, рассуждать об архитектуре программного обеспечения, оптимизировать производительность и даже при необходимости изобретать новые алгоритмы или структуры данных.
Хотя полная реализация этой цели, вероятно, будет сложной и долгосрочной задачей, каждый постепенный шаг к ней может не только потенциально повысить производительность программистов-людей, но и пролить свет на фундаментальные вопросы в области искусственного интеллекта и компьютеров. наука.
automata лицензируются по лицензии Apache 2.0.
Этот проект является продолжением первоначальных усилий emrgnt-cmplxty и maks-ivanov, которые начались с этого репозитория.