GhostOS
adalah kerangka kerja Agen yang digerakkan oleh LLM. Ia menawarkan antarmuka MOSS (Simulasi Sistem Operasi berorientasi LLM) ke LLM, yang melakukan:
GhostOS
memberi Agen LLM antarmuka python lengkap Turing. Dan Agen dapat menulis kode python untuk menghasilkan alat (sebagai perpustakaan) dan mengintegrasikannya (mengimpor modul atau injeksi ketergantungan) itu sendiri; Selanjutnya, Agen dibangun dari kode, dan dapat dipanggil fungsinya oleh Agen lain.
Jadi agen meta diaktifkan untuk mendefinisikan atau mengoptimalkan agen domain lain, dan mengintegrasikannya selama pemrosesan (secara teoritis). Dengan metode ini kami bertujuan untuk mengembangkan Agen Meta yang Berkembang Mandiri.
Daftar kertas:
Agen bernama DirectoryEditThought
dilengkapi dengan konteks python seperti ini:
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.
"""
Apa yang kita lihat adalah apa yang DirectoryEditThought
dapatkan, MOSS merefleksikan modul ini ke dalam prompt ke LLM, dengan rincian nilai yang diimpor seperti FileEditThought
, DirectoryEditor
dan MultiTask
. DirectoryEditThought
akan mengkodekan rencananya dengan alat berikut:
Permintaan Pengguna: 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.
Generasi 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 )
Dalam pembuatan kode ini, DirectoryEditThought
melakukan:
/code_edits
oleh moss.dir_editor
.FileEditorThought
.MultiTask
, dan mengoperasikan pemikirannya untuk menunggu hasilnya. Sejauh ini GhostOS
masih dalam tahap awal eksperimen dan eksplorasi. Kami berencana untuk merilis versi pertama pada bulan Oktober. Anda dipersilakan untuk bermain dengan testcase demo:
Pertama pastikan Anda sudah menginstal python > 3.12
, lalu:
repositori klon:
# 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
setelah mengaktifkan python venv, lalu instal dependensi dengan puisi:
# install poetry in the venv
python -m pip install poetry
# install requirements by poetry
poetry install
konfigurasikan kunci api llms:
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
menggunakan file yaml untuk mengonfigurasi perpustakaan LLM. Anda dapat mengedit ghostos/demo/configs/llms_conf.yml sesuai keinginan, struktur yaml mengikuti LLMConfig
AIFunc
adalah agen ringan yang bertindak seperti sebuah fungsi. AIFunc
dapat memanggil AIFunc
lain selama pemrosesan untuk menyelesaikan permintaan yang kompleks.
jalankan kasus uji:
venv/bin/python ghostos/demo/src/examples/run_aifunc_test.py
Dalam hal ini kami meminta AIFunc seperti agen untuk melakukan dua hal:
Kami berharap AgentFn
akan memanggil WeatherAIFunc
dan NewsAIFunc
untuk membantu subtugas, dan memberikan hasil akhir kepada kami.
AIFuncs pengujian ditentukan di aifuncs.
jalankan kasus uji:
venv/bin/python ghostos/demo/src/examples/code_edits/file_editor_test.py
Dalam hal ini agen akan mengikuti instruksi, untuk mengganti semua karakter Cina di file: file_editor_test.py.
Pemikiran Agen didefinisikan di file_editor_think.py, dan konteks pythonnya adalah file_editor_moss.py. Apa yang akan didapat saat runtime adalah apa yang Anda lihat di file ini.
jalankan kasus uji:
venv/bin/python ghostos/demo/src/examples/code_edits/tool_generation_test.py
Dalam hal ini, agen diminta untuk mengimplementasikan kelas MockCache
dari kelas abstrak Cache
. Setelah menjalankan kasus ini, file tool_generasi_test.py akan diubah.
Pemikiran Agen didefinisikan di pymodule_editor.py, dan konteks pythonnya adalah pymodule_editor_moss.py.
jalankan kasus uji:
venv/bin/python ghostos/demo/src/examples/code_edits/modify_directory_test.py
Dalam hal ini, agen yang dilengkapi dengan DirectoryEdit dan agen lain FileEditThought, disuruh mengubah semua file di direktori code_edits
. Seharusnya memanggil perpustakaan MultiTask
untuk mengirimkan beberapa tugas ke FileEditThought, dan tugas tersebut akan berjalan secara paralel. Setelah semua tugas selesai, agen akan membalas hasilnya secara proaktif.
Konteks Pemikiran Agen dan python keduanya ditentukan di direktori_editor_pikiran.py. Kami berharap agen meta dapat mendefinisikan agen domain dengan konteks pythonnya seperti ini.
GhostFunc
adalah mainan yang kami gunakan untuk menguji MOSS pada pengembangan awal. Ini menyediakan dekorator, dapat menggabungkan fungsi tanda tangan saja ke fungsi berbasis LLM yang menghasilkan kode selama panggilan.
jalankan kasus uji:
venv/bin/python ghostos/demo/src/examples/ghostfunc/get_weather.py
Lihat detail selengkapnya di get_weather.py
Kami berencana untuk merilis versi pertama proyek ini pada bulan Oktober. Proyek ini seharusnya merupakan kerangka kerja agen dengan prototipe aplikasi, bukan aplikasi. Saat ini kami fokus pada pengembangan beberapa komponen GhostOS
sendiri. Masih banyak pekerjaan yang harus dilakukan...