Nexus – LLMを活用したスケーラブルなマルチエージェントフレームワーク

近年、 大規模言語モデル(LLM)の急速な進化に伴い、マルチエージェントシステム(MAS)の可能性が大きく広がっています。従来、複雑なタスクの自動化には高度な専門知識と膨大な開発コストが必要でしたが、LLMを組み込むことで、まるで人間のような推論能力をシステムに持たせることが可能になりました。

しかし、従来のMASには、アーキテクチャの複雑さ、ドメインへの適応性の低さ、そしてスケーラビリティの限界といった課題が存在していました。これらの課題を解決するために、軽量かつスケーラブルな新しいフレームワークが求められています。

そこで本記事では、LLMを活用した次世代マルチエージェントフレームワーク「Nexus」を紹介します。Nexusは、YAMLファイルによる簡単な設定、柔軟なマルチスーパーバイザー階層、そしてオープンソースであることによる高い拡張性を特徴としています。Nexusを利用することで、複雑なタスクを効率的に自動化し、開発プロセスを大幅に簡素化することが可能になります。

マルチエージェントフレームワークとは?

近年、大規模言語モデル(LLM)の目覚ましい発展に伴い、マルチエージェントシステム(MAS)の応用範囲が急速に拡大しています。MASとは、複数の自律的なエージェントが協調して、複雑な問題を解決したり、共通の目標を達成したりするシステムのことです。各エージェントは、環境を認識し、他のエージェントと相互作用しながら、自律的に判断し行動します。

従来のMASは、ロボット制御、交通管理、スマートグリッド、ネットワークセキュリティなど、多岐にわたる分野で活用されてきました。しかし、従来型のMASアーキテクチャは、事前に定義されたルールやヒューリスティックなアプローチに依存しており、エージェント間の連携、安全なタスク割り当て、大規模システムでのスケーラビリティといった点で課題が残されていました。

近年では、LLMをMASに組み込むことで、これらの課題を克服し、人間のような高度な推論能力をシステムに付与することが可能になっています。LLMは、中央推論エージェントとして機能し、動的な環境における適応性、協調性、意思決定能力を大幅に向上させます。その結果、マルチモーダル推論、自律的なGUIナビゲーション、複雑な数学的問題解決など、従来は困難だった領域への応用が広がっています。

しかし、既存のLLMベースのMASフレームワークは、アーキテクチャが複雑になりがちで、特定のタスクや関連するタスク群にしか対応できないという問題点があります。また、複雑なコード実装に依存するため、再利用性が低いという課題も存在します。

これらの課題を解決するために開発されたのが、軽量かつスケーラブルなPythonフレームワーク「Nexus」です。Nexusは、YAMLファイルによる容易なアーキテクチャ設計、柔軟なマルチスーパーバイザー階層、そしてオープンソースであることによる高い拡張性を特徴としています。Nexusを利用することで、ソフトウェアエンジニアは、複雑なタスクを効率的に自動化し、開発プロセスを大幅に簡素化することが可能になります。

図1. マルチエージェントシステムの変遷

Nexusフレームワークとは?

Nexusの概要

Nexusは、大規模言語モデル(LLM)を活用した次世代マルチエージェントシステム(MAS)を、容易に構築・管理するための軽量なPythonフレームワークです。従来のMASにおけるアーキテクチャの複雑さや、ドメイン適応性の低さ、スケーラビリティの限界といった課題を解決し、高度な自動化を低コストで実現することを目指しています。

MASの基本的な概念は、複数の自律的なエージェントが協調して複雑な問題を解決したり、共通の目標を達成したりするシステムです。これらのエージェントは、環境を認識し、他のエージェントと相互作用しながら、自律的に判断し、行動します。LLMがMASに組み込まれることで、高度な推論能力や自然言語コミュニケーション能力が付与され、動的な環境における適応性、協調性、意思決定能力が大幅に向上します。

