このリポジトリは、コミュニティ(特にDiscord)向けの AIエージェント基盤 です。
AGIラボ / ChatGPT研究所 のコミュニティ運営で実際に使っているボットをそのまま公開しており、
1つの Discord Bot プロセス上で複数のエージェントを動かせるようになっています。
-
src/core/
Discord 接続、共通設定、ロギング、ユーティリティなどの基盤コード。 -
src/agents/
プラグイン式のエージェント群。
各サブディレクトリが 1 つのエージェント機能を表し、共通のインターフェースでボット本体にフックします。
-
役割
1日のチャット履歴をもとに、コミュニティ向けの日報を自動投稿します。- その日に盛り上がった トピック
- 印象的だった会話や出来事などの ハイライト
- 見落としがちなURLや参考資料への 隠れたお宝リンク
-
実装場所
src/agents/daily_reporter/
-
役割
サーバー内メッセージを Discord 検索 API で取得し、
!csearchで検索結果、!caskで回答(OpenRouter 経由の LLM)を返します。 -
実装場所
src/agents/claude_search/
- Python 3.10 以上
- Discord Bot Token
- Google Gemini API キー
- Anthropic API キー(Claude Agent SDK を使う場合)
-
このリポジトリをクローンします。
git clone <repository-url> cd lab-agent-system
-
依存ライブラリをインストールします。 (
pyproject.tomlを使用します)pip install . -
環境変数を設定します。
.env.exampleをコピーして.envを作成し、各値を入力してください。cp .env.example .env
- Discord Bot Token や APIキー は絶対にコミットしないよう注意してください。
-
ボットを起動します。
python main.py
Docker環境があれば、コマンド一発で起動できます。
-
.envファイルを作成します(上記手順3と同じ)。 -
Docker Composeで起動します。
サーバーを用意せず、GitHub上で毎日自動実行させることができます。
- GitHubリポジトリの Settings > Secrets and variables > Actions を開きます。
- 以下の「Repository secrets」を追加します。
DISCORD_TOKEN: ボットのトークンDISCORD_CHANNEL_ID: 投稿先のチャンネルIDSOURCE_CHANNEL_IDS: 監視対象のチャンネルID(カンマ区切りで複数指定可)GOOGLE_API_KEY: GeminiのAPIキー
- これで毎日 21:00 (JST) に自動的にレポートが投稿されます。
(
Actionsタブから手動実行も可能です)
このプロジェクトは、まずは AGIラボ内の運用を主目的としてメンテナンスしています。 コードを参考にしたり、フォークして自分の環境向けにエージェントを追加したりする使い方を特に想定しています。
このリポジトリに直接エージェントを追加したい場合の基本パターンは以下です。
-
src/agents/配下に新しいディレクトリを作成します(例:my_awesome_agent/)。 -
その中に
__init__.pyを作成し、get_agent()関数でエージェントクラスのインスタンスを返すようにします。 -
エージェントクラスでは、以下のメソッドを任意で実装できます(ダックタイピング):
-
async def on_ready(self, client: discord.Client)ボット起動時に1度呼ばれます。 -
async def on_message(self, message: discord.Message)メッセージ受信時に呼ばれます。
-
-
main.pyで新しいエージェントを読み込むように登録します。 (将来的には自動読み込みにする可能性があります。)
このリポジトリは、ChatGPT研究所で使っているボット実装を 「こんな感じで動かしています」という形で公開しているものです。 コードを読んだり、フォークして好きに改造してもらえると嬉しいです。
Issue や Pull Request も歓迎です!
大きめの変更提案の場合は、先に Discord や Issue などで 「こういうことをやりたいです」と提案いただけると嬉しいです!
本リポジトリは MIT License のもとで公開されています。