GhostOS
est un framework d'agent basé sur LLM. Il offre une interface MOSS (Simulation de système d'exploitation orientée LLM) vers LLM, qui permet :
GhostOS
fournit aux agents LLM une interface Python complète de Turing. Et les agents sont capables d'écrire du code python pour produire des outils (comme des bibliothèques) et de les intégrer eux-mêmes (modules d'importation ou injections de dépendances) ; De plus, l'agent est construit à partir de code et peut être appelé en tant que fonction par d'autres agents.
Ainsi, les méta-agents sont capables de définir ou d'optimiser d'autres agents de domaine, et de les intégrer lors du traitement (en théorie). Par ces méthodes, nous visons à développer le méta-agent auto-évolutif.
Liste papier :
Un agent nommé DirectoryEditThought
est équipé d'un contexte python comme celui-ci :
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.
"""
Ce que nous voyons est ce que DirectoryEditThought
obtient, MOSS reflète ce module dans une invite du LLM, avec des détails sur les valeurs importées telles que FileEditThought
, DirectoryEditor
et MultiTask
. DirectoryEditThought
doit coder son plan avec ces outils :
Requête de l'utilisateur : 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.
La génération 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 )
Dans cette génération de code, DirectoryEditThought
fait :
/code_edits
par moss.dir_editor
.FileEditorThought
.MultiTask
et exploitez sa pensée pour attendre les résultats. Jusqu’à présent, GhostOS
en est encore aux premiers stades d’expérimentation et d’exploration. Nous prévoyons de publier la première version en octobre. Vous êtes invités à jouer avec les cas de test de démonstration :
Assurez-vous d'abord d'avoir installé python > 3.12
, puis :
dépôt de clone :
# 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
après avoir activé le python venv, puis installez les dépendances par poésie :
# install poetry in the venv
python -m pip install poetry
# install requirements by poetry
poetry install
configurez la clé 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
utilise le fichier yaml pour configurer la bibliothèque LLM. Vous pouvez éditer ghostos/demo/configs/llms_conf.yml comme vous le souhaitez, la structure yaml suit LLMConfig
AIFunc
est un agent léger qui agit comme une fonction. L' AIFunc
est capable d'appeler d'autres AIFunc
pendant le traitement pour accomplir des requêtes complexes.
exécuter le scénario de test :
venv/bin/python ghostos/demo/src/examples/run_aifunc_test.py
Dans ce cas, nous demandons à un AIFunc de type agent de faire deux choses :
Nous nous attendons à ce que AgentFn
appelle WeatherAIFunc
et NewsAIFunc
pour nous aider dans les sous-tâches et nous donner un résultat final.
Les AIFuncs de test sont définis dans aifuncs.
exécuter le scénario de test :
venv/bin/python ghostos/demo/src/examples/code_edits/file_editor_test.py
Dans ce cas un agent suivra l'instruction, pour remplacer tous les caractères chinois dans le fichier : file_editor_test.py.
La pensée de l'agent est définie dans file_editor_thought.py, et son contexte python est file_editor_moss.py. Ce que le llm obtient au moment de l'exécution est ce que vous voyez dans ce fichier.
exécuter le scénario de test :
venv/bin/python ghostos/demo/src/examples/code_edits/tool_generation_test.py
Dans ce cas, il est demandé à l'agent d'implémenter une classe MockCache
à partir de la classe abstraite Cache
. Après avoir exécuté le cas, le fichier Tool_Generation_test.py doit être modifié.
La pensée de l'agent est définie dans pymodule_editor.py, et son contexte python est pymodule_editor_moss.py.
exécuter le scénario de test :
venv/bin/python ghostos/demo/src/examples/code_edits/modify_directory_test.py
Dans ce cas, un agent équipé de DirectoryEdit et un autre agent FileEditThought, sont invités à modifier tous les fichiers du répertoire code_edits
. Il est censé appeler la bibliothèque MultiTask
pour distribuer plusieurs tâches à FileEditThought, et les tâches s'exécuteront en parallèle. Une fois toutes les tâches terminées, l'agent répondra au résultat de manière proactive.
La pensée de l'agent et le contexte python sont tous deux définis dans directory_editor_thought.py. Nous nous attendons à ce que le méta-agent puisse définir un agent de domaine avec son contexte python comme celui-ci.
GhostFunc
est un jouet que nous avons utilisé pour tester MOSS au début du développement. Il fournit des décorateurs, peut envelopper une fonction de signature uniquement dans une fonction pilotée par LLM qui produit du code lors de l'appel.
exécuter le scénario de test :
venv/bin/python ghostos/demo/src/examples/ghostfunc/get_weather.py
Voir plus de détails dans get_weather.py
Nous prévoyons de publier la première version de ce projet en octobre. Le projet est censé être un framework d'agent avec des prototypes d'application plutôt qu'une application. Pour le moment, nous nous concentrons sur le développement de certains composants de GhostOS
. Encore beaucoup de travaux à faire...