しかし、既存のMASフレームワークは、開発に高度なコーディングスキルを必要としたり、柔軟性に欠けるといった課題がありました。Nexusは、これらの課題を解決するために、以下の特長を備えています:

  • YAMLファイルによる容易なアーキテクチャ設計
  • 柔軟なマルチスーパーバイザー階層
  • オープンソースであることによる高い拡張性

Nexusのアーキテクチャ

Nexusのアーキテクチャは、モジュール設計に基づいており、単一のルートスーパーバイザーと、複数のタスクスーパーバイザーおよびワーカーエージェントで構成されています。これらのコンポーネントは、階層的な実行グラフ内に配置され、タスク委譲の効率化、柔軟性、スケーラビリティを実現します。

  • スーパーバイザー:ユーザーとのインタラクションを仲介し、タスクの分解、エージェントの選択、結果の集約を行います。
  • タスクスーパーバイザー:複雑なタスクを複数のサブタスクに分割し、ワーカーエージェントに委譲します。
  • ワーカーエージェント:スーパーバイザーから割り当てられたサブタスクを実行する専門的な問題解決者です。各ワーカーは、独立した環境で動作し、独自のシステムメッセージと、関連するツール、環境変数、アドホック関数によって定義される専門性を持ちます。
  • メモリ:部分的な結果、メタデータ、関連する指示を格納する集中リポジトリとして機能し、すべてのエージェントが最新のタスク進捗状況を把握できるようにします。
  • ツール:データ処理パイプラインや外部計算リソースなどの特殊な機能をエージェントに提供し、複雑なワークフローを管理するための統一された透過的な環境を促進します。

アーキテクチャは、ルート付き有向グラフとしてモデル化され、エージェント間の関係を表現します。レベル関数は、ルートからの距離に基づいて各エージェントにレベルを割り当て、階層構造を明確化します。

図2. Nexusアーキテクチャの概要

Nexusの主要な特徴

Nexusは、以下の主要な特徴を備えています:

  • 柔軟なマルチスーパーバイザー階層:グローバルオーケストレーターとして機能するルートスーパーバイザーと、タスクのサブセットを専門スーパーバイザーに委譲する機能を提供します。これにより、複雑なタスクを効率的に処理し、スケーラビリティを向上させます。
  • YAMLによるワークフロー定義:プレーンテキストYAMLファイルを使用して、カスタムアーキテクチャとワークフローを設計できます。これにより、システム設計が簡素化され、プログラミングの専門知識が不要になります。
  • 容易なインストールとオープンソースの柔軟性:pipを使用してインストールでき、オープンソースライセンスの下で配布されるため、自由に変更および拡張できます。
  • スケーラビリティ:タスクの複雑さが増すにつれて、新しいエージェントまたはスーパーバイザーノードをシームレスに組み込むことができます。
  • モジュール性:ワーカーエージェントは独立して動作するため、ドメイン固有の機能を簡単に統合または置換できます。
  • 堅牢性階層的な委譲と反復的なフィードバックループにより、個々のエージェントの故障の影響を最小限に抑え、タスクを再割り当てまたは改善できます。

実験結果

Nexusは、コーディングタスク、数学の問題解決、EDAなど、多様な分野で優れた性能を発揮することが実験的に示されています。

  • コーディングタスク:HumanEvalで99%、VerilogEval-Humanで100%のパス率を達成し、最先端の推論言語モデルを上回る性能を示しました。
  • 数学の問題解決:MATHデータセットからランダムに選択された難しい問題をすべて正しく解決し、複雑な推論と問題解決能力を発揮しました。
  • EDA(Electronic Design Automation):VTRベンチマークスイートのタイミングクロージャタスクにおいて、平均30%の省電力を保証しながら、最適化を達成しました。

これらの結果は、Nexusが多様なタスクにおいて、最先端の性能を効率的に実現できることを示しています。また、既存のシステムやLLMとの比較においても、同等以上の性能を発揮することが確認されています。

図3. コーディングタスクの性能比較

Nexusを使ってみる

Nexus は、pipパッケージマネージャーを使用してインストールできます。

