إن 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++ من خلال "تطوير سطح المكتب باستخدام 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 هو تحقيق مستوى من الكفاءة حيث يمكنه بشكل مستقل تصميم أنظمة برمجية معقدة وكتابتها واختبارها وتحسينها. يتضمن ذلك القدرة على فهم قواعد التعليمات البرمجية الكبيرة والتنقل فيها، والتفكير في بنية البرامج، وتحسين الأداء، وحتى ابتكار خوارزميات جديدة أو هياكل بيانات عند الضرورة.
في حين أن التحقيق الكامل لهذا الهدف من المرجح أن يكون مسعى معقدًا وطويل الأمد، فإن كل خطوة تدريجية نحو ذلك ليس فقط لديها القدرة على زيادة إنتاجية المبرمجين البشريين بشكل كبير، ولكن أيضًا لتسليط الضوء على الأسئلة الأساسية في الذكاء الاصطناعي والكمبيوتر. علوم.
تم ترخيص automata بموجب ترخيص Apache 2.0.
يعد هذا المشروع امتدادًا للجهد الأولي بين emrgnt-cmplxty وmaks-ivanov الذي بدأ بهذا المستودع.