GhostOS
、LLM 主導のエージェント フレームワークです。 LLM への MOSS (LLM 指向オペレーティング システム シミュレーション) インターフェイスを提供し、次のことを行います。
GhostOS
LLM エージェントに Turing 完全な 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
まだ実験と探索の初期段階にあります。 10月に最初のバージョンをリリースする予定です。デモ テストケースをぜひ試してみてください。
まず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 に 2 つのことを実行するように依頼します。
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
この場合、エージェントはCache
抽象クラスからMockCache
クラスを実装するように指示されます。ケースの実行後、ファイル tools_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 を参照してください。
このプロジェクトの最初のバージョンを 10 月にリリースする予定です。このプロジェクトは、アプリケーションではなく、アプリのプロトタイプを備えたエージェント フレームワークになる予定です。現在、私たちはGhostOS
のいくつかのコンポーネントを単独で開発することに重点を置いています。まだまだやるべきことはたくさんあります...