GhostOS
é uma estrutura de agente orientada por LLM. Ele oferece uma interface MOSS (Simulação de Sistema Operacional Orientada a LLM) para LLM, que faz:
GhostOS
fornece aos Agentes LLM uma interface python Turing-completa. E os Agentes são capazes de escrever código python para produzir ferramentas (como bibliotecas) e integrá-las (importar módulos ou injeções de dependência); Além disso, o Agente é construído a partir de código e pode ser chamado como função por outros Agentes.
Assim, os metaagentes podem definir ou otimizar outros agentes de domínio e integrá-los durante o processamento (teoricamente). Por meio desses métodos, pretendemos desenvolver o Meta-Agente Autoevolutivo.
Lista de papéis:
Um agente chamado DirectoryEditThought
está equipado com um contexto 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.
"""
O que vemos é o que DirectoryEditThought
obtém, o MOSS reflete este módulo em prompt para o LLM, com detalhes de valores importados como FileEditThought
, DirectoryEditor
e MultiTask
. DirectoryEditThought
deve codificar seu plano com estas ferramentas:
Consulta do usuário: 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.
A geração 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 )
Nesta geração de código, DirectoryEditThought
faz:
/code_edits
por moss.dir_editor
.FileEditorThought
.MultiTask
e operar seu pensamento para aguardar os resultados. Até agora o GhostOS
ainda está nos estágios iniciais de experimentação e exploração. Estamos planejando lançar a primeira versão em outubro. Você está convidado a brincar com os casos de teste de demonstração:
Primeiro, certifique-se de ter instalado python > 3.12
e, em seguida:
repositório 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
depois de ativar o python venv, instale as dependências por poesia:
# install poetry in the venv
python -m pip install poetry
# install requirements by poetry
poetry install
configure a chave de API do 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 arquivo yaml para configurar a biblioteca LLMs. Você pode editar ghostos/demo/configs/llms_conf.yml como quiser, a estrutura yaml segue LLMConfig
AIFunc
é um agente leve que atua como uma função. O AIFunc
é capaz de chamar outros AIFunc
durante o processamento para realizar solicitações complexas.
execute o caso de teste:
venv/bin/python ghostos/demo/src/examples/run_aifunc_test.py
Neste caso, pedimos a um AIFunc semelhante a um agente para fazer duas coisas:
Esperamos que o AgentFn
chame WeatherAIFunc
e NewsAIFunc
para ajudar nas subtarefas e nos fornecer um resultado final.
Os AIFuncs de teste são definidos em aifuncs.
execute o caso de teste:
venv/bin/python ghostos/demo/src/examples/code_edits/file_editor_test.py
Neste caso um agente seguirá as instruções, para substituir todos os caracteres chineses no arquivo: file_editor_test.py.
O Pensamento do Agente é definido em file_editor_thought.py, e o contexto python dele é file_editor_moss.py. O que o llm obtém no tempo de execução é o que você vê neste arquivo.
execute o caso de teste:
venv/bin/python ghostos/demo/src/examples/code_edits/tool_generation_test.py
Neste caso, o agente é instruído a implementar uma classe MockCache
da classe abstrata Cache
. Após a execução do caso, o arquivo tool_generation_test.py deverá ser alterado.
O Pensamento do Agente é definido em pymodule_editor.py, e o contexto python dele é pymodule_editor_moss.py.
execute o caso de teste:
venv/bin/python ghostos/demo/src/examples/code_edits/modify_directory_test.py
Neste caso, um agente equipado com DirectoryEdit e outro agente FileEditThought são instruídos a modificar todos os arquivos no diretório code_edits
. É suposto chamar a biblioteca MultiTask
para despachar várias tarefas para FileEditThought, e as tarefas serão executadas paralelamente. Após a conclusão de todas as tarefas, o agente responderá o resultado de forma proativa.
O pensamento do agente e o contexto python são definidos em directory_editor_thought.py. Esperamos que o metaagente possa definir um agente de domínio com seu contexto python assim.
GhostFunc
é um brinquedo que usamos para testar o MOSS no início do desenvolvimento. Ele fornece decoradores, pode agrupar uma função somente de assinatura em uma função orientada por LLM que produz código durante a chamada.
execute o caso de teste:
venv/bin/python ghostos/demo/src/examples/ghostfunc/get_weather.py
Veja mais detalhes em get_weather.py
Estamos planejando lançar a primeira versão deste projeto em outubro. O projeto deveria ser uma estrutura de agente com protótipos de aplicativos em vez de um aplicativo. No momento estamos nos concentrando em desenvolver alguns componentes do GhostOS
por si só. Ainda há muito trabalho a fazer...