企業内インフラやローカルマシン上でAgentGPTをセルフホスト(自己ホスト)することにより、開発チームやセキュリティ担当者は、社外秘プロンプトや事業目標、機密データをパブリッククラウドのAPIに送ることなく自律型AIエージェント(Autonomous Agents)を実行できます。自律型エージェントはタスクの分解、実行結果の評価、追加タスクの生成を再帰的に繰り返すため、ローカルまたはプライベートな推論エンドポイントを活用することで、クラウドAPIの従量課金やレート制限の課題も抜本的に解決できます。
Reworkdがオープンソースとして公開したAgentGPTは、Next.jsフロントエンド、FastAPIプラットフォームバックエンド、およびMySQLデータベースで構成されるWebベースの自律型エージェント実行環境です。標準ではOpenAIのクラウドサービスに接続しますが、Dockerコンテナネットワーク、環境変数、そしてOpenAI互換のローカル推論エンジン(Ollama、LocalAI、vLLMなど)を適切に構成することで、完全なオフライン・プライベート環境を構築可能です。
システム構成とコンテナネットワークの落とし穴
Docker Composeを用いたAgentGPTのセルフホスト構成は、以下の3つの主要サービスで成り立っています。
- フロントエンド (
next): ポート3000で稼働。エージェントの作成、目標設定、実行プロセスのリアルタイム可視化を提供。 - バックエンド (
platform): ポート8000で稼働。FastAPIベースで動作し、エージェントの実行ループ、タスク計画、LLMとのAPI通信を統括。 - データベース (
db): ポート3306で稼働。MySQLを用いてエージェントの実行履歴やタスク状態を永続化。
+-------------------------------------------------------------------------+
| Docker 内部ネットワーク (agentgpt-network) |
| |
| [ フロントエンド: Next.js ] <---> [ バックエンド: FastAPI ] <---> [ DB ] |
| (:3000) (:8000) (:3306)|
+----------------------------------------------|--------------------------+
| (REWORKD_PLATFORM_OPENAI_API_BASE)
v
+--------------------------------------------+
| ホストOS / プライベート推論クラスタ |
| host.docker.internal:11434/v1 |
| [ Ollama / vLLM / LocalAI 互換エンドポイント]
+--------------------------------------------+
コンテナからホストOSへの通信境界
ローカル推論モデルを接続する際、最も頻発するトラブルがAPIの接続先を http://localhost:11434 や http://127.0.0.1:11434 と指定してしまう設定ミスです。Dockerコンテナ内部における localhost はコンテナ自体のネットワーク名前空間を指すため、ホストOS上で動作している推論サーバーには到達できません。
適切な接続方法は以下の通りです。
- macOSおよびWindows(Docker Desktop):
http://host.docker.internal:11434/v1を指定します。 - Linux環境:
docker-compose.yml内のplatformサービスにextra_hosts: ["host.docker.internal:host-gateway"]を定義し、ホストゲートウェイへの名前解決を有効化します。 - 同一Composeネットワーク: OllamaやLocalAIをAgentGPTと同じDocker Compose内で起動する場合は、サービス名(例:
http://ollama:11434/v1)を直接指定します。
ステップ1:ローカル/プライベートLLMエンドポイントの準備
使用する推論エンジンは、OpenAI互換のHTTP RESTエンドポイント(特に /v1/chat/completions および /v1/models)を提供している必要があります。
選択肢A:Ollamaを使用する場合(ローカル開発・ワークステーション向け)
Ollamaを全ネットワークインターフェースにバインドして起動し、Dockerコンテナからの着信を許可します。
# Linuxでの起動例(環境変数を指定して起動)
OLLAMA_HOST=0.0.0.0:11434 ollama serve
論理的推論力とJSON構造の出力精度に優れたモデルを取得します。
ollama pull qwen2.5:14b
# または
ollama pull llama3.1:8b
ターミナルからエンドポイントの応答を確認します。
curl http://localhost:11434/v1/models
選択肢B:vLLMを使用する場合(高並列・GPUサーバー環境向け)
GPUを搭載したプライベートサーバーでvLLMのOpenAI互換サーバーを起動します。
python3 -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.1-8B-Instruct \
--host 0.0.0.0 \
--port 8000
ステップ2:AgentGPTリポジトリの取得と環境変数設定
公式リポジトリをクローンします。
git clone https://github.com/reworkd/AgentGPT.git
cd AgentGPT
環境変数テンプレートをコピーします。
cp .env.example .env
.env の主要設定項目
ルートディレクトリの .env(手動ビルド時は platform/.env も含む)を開き、以下のように設定します。
# ----------------------------------------
# LLMエンドポイント設定
# ----------------------------------------
# host.docker.internal 経由でホストOS上の推論サーバーを指定
# 重要:末尾にスラッシュを付けないでください(/v1 と指定し、/v1/ とはしない)
REWORKD_PLATFORM_OPENAI_API_BASE=http://host.docker.internal:11434/v1
# OpenAI SDKの仕様上、キーに空文字は許可されません
# ローカル推論エンジン側では検証されないため、ダミー文字列を入力します
OPENAI_API_KEY=local-secret-key
# ----------------------------------------
# データベース設定
# ----------------------------------------
DATABASE_URL=mysql://root:password@db:3306/agentgpt
MYSQL_ROOT_PASSWORD=password
MYSQL_DATABASE=agentgpt
# ----------------------------------------
# 認証・セキュリティ設定
# ----------------------------------------
NEXTAUTH_SECRET=generate-a-secure-random-32-byte-hex-key
NEXTAUTH_URL=http://localhost:3000
注意点:
REWORKD_PLATFORM_OPENAI_API_BASEの末尾に/chat/completionsや余分なスラッシュ/を含めないでください。AgentGPTのバックエンドコードがパスを自動補完するため、スラッシュが重複すると//chat/completionsとなり、HTTP 404エラーの原因となります。
ステップ3:Linux環境向け docker-compose.yml の修正
Linuxホスト上で稼働させる場合、docker-compose.yml の platform サービス定義にホスト解決用の設定を追加します。
services:
platform:
build:
context: ./platform
dockerfile: Dockerfile
environment:
- REWORKD_PLATFORM_OPENAI_API_BASE=http://host.docker.internal:11434/v1
- OPENAI_API_KEY=local-secret-key
- DATABASE_URL=mysql://root:password@db:3306/agentgpt
ports:
- "8000:8000"
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- db
frontend:
build:
context: ./next
dockerfile: Dockerfile
ports:
- "3000:3000"
environment:
- NEXTAUTH_URL=http://localhost:3000
- NEXTAUTH_SECRET=generate-a-secure-random-32-byte-hex-key
depends_on:
- platform
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: agentgpt
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
ステップ4:コンテナのビルドと起動
Docker Composeを実行して各サービスを立ち上げます。
docker compose up -d --build
ログを確認し、バックエンドがMySQLと正常に接続されたことを確かめます。
docker compose logs -f platform
起動が完了したら、ブラウザから http://localhost:3000 にアクセスします。
ステップ5:UI設定とエージェントワークフローの実行
- 設定画面の表示: AgentGPTの左下サイドバーにある歯車アイコン(Settings)をクリックします。
- モデル名の指定: ローカル推論サーバーで実行中のモデル名(例:
qwen2.5:14bまたはllama3.1:8b)を入力します。 - パラメータの調整:
- Temperature:
0.2〜0.4に設定します。自律型エージェントは厳密なタスク分解とJSONパースを要求するため、温度を高く設定しすぎるとフォーマット崩れや無限ループの原因となります。 - Loop Cap(最大実行ループ数): ローカル推論の負荷を考慮し、初回は5〜10ループ程度に制限しておくことを推奨します。
- Temperature:
- エージェントの作成:
- Agent Name:
Local-System-Analyst - Goal:
オンプレミス環境におけるAIエージェント運用のネットワークボトルネックを分析し、優先度の高い対策を3つ提示せよ。 - Deploy Agent をクリックします。
- Agent Name:
- 実行プロセスの確認: 目標が複数のサブタスクに分解され、ローカルLLMへの問い合わせを通じてタスクが順次実行・評価され、最終結果が生成される流れを確認します。
実運用の留意点とモデル選定指針
1. 自律型エージェントに求められるモデル性能
自律型エージェントの実行ループは、一般的なチャットボットよりもはるかに高度なモデル能力を必要とします。
- 複雑なSystem Promptの指示に従い、一貫して正しいJSON構文を出力できること。
- 与えられた目標が完了したかを論理的に判定し、同じタスクを無限に繰り返さないこと。
パラメータ数が7B未満の小型モデルやインストラクション調整が不十分なモデルでは、構文エラーや判断不能によるループ停止が頻発します。以下のモデル構成を推奨します。
- 最小動作基準: Llama-3.1-8B-Instruct または Qwen-2.5-7B-Instruct
- 推奨実用基準: Qwen-2.5-14B/32B または Llama-3.1-70B(量子化モデルでの運用)
2. コンテキスト長(Context Window)の確保
複数ステップにわたるタスク実行では、エージェントの対話履歴が急激に増大します。
- Ollamaを使用する場合、カスタム
Modelfileを作成してPARAMETER num_ctx 16384などを明示的に指定し、プロンプトの不意な切り捨てを防止してください。
3. リポジトリのステータスに関する留意事項
GitHubの reworkd/AgentGPT リポジトリは2026年1月にアーカイブ(読み取り専用化)されています。既存のコードベースは自律型エージェントのアーキテクチャとして完成度が高く、社内検証やセルフホスト環境の構築に有用ですが、継続的な本番運用を行う場合は、内部でDockerイメージを固定し、依存ライブラリのバージョン管理を独自に実施することを推奨します。