Elixirで自律型AIエージェントを構築!純粋関数型の分散マルチエージェントフレームワーク — jido

agentjido/jidoElixir1.5k

Jidoは、Elixir(エリクサー)というプログラミング言語で「自律的に動くソフトウェアの分身(エージェント)」を作るためのフレームワークです。Jidoの名前は日本語の「自動」に由来しており、エージェントの状態変更を「レシピのように再現可能な純粋なデータ変換」として扱い、外部への影響(メッセージ送信やプロセス起動など)は「指示書(ディレクティブ)」として分離する設計が特徴です。複数のエージェントが協力して動く仕組みや、親子関係の管理、有限状態マシンによるワークフロー制御などが組み込まれており、AIチャットボットや自動化システムなどの複雑なマルチエージェントシステムを本番環境で安定稼働させたい開発者に向いています。LLM(大規模言語モデル)との連携パッケージも用意されており、AI統合も容易です。

🔥 なぜ話題?

AIエージェントの構築が大きなトレンドとなる中、Elixir/OTPの高い並行処理能力と耐障害性を活かしつつ、テストしやすい純粋関数型の設計でマルチエージェントシステムを構築できる点が注目されています。特にLLM連携パッケージを含むエコシステムの充実により、AI時代の分散エージェント開発基盤として関心が高まっています。

💡 こう使える!

例えば、カスタマーサポートの自動応答システムを作る場面で、問い合わせ内容を分析するエージェント・回答を生成するAIエージェント・エスカレーション判断をするエージェントの3つを定義し、Jidoの親子階層とシグナルルーティングで連携させることで、複数のAIエージェントが協力してお客様の質問に自動対応する仕組みを構築できます。

ユースケース: 複数のAIエージェントが協力して動く自動化システムやチャットボット、ワークフロー管理システムを構築する際に使う開発フレームワーク。

  • エージェントの状態変更と外部への作用を完全に分離する純粋関数型設計で、テストや再現性に優れる
  • 親子階層管理・有限状態マシン・シグナルルーティングなどマルチエージェント連携機能が充実
  • LLM連携(jido_ai)やCloudEventsベースのメッセージング(jido_signal)など拡張エコシステムが揃っている
GitHubで見る →

🤖 Autonomous agent framework for Elixir. Built for distributed, autonomous behavior and dynamic workflows.

技術情報

言語

Elixir

ライセンス

Apache-2.0

最終更新

2026-03-06

スター数

1,475

フォーク数

76

Issue数

8

トピック

agentaiartificial-intelligenceelixirevent-driven-architecturefunctional-programmingorchestrationworkflow

技術詳細

アーキテクチャ・設計思想

  • 純粋関数型エージェント: Elm/Reduxに着想を得た設計。エージェントは不変(イミュータブル)なデータ構造で、cmd/2 が唯一のコア操作。同じ入力には常に同じ出力を返す純粋関数として動作する
  • ディレクティブパターン: 状態変更はアクション内で行い、外部への副作用(シグナル送信、子プロセス起動など)はディレクティブとして記述。ランタイム(AgentServer)がディレクティブを解釈・実行する
  • State Operations: SetStateReplaceStateDeleteKeysSetPathDeletePath の5種類。ストラテジー層で処理され、ランタイムには到達しない

ディレクティブ一覧

ディレクティブ用途
Emitシグナルの送信
Errorエラーの通知
Spawn汎用BEAMプロセスの起動
SpawnAgent子エージェントの起動(階層追跡付き)
StopChild追跡中の子エージェントの停止
Schedule遅延メッセージのスケジューリング
Stopエージェントプロセスの停止

実行ストラテジー

  • Direct: 単純なワークフロー向けの直接実行
  • FSM(有限状態マシン): 状態駆動型ワークフロー向け
  • カスタムストラテジー: プロトコルベースで独自の実行パターンを定義可能

エコシステム

