automata terinspirasi oleh teori bahwa kode pada dasarnya adalah suatu bentuk memori, dan jika dilengkapi dengan alat yang tepat, AI dapat mengembangkan kemampuan real-time yang berpotensi mengarah pada penciptaan AGI. Kata automata berasal dari kata Yunani αὐτόματος, yang berarti "bertindak sendiri, berkehendak sendiri, bergerak sendiri", dan teori automata adalah studi tentang mesin abstrak dan automata , serta masalah komputasi yang dapat diselesaikan dengan menggunakannya. .
Informasi lebih lanjut berikut di bawah ini.
Ikuti langkah-langkah berikut untuk mengatur lingkungan 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
Tarik gambar Docker:
$ docker pull ghcr.io/emrgnt-cmplxty/ automata :latest
Jalankan gambar 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
Ini akan memulai container Docker dengan automata terinstal dan membuka shell interaktif untuk Anda gunakan.
Pengguna Windows mungkin perlu menginstal dukungan C++ melalui "Pengembangan desktop dengan C++" Visual Studio untuk dependensi tertentu.
Selain itu, pembaruan ke gcc-11 dan g++-11 mungkin diperlukan. Hal ini dapat dilakukan dengan menjalankan perintah berikut:
# 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
Indeks SCIP diperlukan untuk menjalankan Pencarian automata . Indeks ini digunakan untuk membuat grafik kode yang menghubungkan simbol berdasarkan ketergantungan di seluruh basis kode. Indeks baru dibuat dan diunggah secara berkala untuk basis kode automata , namun pemrogram harus membuatnya secara manual jika diperlukan untuk pengembangan lokalnya. Jika Anda mengalami masalah, sebaiknya lihat petunjuk di sini.
# 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
Perintah berikut menggambarkan cara menjalankan sistem dengan instruksi sepele. Direkomendasikan agar proses awal Anda berjalan seperti ini untuk memastikan sistem bekerja sesuai harapan.
# 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 bekerja dengan menggabungkan Model Bahasa Besar, seperti GPT-4, dengan database vektor untuk membentuk sistem terintegrasi yang mampu mendokumentasikan, mencari, dan menulis kode. Prosedur ini dimulai dengan pembuatan dokumentasi komprehensif dan contoh kode. Hal ini, ditambah dengan kemampuan pencarian, membentuk landasan bagi potensi pengkodean mandiri automata .
automata menggunakan peralatan hilir untuk menjalankan tugas pengkodean tingkat lanjut, terus membangun keahlian dan otonominya. Pendekatan pengkodean mandiri ini mencerminkan karya pengrajin yang mandiri, di mana alat dan teknik disempurnakan secara konsisten berdasarkan umpan balik dan akumulasi pengalaman.
Terkadang cara terbaik untuk memahami sistem yang rumit adalah memulai dengan memahami contoh dasar. Contoh berikut mengilustrasikan cara menjalankan agen automata Anda sendiri. Agen akan diinisialisasi dengan instruksi sepele, dan kemudian akan mencoba menulis kode untuk memenuhi instruksi tersebut. Agen kemudian akan mengembalikan hasil usahanya.
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 ()
Penyematan dalam basis kode ini diwakili oleh kelas seperti SymbolCodeEmbedding
dan SymbolDocEmbedding
. Kelas-kelas ini menyimpan informasi tentang simbol dan masing-masing embeddingsnya yang merupakan vektor yang mewakili simbol dalam ruang berdimensi tinggi.
Contoh dari kelas-kelas ini adalah: SymbolCodeEmbedding
kelas yang digunakan untuk menyimpan embeddings yang terkait dengan kode suatu simbol. SymbolDocEmbedding
kelas yang digunakan untuk menyimpan embeddings yang terkait dengan dokumentasi simbol.
Contoh kode untuk membuat instance '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 )
Contoh kode untuk membuat instance '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 )
Jika Anda ingin berkontribusi pada automata , pastikan untuk meninjau pedoman kontribusi. Proyek ini mematuhi kode etik automata . Dengan berpartisipasi, Anda diharapkan menjunjung tinggi kode ini.
Kami menggunakan masalah GitHub untuk melacak permintaan dan bug, silakan lihat Diskusi automata untuk pertanyaan umum dan diskusi, dan silakan ajukan pertanyaan spesifik.
Proyek automata berusaha untuk mematuhi praktik terbaik yang diterima secara umum dalam pengembangan perangkat lunak sumber terbuka.
Tujuan akhir dari proyek automata adalah untuk mencapai tingkat kemahiran di mana ia dapat merancang, menulis, menguji, dan menyempurnakan sistem perangkat lunak yang kompleks secara mandiri. Hal ini mencakup kemampuan untuk memahami dan menavigasi basis kode yang besar, memikirkan arsitektur perangkat lunak, mengoptimalkan kinerja, dan bahkan menciptakan algoritma atau struktur data baru bila diperlukan.
Meskipun realisasi menyeluruh dari tujuan ini mungkin merupakan upaya yang kompleks dan berjangka panjang, setiap langkah bertahap menuju tujuan ini tidak hanya berpotensi meningkatkan produktivitas pemrogram manusia secara signifikan, namun juga menjelaskan pertanyaan-pertanyaan mendasar dalam bidang AI dan komputer. sains.
automata dilisensikan di bawah Lisensi Apache 2.0.
Proyek ini merupakan perpanjangan dari upaya awal antara emrgnt-cmplxty dan maks-ivanov yang dimulai dengan repositori ini.