GhostOS
es un marco de agente basado en LLM. Ofrece una interfaz MOSS (Simulación de sistema operativo orientada a LLM) para LLM, que hace:
GhostOS
proporciona a los agentes LLM una interfaz Python completa de Turing. Y los agentes pueden escribir código Python para producir herramientas (como bibliotecas) e integrarlas (importar módulos o inyecciones de dependencia); Además, el Agente se construye a partir de código y otros Agentes pueden llamarlo como función.
Por lo tanto, los metaagentes pueden definir u optimizar otros agentes de dominio e integrarlos durante el procesamiento (teóricamente). Con estos métodos pretendemos desarrollar el Meta-Agente Autoevolutivo.
Lista de artículos:
Un agente llamado DirectoryEditThought
está equipado con un contexto de Python como este:
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.
"""
Lo que vemos es lo que obtiene DirectoryEditThought
, MOSS refleja este módulo en un mensaje al LLM, con detalles de valores importados como FileEditThought
, DirectoryEditor
y MultiTask
. DirectoryEditThought
codificará su plan con estas herramientas:
Consulta del usuario: 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 generación 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 )
En esta generación de código, DirectoryEditThought
hace:
/code_edits
por moss.dir_editor
.FileEditorThought
.MultiTask
y opere su pensamiento para esperar los resultados. Hasta ahora, GhostOS
aún se encuentra en las primeras etapas de experimentación y exploración. Estamos planeando lanzar la primera versión en octubre. Eres bienvenido a jugar con los casos de prueba de demostración:
Primero asegúrese de haber instalado python > 3.12
, luego:
repositorio de clones:
# 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
después de activar Python Venv, luego instale las dependencias por poesía:
# install poetry in the venv
python -m pip install poetry
# install requirements by poetry
poetry install
configure la clave API de 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
usa el archivo yaml para configurar la biblioteca LLM. Puede editar ghostos/demo/configs/llms_conf.yml como desee, la estructura yaml sigue LLMConfig
AIFunc
es un agente liviano que actúa como una función. AIFunc
puede llamar a otros AIFunc
durante el procesamiento para realizar solicitudes complejas.
ejecutar caso de prueba:
venv/bin/python ghostos/demo/src/examples/run_aifunc_test.py
En este caso le pedimos a un AIFunc similar a un agente que haga dos cosas:
Esperamos que AgentFn
llame WeatherAIFunc
y NewsAIFunc
para ayudar con las subtareas y brindarnos un resultado final.
Las AIFuncs de prueba se definen en aifuncs.
ejecutar caso de prueba:
venv/bin/python ghostos/demo/src/examples/code_edits/file_editor_test.py
En este caso, un agente seguirá las instrucciones para reemplazar todos los caracteres chinos en el archivo: file_editor_test.py.
El pensamiento del agente se define en file_editor_thinkt.py, y su contexto de Python es file_editor_moss.py. Lo que obtiene la película en tiempo de ejecución es lo que ve en este archivo.
ejecutar caso de prueba:
venv/bin/python ghostos/demo/src/examples/code_edits/tool_generation_test.py
En este caso, se le indica al agente que implemente una clase MockCache
a partir de la clase abstracta Cache
. Después de ejecutar el caso, se cambiará el archivo tool_generation_test.py.
El pensamiento del agente se define en pymodule_editor.py, y su contexto de Python es pymodule_editor_moss.py.
ejecutar caso de prueba:
venv/bin/python ghostos/demo/src/examples/code_edits/modify_directory_test.py
En este caso, a un agente equipado con DirectoryEdit y a otro agente FileEditThought se les indica que modifiquen todos los archivos en el directorio code_edits
. Se supone que debe llamar a la biblioteca MultiTask
para enviar varias tareas a FileEditThought, y las tareas se ejecutarán en paralelo. Una vez finalizadas todas las tareas, el agente responderá el resultado de forma proactiva.
El pensamiento del agente y el contexto de Python están definidos en directorio_editor_thinkt.py. Esperamos que el metaagente pueda definir un agente de dominio con su contexto de Python de esta manera.
GhostFunc
es un juguete que utilizamos para probar MOSS en las primeras etapas del desarrollo. Proporciona decoradores que pueden ajustar una función de solo firma a una función controlada por LLM que produce código durante la llamada.
ejecutar caso de prueba:
venv/bin/python ghostos/demo/src/examples/ghostfunc/get_weather.py
Ver más detalles en get_weather.py
Estamos planeando lanzar la primera versión de este proyecto en octubre. Se supone que el proyecto es un marco de agente con prototipos de aplicaciones en lugar de una aplicación. Ahora mismo nos centramos en desarrollar algunos componentes de GhostOS
por sí solo. Aún quedan muchas obras por hacer...