パッケージ役割
req_llmLLM API向けHTTPクライアント
jido_action検証付きの合成可能なアクション、AIツール統合
jido_signalCloudEventsベースのメッセージ封筒、ルーティング、Pub/Sub
jido_aiAI/LLM統合

プラグインシステム

  • 再利用可能なケイパビリティモジュールでエージェントを拡張
  • プラグインごとに状態を分離し、スキーマの自動マージに対応
  • 初期化やシグナルハンドリングのライフサイクルフック

OTPランタイム統合

  • GenServerベースのAgentServerで本番デプロイ
  • 親子エージェント階層のライフサイクル管理
  • 設定可能なルーティング戦略によるシグナル配信
  • マルチテナント向けのインスタンススコープドスーパービジョン
  • ワーカープール(プリウォームされたエージェントプール)によるスループット向上
  • 永続化・ストレージ(Hibernate/Thaw)対応
  • 宣言的・動的cronスケジューリング

対応環境

  • Elixir: 1.17以上
  • Erlang/OTP: 26以上

スキーマ検証

  • NimbleOptions または Zoi によるスキーマ検証に対応

テスト・品質管理

mix test          # テスト実行
mix quality       # formatter, dialyzer, credo を一括実行

ライセンス

  • Apache License 2.0(商用利用可能)

インストール・クイックスタート

Igniter を使う方法(推奨)

mix igniter.install jido

このコマンドで依存関係の追加、インスタンスモジュールの作成、設定ファイルの生成、スーパーバイザーツリーへの追加が自動で行われます。

サンプルエージェント付きで始める場合:

mix igniter.install jido --example

手動インストール

mix.exs に追加:

def deps do
  [{:jido, "~> 2.0"}]
end

インスタンスモジュールを定義し、スーパーバイザーツリーに追加:

defmodule MyApp.Jido do
  use Jido, otp_app: :my_app
end

参考になる外部の関連記事

関連リポジトリ

AIへの「話しかけ方」が14万人に支持された世界最大のプロンプト集 — prompts.chat

f/prompts.chatHTML157.4k

prompts.chatは、ChatGPTやClaude、Geminiなど様々なAIチャットツールで使える「お手本の質問文(プロンプト)」を集めた世界最大のオープンソースライブラリです。2022年12

写真1枚でリアルタイム顔入れ替え!ワンクリックでディープフェイク映像を生成 — Deep-Live-Cam

hacksider/Deep-Live-CamPython90.5k

Deep-Live-Camは、たった1枚の写真を用意するだけで、ウェブカメラの映像やビデオの中の顔をリアルタイムに別人の顔に入れ替えられるソフトウェアです。「顔を選ぶ→カメラを選ぶ→ライブボタンを押す

AIコーディング助手の「記憶喪失」を解決!セッションをまたいで文脈を自動保存・復元 — claude-mem

thedotmack/claude-memTypeScript56.7k

claude-memは、AIコーディングツール「Claude Code」のプラグインで、コーディングセッション中にClaudeが行ったすべての操作を自動的に記録し、AIで圧縮・要約した上で、次回のセッ

LINEもQQもSlackも!あらゆるチャットアプリにAIボットを一発導入できる万能プラットフォーム — AstrBot

AstrBotDevs/AstrBotPython24.2k

AstrBotは、さまざまなチャットアプリ(メッセージングアプリ)にAIチャットボットを簡単に導入できるオープンソースのプラットフォームです。QQ、Telegram、Slack、Discord、LIN

メールや会議の記憶を「知識グラフ」に変換するAI同僚 — あなたの仕事をローカルで支える — rowboat

rowboatlabs/rowboatTypeScript11.9k

Rowboatは、メールや会議メモなどの仕事の情報を自動的に「知識グラフ(情報同士のつながりを地図のように整理したもの)」として蓄積し、その文脈を活かして仕事を手伝ってくれるAIアシスタントです。たと