GhostOS
— это платформа агентов, управляемая LLM. Он предлагает интерфейс MOSS (LLM-ориентированное моделирование операционной системы) для LLM, который:
GhostOS
предоставляет агентам LLM интерфейс Python, полный по Тьюрингу. Агенты могут писать код Python для создания инструментов (в виде библиотек) и самостоятельно интегрировать их (импортировать модули или внедрять зависимости); Более того, агент создается из кода и может вызываться другими агентами как функция.
Таким образом, метаагенты могут определять или оптимизировать другие агенты предметной области и интегрировать их во время обработки (теоретически). С помощью этих методов мы стремимся разработать Саморазвивающегося Мета-Агента.
Список бумаги:
Агент с именем DirectoryEditThought
оснащен следующим контекстом Python:
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.
"""
Мы видим то, что получает DirectoryEditThought
, MOSS отражает этот модуль в приглашении LLM с подробной информацией об импортированных значениях, таких как FileEditThought
, DirectoryEditor
и MultiTask
. DirectoryEditThought
закодирует свой план с помощью этих инструментов:
Пользовательский запрос: 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.
Поколение 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 )
В этой генерации кода DirectoryEditThought
выполняет:
/code_edits
с помощью moss.dir_editor
.FileEditorThought
.MultiTask
и управляйте его мыслью, чтобы дождаться результатов. Пока что GhostOS
все еще находится на ранних стадиях экспериментов и исследований. Мы планируем выпустить первую версию в октябре. Вы можете поиграть с демо-тестами:
Сначала убедитесь, что вы установили python > 3.12
, затем:
клон репозитория:
# 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
после активации Python venv, затем установите зависимости поэзии:
# install poetry in the venv
python -m pip install poetry
# install requirements by poetry
poetry install
настройте 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
использует файл yaml для настройки библиотеки LLM. Вы можете редактировать Ghostos/demo/configs/llms_conf.yml по своему усмотрению, структура yaml соответствует LLMConfig.
AIFunc
— это облегченный агент, действующий как функция. AIFunc
может вызывать другие AIFunc
во время обработки для выполнения сложных запросов.
запустить тестовый пример:
venv/bin/python ghostos/demo/src/examples/run_aifunc_test.py
В этом случае мы просим AIFunc, подобный агенту, сделать две вещи:
Мы ожидаем, что AgentFn
вызовет WeatherAIFunc
и NewsAIFunc
, чтобы они помогли с подзадачами и предоставили нам окончательный результат.
Тестовые AIFuncs определены в aifuncs.
запустить тестовый пример:
venv/bin/python ghostos/demo/src/examples/code_edits/file_editor_test.py
В этом случае агент, следуя инструкциям, заменит все китайские символы в файле: file_editor_test.py.
Мысль агента определена в файле file_editor_ Thought.py, а ее контекст Python — file_editor_moss.py. То, что llm получает во время выполнения, — это то, что вы видите в этом файле.
запустить тестовый пример:
venv/bin/python ghostos/demo/src/examples/code_edits/tool_generation_test.py
В этом случае агенту предлагается реализовать класс MockCache
из абстрактного класса Cache
. После запуска кейса файлtool_generation_test.py должен быть изменен.
Мысль агента определена в pymodule_editor.py, а ее контекст Python — pymodule_editor_moss.py.
запустить тестовый пример:
venv/bin/python ghostos/demo/src/examples/code_edits/modify_directory_test.py
В этом случае агенту, оснащенному DirectoryEdit, и другому агенту FileEditThought предлагается изменить все файлы в каталоге code_edits
. Предполагается вызвать библиотеку MultiTask
для отправки нескольких задач в FileEditThought, и задачи будут выполняться параллельно. После завершения всех задач агент заранее ответит о результате.
Мысль агента и контекст Python определены в файлеdirectory_editor_ Thought.py. Мы ожидаем, что метаагент может определить агент домена с его контекстом Python, как показано ниже.
GhostFunc
— это игрушка, которую мы использовали для тестирования MOSS на ранних этапах разработки. Он предоставляет декораторы и может обернуть функцию только для подписи в функцию, управляемую LLM, которая создает код во время вызова.
запустить тестовый пример:
venv/bin/python ghostos/demo/src/examples/ghostfunc/get_weather.py
Подробности смотрите в get_weather.py.
Мы планируем выпустить первую версию этого проекта в октябре. Проект должен представлять собой среду агентов с прототипами приложений, а не приложением. Сейчас мы сосредоточены на самостоятельной разработке некоторых компонентов GhostOS
. Работы еще много...