Lang-Agentは、LangGraphテクノロジースタックをベースに開発されたAI知能体(エージェント)設定プラットフォームです。ノードのドラッグ&ドロップや線の接続により、限られたプログラム性で複雑なワークフローを構築できるビジュアル・インターフェースを提供します。プロジェクトの設計思想はComfyUIに近く、difyやcozeのように完全にカプセル化されたプラットフォームを提供するのではなく、開発者が自身のビジネスニーズに基づいた専用の機能ノードを作成することを奨励しています。Lang-Agentの核となる特徴は、「状態変数」という概念の導入です。これにより、ワークフロー全体で柔軟にデータを受け渡し、制御することが可能になり、従来のワークフローにおける「前のノードの出力が次のノードの唯一の入力である」という制約を打破し、より精密で複雑なロジック制御が可能になります。プロジェクトはフロントエンドとバックエンドの分離アーキテクチャを採用し、バックエンドはFastAPIをベースとし、フロントエンドはReactFlowとHeroUIを用いて構築されている。
機能一覧
- ビジュアル・プロセス・オーケストレーションドラッグアンドドロップのキャンバスインターフェイスにより、エージェントの実行ロジックを直感的に構築・整理することができます。
- 豊富な内蔵ノードこのシステムには、開始、終了、ユーザー入力、LLM(大規模言語モデル)、カウンター、文書読み込み、コード実行、ベクトルの保存と呼び出しなど、さまざまなコアノードが組み込まれている。
- 状態変数管理ノードの入出力やエッジの条件判定に使用できるカスタム・グローバル状態変数をサポートし、ワークフローの正確な制御を可能にします。
- プレハブ代理店直接使用できる2つの構築済みエージェントの統合:
ReactAgent
(外部ツールを自律的に呼び出す能力)とSupervisorAgent
(自律的に他のエージェントを呼び出す能力)。 - モデルとベクトルライブラリの設定また、PostgresやMilvusなどの様々なベクトル・データベースとのドッキングもサポートしています。
- ツールコール(MCP)の設定:: ツールコールを必要とするシナリオのためのMCP(大規模言語モデルのための外部サービスへのアクセスを提供するツール)の設定のサポート。
- 高い拡張性カスタムノード開発のための明確なガイドラインを提供し、開発者は特定のビジネスシナリオに合わせてフロントエンドコンポーネントとバックエンドロジックを簡単に拡張できます。
- プロセスのインポートとエクスポート設定されたエージェントワークフローのJSONファイルへのエクスポート、またはJSONファイルからのインポートをサポートし、共有と再利用を容易にします。
ヘルプの使用
Lang-Agentはフロントエンド(lang-agent-frontend)とバックエンド(lang-agent-backend)の2つの部分から構成されており、使用する前にそれぞれインストールして起動する必要があります。
インストールとスタートアップ
1.プロジェクトコードのクローニング
まず、プロジェクトのソースコードをGitHubからローカルにクローンする。
git clone https://github.com/cqzyys/lang-agent.git
2.バックエンドのインストールとスタートアップ(lang-agent-backend)
バックエンド使用詩パッケージ管理を行う。
- 初期化環境バックエンドのプロジェクト・ディレクトリに移動し、Poetryを使って依存関係をインストールする。
cd lang-agent-backend poetry env use python poetry shell poetry install
- プロジェクトの開始以下のコマンドを実行して、バックエンド・サービスを開始する。
python -m lang_agent.main
3.フロントエンドのインストールと起動(lang-agent-frontend)
フロントエンドはパッケージ管理にYarnを使っている。
- 依存関係のインストールフロントエンド・プロジェクトのディレクトリに移動し、Yarnを使って依存パッケージをインストールする。
cd lang-agent-frontend yarn install
- プロジェクトの開始以下のコマンドを実行して、フロントエンド開発サーバーを起動します。
yarn dev
起動に成功したら http://localhost:8820
Lang-Agentの操作インターフェイスに入る。
コア機能の操作
1.環境構成
エージェントの構築を開始する前に、いくつかの基本的な設定を行う必要があります。
- モデル構成:
- 上部のナビゲーションバーにある[Model Configuration]をクリックします。
- ページの右上にある[+]アイコンをクリックして、新しいモデル接続を作成します。
- なモデルのユニークなカスタム名。
- 類型論セレクト
llm
(言語モデルノード用)またはembedding
(ベクトル化されたノードの場合)。 - 用水堀現在のところ、OpenAI互換のチャンネルのみがサポートされています。
- モデル接続パラメータモデルのAPIアドレス、キー、その他のパラメータを入力します。
- ベクター・ライブラリーの構成:
- Vector Library Configuration]タブをクリックします。
- 新しいベクターライブラリを設定するには、[+]アイコンをクリックします。
- なベクター・ライブラリーの一意な名前。
- 類型論:: 現在サポートされている
postgres
歌で応えるmilvus
. - ベクターライブラリの接続アドレス(URI)、ユーザー名、パスワードを入力します。
- モデルの埋め込みモデルコンフィギュレーションで設定されているものをお選びください。
embedding
モデル
2.エージェントの設定
これがこのプロジェクトの核となる機能で、視覚的なインターフェイスを通してエージェントを構築する。
- エージェントの作成:
- エージェント設定]タブをクリックし、[エージェントの追加]カードをクリックして設定ページに入ります。
- 設定ページは左右のセクションに分かれている。リソースツリー右側はキャンバスワークフローの構築に使用される。
- ビルド・プロセス:
- ノードのドラッグ&ドロップ必要なノード(例:"Start Node", "LLM Node", "Input Node")を左のリソースツリーから右のキャンバスにドラッグ&ドロップします。
- コンフィギュレーション・ノード:
- スタートノード各エージェントに1つずつ設定します。ここで状態変数例えば、デフォルトの
messages
対話履歴を保存するために、カスタム変数(たとえばcounter
(数えるため)。 - LLMノード:: これがインテリジェントな対話を可能にする核心である。設定された
llm
モデルで、システム・プロンプトとユーザ・プロンプトを書くことができます。プロンプトは次の構文で状態変数を使うことができます。{{variable_name}}
もしかしたら{{messages['node_name']}}
. - 入力ノードは、ユーザーからの入力を受け取り、それを指定された状態変数(通常は
messages
).
- スタートノード各エージェントに1つずつ設定します。ここで状態変数例えば、デフォルトの
- 接続ノード:
- デフォルト側あるノードの右のドットを別のノードの左のドットにドラッグすると、実行パスができます。これは、ソース・ノードが実行された後、次にターゲット・ノードが実行されることを意味する。
- 条件付きサイド接続後、エッジに実行条件を設定することができる。この条件式は状態変数で判定できる。例えば、カウンタ変数
{{counter}}
次のノードは、そのノードの値が5より小さい場合にのみ実行される。これにより、ループや分岐ロジックを構築することができます。
- 運転と試運転:
- 設定が完了したら、キャンバス上部の[Save]ボタンをクリックします。
- 実行]ボタンをクリックすると、エージェントが起動します。
- エージェントと対話し、インターフェースの右下隅にあるチャットボットで実行結果を見ることができます。
アプリケーションシナリオ
- インテリジェントなカスタマーサービスとQ&Aボット
まずユーザーの質問を受信し、次にベクトル・リコール・ノードによって知識ベースから関連情報が検索され、最後に検索された情報がユーザーの質問とともにLLMノードに渡され、最終的な回答が生成されるというプロセスを構築することができる。 - コンテンツの自動生成
詩人エージェントは、「LLMノード」から詩の一行を生成し、「カウンタ・ノード」と「条件付きエッジ」を使ってそれをループし、完全な詩を自動的に生成するように設計することができる。カウンタ・ノード」と「条件付きエッジ」を使ってループすることで、完全な詩を自動的に生成することができる。 - 複雑なタスクを処理するインテリジェント
用いるSupervisorAgent
このようにして、マスターエージェントは、複雑なタスクを共同で行うために、ユーザーの指示に従って、異なるタスク(例えば、データクエリ、ファイル処理)に特化した他のサブエージェントを呼び出すことを決定することができます。 - コードの生成と実行
ユーザーは、計算要件を提示し、「LLMノード」を通じてPythonコードを生成し、「コード実行ノード」にコードを渡して実行し、結果を返すことで、シンプルなプログラミング・アシスタントを実現できる。
品質保証
- Lang-Agentと他のAgentプラットフォーム(DifyやCozeなど)との違いは何ですか?
Lang-Agentの設計コンセプトはComfyUIに近く、完全にカプセル化されたアプリケーション・プラットフォームを提供するのではなく、ユーザがビジネス・ニーズに応じてカスタム・ノードを開発することで機能を拡張することを奨励しています。その核となる利点は、「状態変数」によってより柔軟なプロセス制御とデータ転送を実現し、限定的ではあるが強力なプログラマビリティを提供することである。 - 状態変数」とは何か?どのような働きをするのか?
状態変数」は、エージェントの内部動作中のグローバル辞書として理解できます。異なるノード間でデータを渡すために使用したり、条件側の論理判断を制御するために使用することができます。例えばcount
変数がループするたびに「カウンタ・ノード」を使って1ずつ加算し、「条件付きエッジ」を使って{{count}}
ある値に達したかどうかで、ループを終了するかどうかが決まる。 - Lang-Agentに新しい関数ノードを追加するには?
開発者はフロントエンドとバックエンドの両方を拡張する必要がある。フロントエンドでは、新しいReactコンポーネントを指定されたディレクトリ(.tsx
ファイル)でノードのインターフェースと入力パラメータを定義します。バックエンドでは、新しいPythonクラスファイル(.py
ファイル)でノードのビジネス・ロジックを定義します。詳細な擬似コードとディレクトリ構造は公式ドキュメントに記載されています。 ReactAgent
歌で応えるSupervisorAgent
何が違うのか?ReactAgent
は、大規模な言語モデルを自律的に外部ツール(Tools)を呼び出して、MCPコンフィギュレーションで事前に定義する必要があるタスクを実行させるエージェントです。SupervisorAgent
このエージェントは、タスクそのものを直接実行するのではなく、指示に基づいて、タスクを完了させるためにどの「再利用可能なエージェント」を呼び出すかを決定する「スーパーバイザー」エージェントである。