automata ได้รับแรงบันดาลใจจากทฤษฎีที่ว่าโค้ดคือรูปแบบหนึ่งของหน่วยความจำ และเมื่อได้รับการตกแต่งด้วยเครื่องมือที่เหมาะสม AI ก็สามารถพัฒนาความสามารถแบบเรียลไทม์ซึ่งอาจนำไปสู่การสร้าง AGI ได้ คำว่า 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 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++ ผ่าน "การพัฒนาเดสก์ท็อปด้วย C++" ของ Visual Studio สำหรับการขึ้นต่อกันบางอย่าง
นอกจากนี้ อาจจำเป็นต้องอัปเดตเป็น 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 คือการบรรลุระดับความเชี่ยวชาญโดยสามารถออกแบบ เขียน ทดสอบ และปรับปรุงระบบซอฟต์แวร์ที่ซับซ้อนได้อย่างอิสระ ซึ่งรวมถึงความสามารถในการทำความเข้าใจและนำทางไปยังฐานโค้ดขนาดใหญ่ เหตุผลเกี่ยวกับสถาปัตยกรรมซอฟต์แวร์ เพิ่มประสิทธิภาพการทำงาน และแม้กระทั่งคิดค้นอัลกอริธึมหรือโครงสร้างข้อมูลใหม่เมื่อจำเป็น
แม้ว่าการบรรลุเป้าหมายนี้โดยสมบูรณ์มีแนวโน้มที่จะเป็นความพยายามที่ซับซ้อนและระยะยาว แต่ละขั้นตอนที่เพิ่มขึ้นไม่เพียงแต่มีศักยภาพในการเพิ่มผลผลิตของโปรแกรมเมอร์ที่เป็นมนุษย์ได้อย่างมาก แต่ยังช่วยให้กระจ่างเกี่ยวกับคำถามพื้นฐานใน AI และคอมพิวเตอร์ด้วย ศาสตร์.
automata ได้รับอนุญาตภายใต้ Apache License 2.0
โปรเจ็กต์นี้เป็นส่วนขยายของความพยายามเริ่มแรกระหว่าง emrgnt-cmplxty และ maks-ivanov ที่เริ่มต้นด้วยพื้นที่เก็บข้อมูลนี้