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
的一些元件。還有很多工作要做...