$ pip install primisai

# 最新版を使用したい場合はこちら
$ git clone git@github.com:PrimisAI/nexus.git
$ cd nexus
$ pip install -e .

では、まずはLLMのAPIキーの設定です。

import os

llm_config = {
    "api_key": os.getenv("OPENAI_API_KEY"),
    "model": "gpt-3.5-turbo",
    "base_url": "https://api.openai.com/v1",
}

Nexusの利用方法は非常に簡単で、次のようなコードでエージェントを定義できます。

# Create a supervisor
supervisor = Supervisor(
    "ProgrammingTaskCoordinator", 
    llm_config,
    system_message="You are the supervisor for programming tasks. Oversee code analysis and refactoring operations."
)

# Create and register agents
agent1 = Agent(
    "CodeAnalyzer",
    llm_config,
    system_message="You are a coding expert specialized in static code analysis. Evaluate code quality, identify bugs, and suggest improvements."
)
agent2 = Agent(
    "CodeRefactorer",
    llm_config,
    system_message="You are a programming assistant skilled in code refactoring and optimization. Enhance code efficiency, readability, and maintainability."
)

supervisor.register_agent(agent1)
supervisor.register_agent(agent2)

定義したエージェントシステムの実行は、次のようにします。実行後、ユーザープロンプトの入力を促されるので、任意の指示をエージェントAIに入力してください。

# Start an interactive session
supervisor.display_agent_graph()
supervisor.start_interactive_session()

また、次のようにしてマルチエージェントシステムをYAMLで定義することができます。

supervisor:
    name: ProgrammingTaskCoordinator
    type: supervisor
    llm_config:
       model: ${LLM_MODEL}
       api_key: ${LLM_API_KEY}
       base_url: ${LLM_BASE_URL}
    system_message: "You are the supervisor for programming tasks. Oversee code analysis and refactoring operations."
    children:
      - name: CodeAnalyzer
        type: agent
        llm_config:
          model: ${LLM_MODEL}
          api_key: ${LLM_API_KEY}
          base_url: ${LLM_BASE_URL}
        system_message: "You are a coding expert specialized in static code analysis. Evaluate code quality, identify bugs, and suggest improvements."
      - name: CodeRefactorer
        type: agent
        llm_config:
          model: ${LLM_MODEL}
          api_key: ${LLM_API_KEY}
          base_url: ${LLM_BASE_URL}
        system_message: "You are a programming assistant skilled in code refactoring and optimization. Enhance code efficiency, readability, and maintainability."

作成したYAMLは、次のようにして使用します。

from primisai.nexus.config import load_yaml_config, AgentFactory

# Load the YAML configuration
config = load_yaml_config('path/to/your/config.yaml')

# Create the agent structure
factory = AgentFactory()
task_manager = factory.create_from_config(config)

# Start an interactive session
task_manager.start_interactive_session()

まとめ

Nexusは、LLMベースのマルチエージェントシステム(MAS)の構築と管理を簡素化するために設計された軽量なPythonフレームワークです。 Nexusは、柔軟なマルチスーパーバイザー階層を可能にし、YAMLベースのアーキテクチャとワークフロー定義を提供し、モジュール式オープンソース設計を通じてシームレスな統合と拡張を促進することで、MAS開発における重要な課題に対処します。

実験的評価では、Nexus駆動のアーキテクチャは、さまざまなタスクで最先端のパフォーマンスを達成することが示されています。 コーディング領域では、NexusはHumanEvalで99%、VerilogEval-Humanで100%のパス率を達成し、o3-miniやDeepSeek-R1のような現代的な推論言語モデルを上回りました。さらに、Nexusベースのシステムは、複雑な推論と数学的な問題解決において強力な能力を発揮しました。

More Information

  • arXiv:2502.19091, Humza Sami et al., 「Nexus: A Lightweight and Scalable Multi-Agent Framework for Complex Tasks Automation」, https://arxiv.org/abs/2502.19091