GhostOS
هو إطار عمل وكيل يحركه LLM. وهو يوفر واجهة MOSS (محاكاة نظام التشغيل الموجهة نحو LLM) إلى LLM، والتي تقوم بما يلي:
يوفر GhostOS
لوكلاء LLM واجهة بايثون تورينج كاملة. والوكلاء قادرون على كتابة كود بايثون لإنتاج الأدوات (مثل المكتبات) ودمجها (استيراد الوحدات أو حقن التبعية) نفسها؛ علاوة على ذلك، تم إنشاء الوكيل من التعليمات البرمجية، ويمكن للوكلاء الآخرين استدعاؤه كوظيفة.
لذلك يتم تمكين الوكلاء الوصفيين من تحديد أو تحسين وكلاء المجال الآخرين، ودمجهم أثناء المعالجة (نظريًا). من خلال هذه الأساليب، نهدف إلى تطوير العامل الفوقي المتطور ذاتيًا.
قائمة الورق:
تم تجهيز الوكيل المسمى DirectoryEditThought
بسياق بايثون مثل هذا:
from typing import TYPE_CHECKING
from ghostos . thoughts . magic_moss_thought import MagicMossThought
from ghostos . core . ghosts import Replier , MultiTask , NewTask
from ghostos . core . moss import Moss as Parent
from ghostos . libraries . file_editor import DirectoryEditor , FileEditor
from ghostos . thoughts . file_editor_thought import FileEditorThought
from pydantic import Field
class Moss ( Parent ):
"""
you are equipped with some tools helping you to manage the current directory.
and the FileEditorThought are helpful to manage a single file.
"""
replier : Replier
multitask : MultiTask
"""useful to handle multiple tasks, such as manage several files by FileEditorThought."""
dir_editor : DirectoryEditor
"""
the editor of the current directory.
you can read or edit the files by FileEditorThought.
so don't make up anything, based on what you informed.
"""
ما نراه هو ما حصل عليه DirectoryEditThought
، حيث يعكس MOSS هذه الوحدة في موجه إلى LLM، مع تفاصيل القيم المستوردة مثل FileEditThought
و DirectoryEditor
و MultiTask
. يجب على DirectoryEditThought
ترميز خطته باستخدام هذه الأدوات:
استعلام المستخدم: please checkout content of the '.py' files in code_edits directory, and translate the comments in chinese into english if you found them in the code.
جيل LLM:
def main ( moss : Moss ) -> Operator :
# List all .py files in the code_edits directory
code_edits_files = moss . dir_editor . edit_dir ( "code_edits" ). list ( pattern = "*.py" , absolute = True , formated = False ,
summary = False )
# Create tasks for checking out the content of each file
tasks = []
for file in code_edits_files :
task = (
f"translate_comments_ { file . split ( '/' )[ - 1 ] } " ,
f"Translate comments in { file } from Chinese to English" ,
FileEditorThought ( filepath = file ),
"Please read the file content and translate any comments in Chinese to English."
)
tasks . append ( task )
# Run the tasks
return moss . multitask . wait_on_tasks ( * tasks )
في عملية إنشاء التعليمات البرمجية هذه، يقوم DirectoryEditThought
بما يلي:
/code_edits
بواسطة moss.dir_editor
.FileEditorThought
.MultiTask
، وتشغيل فكره لانتظار النتائج. حتى الآن لا يزال GhostOS
في المراحل الأولى من التجريب والاستكشاف. ونحن نخطط لإصدار النسخة الأولى في أكتوبر. مرحبًا بك للعب بحالات الاختبار التجريبية:
تأكد أولاً من تثبيت python > 3.12
، ثم:
مستودع النسخ:
# clone the repository
git clone https://github.com/ghost-in-moss/GhostOS.git ghostos_test
# go to the directory
cd ghostos_test
# create python venv
python -m venv venv
# activate venv
source venv/bin/activate
بعد تفعيل python venv، قم بتثبيت التبعيات عن طريق الشعر:
# install poetry in the venv
python -m pip install poetry
# install requirements by poetry
poetry install
تكوين مفتاح llms api:
export OPENAI_API_KEY= " sk-YOUR-KEY " # openai api-key
# optional:
export MOONSHOT_API_KEY= " sk-YOUR-Key " # moonshot api-key
export OPENAI_PROXY= " xxxx " # OPENAI proxy if you need
يستخدم GhostOS
ملف yaml لتكوين مكتبة LLMs. يمكنك تعديل Ghostos/demo/configs/llms_conf.yml كما تريد، وتتبع بنية yaml LLMConfig
AIFunc
هو عامل خفيف الوزن يعمل كوظيفة. AIFunc
قادر على استدعاء AIFunc
أخرى أثناء المعالجة لإنجاز الطلبات المعقدة.
تشغيل حالة الاختبار:
venv/bin/python ghostos/demo/src/examples/run_aifunc_test.py
في هذه الحالة نطلب من وكيل مثل AIFunc القيام بأمرين:
نتوقع أن يقوم AgentFn
بالاتصال بـ WeatherAIFunc
و NewsAIFunc
للمساعدة في المهام الفرعية وتزويدنا بالنتيجة النهائية.
يتم تعريف اختبار AIFuncs في aifuncs.
تشغيل حالة الاختبار:
venv/bin/python ghostos/demo/src/examples/code_edits/file_editor_test.py
في هذه الحالة، سيتبع الوكيل التعليمات لاستبدال جميع الأحرف الصينية في الملف: file_editor_test.py.
يتم تعريف فكرة الوكيل في file_editor_thinkt.py، وسياق بايثون الخاص به هو file_editor_moss.py. ما يحصل عليه الفيلم في وقت التشغيل هو ما تراه في هذا الملف.
تشغيل حالة الاختبار:
venv/bin/python ghostos/demo/src/examples/code_edits/tool_generation_test.py
في هذه الحالة، يُطلب من الوكيل تنفيذ فئة MockCache
من فئة مجردة Cache
المؤقت. بعد تشغيل الحالة سيتم تغيير الملف tool_generation_test.py.
يتم تعريف فكرة الوكيل في pymodule_editor.py، وسياق بايثون الخاص بها هو pymodule_editor_moss.py.
تشغيل حالة الاختبار:
venv/bin/python ghostos/demo/src/examples/code_edits/modify_directory_test.py
في هذه الحالة، يُطلب من الوكيل المزود بـ DirectoryEdit والوكيل الآخر FileEditThought، تعديل جميع الملفات الموجودة في دليل code_edits
. من المفترض استدعاء مكتبة MultiTask
لإرسال عدة مهام إلى FileEditThought، وسيتم تشغيل المهام بالتوازي. بعد الانتهاء من جميع المهام، سيقوم الوكيل بالرد على النتيجة بشكل استباقي.
يتم تعريف كل من فكر الوكيل وسياق الثعبان في Directory_editor_thinkt.py. نتوقع أن يتمكن وكيل التعريف من تحديد وكيل المجال بسياق بايثون الخاص به تمامًا مثل هذا.
GhostFunc
هي لعبة استخدمناها لاختبار MOSS في مرحلة التطوير المبكرة. إنه يوفر أدوات تزيين، ويمكنه التفاف وظيفة التوقيع فقط إلى وظيفة تعتمد على LLM والتي تنتج تعليمات برمجية أثناء الاتصال.
تشغيل حالة الاختبار:
venv/bin/python ghostos/demo/src/examples/ghostfunc/get_weather.py
اطلع على مزيد من التفاصيل في get_weather.py
نحن نخطط لإصدار الإصدار الأول من هذا المشروع في أكتوبر، ومن المفترض أن يكون المشروع بمثابة إطار عمل وكيل مع نماذج أولية للتطبيق بدلاً من التطبيق. نركز الآن على تطوير بعض مكونات GhostOS
بنفسها. لا يزال هناك الكثير من الأعمال التي يتعين القيام بها ...