GhostOS
是一个 LLM 驱动的代理框架。它为 LLM 提供了 MOSS(面向 LLM 的操作系统模拟)接口,该接口可以:
GhostOS
为 LLM 代理提供了图灵完备的 python 接口。代理能够编写Python代码来生成工具(作为库)并自行集成它们(导入模块或依赖注入);此外,Agent 是由代码构建的,并且可以作为函数被其他 Agent 调用。
因此,元代理能够定义或优化其他域代理,并在处理过程中集成它们(理论上)。通过这些方法,我们的目标是开发自我进化元代理。
论文列表:
名为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
执行以下操作:
moss.dir_editor
迭代/code_edits
中的文件。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
配置 llms api 密钥:
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
来帮助完成子任务,并向我们提供最终结果。
测试 AIFunc 在 aifuncs 中定义。
运行测试用例:
venv/bin/python ghostos/demo/src/examples/code_edits/file_editor_test.py
在这种情况下,代理将按照说明替换文件 file_editor_test.py 中的所有中文字符。
Agent 的 Thought 定义在 file_editor_thought.py,它的 python 上下文是 file_editor_moss.py。 llm 在运行时得到的就是你在这个文件中看到的。
运行测试用例:
venv/bin/python ghostos/demo/src/examples/code_edits/tool_generation_test.py
在这种情况下,代理被告知从Cache
抽象类实现MockCache
类。运行案例后,需要更改文件tool_ Generation_test.py。
Agent的思想定义在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,并且这些任务将并行运行。所有任务完成后,坐席会主动回复结果。
Agent 的 Thought 和 python 上下文都在directory_editor_thought.py 中定义。我们期望元代理可以像这样使用其 python 上下文定义域代理。
GhostFunc
是我们早期开发时用来测试MOSS的一个玩具。它提供装饰器,可以将仅签名函数包装到 LLM 驱动的函数,该函数在调用期间生成代码。
运行测试用例:
venv/bin/python ghostos/demo/src/examples/ghostfunc/get_weather.py
在 get_weather.py 中查看更多详细信息
我们计划在 10 月份发布该项目的第一个版本,该项目应该是一个具有应用程序原型的代理框架,而不是一个应用程序。目前我们专注于自行开发GhostOS
的一些组件。还有很多工作要做...