GhostOS
ist ein LLM-gesteuertes Agent-Framework. Es bietet eine MOSS-Schnittstelle (LLM-orientierte Betriebssystemsimulation) zu LLM, die Folgendes bewirkt:
GhostOS
stellt den LLM-Agenten eine Turing-vollständige Python-Schnittstelle zur Verfügung. Und Agenten sind in der Lage, Python-Code zu schreiben, um Tools (als Bibliotheken) zu erstellen und diese selbst zu integrieren (Module importieren oder Abhängigkeitsinjektionen); Darüber hinaus ist der Agent aus Code aufgebaut und kann von anderen Agenten als Funktion aufgerufen werden.
Dadurch werden die Meta-Agenten in die Lage versetzt, andere Domänen-Agenten zu definieren oder zu optimieren und diese (theoretisch) während der Verarbeitung zu integrieren. Mit diesen Methoden wollen wir den sich selbst entwickelnden Meta-Agenten entwickeln.
Papierliste:
Ein Agent namens DirectoryEditThought
ist mit einem Python-Kontext wie diesem ausgestattet:
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.
"""
Was wir sehen, ist, was DirectoryEditThought
erhält. MOSS spiegelt dieses Modul in eine Eingabeaufforderung an das LLM wider, mit Details zu importierten Werten wie FileEditThought
, DirectoryEditor
und MultiTask
. DirectoryEditThought
soll seinen Plan mit diesen Tools codieren:
Benutzeranfrage: 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.
Die LLM-Generation:
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 )
In dieser Codegenerierung führt DirectoryEditThought
Folgendes aus:
/code_edits
mit moss.dir_editor
.FileEditorThought
.MultiTask
-Planer und warten Sie auf die Ergebnisse. Bisher befindet sich GhostOS
noch in einem frühen Experimentier- und Erkundungsstadium. Wir planen, die erste Version im Oktober zu veröffentlichen. Gerne können Sie mit den Demo-Testfällen spielen:
Stellen Sie zunächst sicher, dass Sie python > 3.12
installiert haben, dann:
Klon-Repository:
# 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
Nachdem Sie das Python-Venv aktiviert haben, installieren Sie die Abhängigkeiten nach Poesie:
# install poetry in the venv
python -m pip install poetry
# install requirements by poetry
poetry install
Konfigurieren Sie den LLMS-API-Schlüssel:
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
verwendet die Yaml-Datei, um die LLMs-Bibliothek zu konfigurieren. Sie können ghostos/demo/configs/llms_conf.yml nach Belieben bearbeiten, die Yaml-Struktur folgt LLMConfig
AIFunc
ist ein einfacher Agent, der sich wie eine Funktion verhält. Die AIFunc
ist in der Lage, während der Verarbeitung andere AIFunc
aufzurufen, um komplexe Anforderungen zu erfüllen.
Testfall ausführen:
venv/bin/python ghostos/demo/src/examples/run_aifunc_test.py
In diesem Fall bitten wir eine agentenähnliche AIFunc, zwei Dinge zu tun:
Wir gehen davon aus, dass der AgentFn
WeatherAIFunc
und NewsAIFunc
aufruft, um bei Unteraufgaben zu helfen und uns ein Endergebnis zu liefern.
Die Test-AIFuncs werden unter aifuncs definiert.
Testfall ausführen:
venv/bin/python ghostos/demo/src/examples/code_edits/file_editor_test.py
In diesem Fall folgt ein Agent der Anweisung, alle chinesischen Zeichen in der Datei zu ersetzen: file_editor_test.py.
Der Gedanke des Agenten ist unter file_editor_thought.py definiert und der Python-Kontext davon ist file_editor_moss.py. Was der LLM zur Laufzeit erhält, ist das, was Sie in dieser Datei sehen.
Testfall ausführen:
venv/bin/python ghostos/demo/src/examples/code_edits/tool_generation_test.py
In diesem Fall wird der Agent angewiesen, eine MockCache
-Klasse aus der abstrakten Cache
Klasse zu implementieren. Nach der Ausführung des Falls muss die Datei tool_generation_test.py geändert werden.
Der Gedanke des Agenten ist unter pymodule_editor.py definiert und der Python-Kontext davon ist pymodule_editor_moss.py.
Testfall ausführen:
venv/bin/python ghostos/demo/src/examples/code_edits/modify_directory_test.py
In diesem Fall wird ein Agent, der mit DirectoryEdit und einem anderen Agenten FileEditThought ausgestattet ist, angewiesen, alle Dateien im Verzeichnis code_edits
zu ändern. Es soll MultiTask
-Bibliothek aufrufen, um mehrere Aufgaben an FileEditThought zu senden, und die Aufgaben werden parallel ausgeführt. Nachdem alle Aufgaben erledigt sind, antwortet der Agent proaktiv mit dem Ergebnis.
Der Gedanke des Agenten und der Python-Kontext sind beide unter „directory_editor_thought.py“ definiert. Wir gehen davon aus, dass der Meta-Agent auf diese Weise einen Domänen-Agenten mit seinem Python-Kontext definieren kann.
GhostFunc
ist ein Spielzeug, mit dem wir MOSS in der frühen Entwicklung getestet haben. Es bietet Dekoratoren und kann eine reine Signaturfunktion in eine LLM-gesteuerte Funktion umschließen, die beim Aufruf Code erzeugt.
Testfall ausführen:
venv/bin/python ghostos/demo/src/examples/ghostfunc/get_weather.py
Weitere Details finden Sie in get_weather.py
Wir planen, die erste Version dieses Projekts im Oktober zu veröffentlichen. Das Projekt soll eher ein Agent-Framework mit App-Prototypen als eine Anwendung sein. Im Moment konzentrieren wir uns darauf, einige GhostOS
-Komponenten selbst zu entwickeln. Es gibt noch viel zu tun...