【第1回】ローカルAIで作るマルチエージェント記事作成システム|Gemma 4・Ollama・WSL最小実装編

スポンサーリンク
この記事は約18分で読めます。

ローカルAIを使えば、外部API費用をかけずにマルチエージェント型の記事作成システムを構築できます。
本記事では、Ollama上のGemma 4を使い、Planner・Writer・Reviewerの3つの役割を持つAIエージェントを実装します。
第1回では、Windows 11+WSL環境で、キーワード入力からHTML記事保存までを行う最小構成を作成します。

ローカルAIでマルチエージェントを作る

AIエージェントという言葉を聞くと、クラウドAPIや複雑な自動化システムを想像するかもしれません。

しかし、最小構成であれば、ローカルPC上でも マルチエージェント型のAIシステム を作ることができます。

今回作成するのは、次のような仕組みです。

キーワードを入力

Planner AI が記事設計

Writer AI が本文作成

Reviewer AI が品質確認

Writer AI が修正

HTMLファイルとして保存

このように、1つのAIにすべてを任せるのではなく、複数の役割に分けて処理するのが、今回のマルチエージェント構成です。

このシリーズで作るもの

このシリーズでは、最終的に ローカルAIを使ったマルチエージェント記事作成システム を段階的に作っていきます。

シリーズ構成の例は以下です。

第1回:Gemma 4・Ollama・WSLで最小実装

第2回:Planner / Writer / Reviewer の役割を整理する

第3回:途中結果を保存して品質を安定させる

第4回:MCP風ツールを正式なMCP構成へ近づける
   save_article / read_article / save_log を整理

第5回:Researcher AIとWeb検索MCPで最新情報に対応する

第6回:イベント駆動型マルチエージェントへ発展させる

本記事はその第1回として、まず 動く最小構成 を作ることを目的にします。

今回作るシステム

今回の作るシステムでは、ローカルLLMのGemma 4を使い、3つのAIエージェントが連携して記事を作成します。

Planner AI:記事設計担当
Writer AI:記事作成担当
Reviewer AI:品質確認担当

このシステムは、Gemma 4を3つ起動せずに、1つのGemma 4を役割別プロンプトで複数回呼び出す 構成をとります。

なぜマルチエージェント構成にするのか

記事作成AIは、1つのAIだけでも作れます。

しかし、すべてを1回のプロンプトで処理させると、次のような問題が起きやすくなります。

・記事の構成が曖昧になる
・本文が長くなると一貫性が崩れる
・レビューや修正が弱くなる
・どの工程で問題が起きたか分かりにくい

そこで、今回は処理を3つのAI役割に分けます。

Planner:最初に記事の設計を作る
Writer:設計に沿って本文を書く
Reviewer:記事を確認して修正点を出す

このように役割を分けることで、AIによる記事作成の流れが整理され、後から改善しやすくなります。

今回の開発環境

今回の開発環境は以下です。

OS:Windows 11
開発環境:WSL Ubuntu
エディタ:VS Code Remote WSL
LLM実行:Windows側 Ollama
使用モデル:gemma4:e4b
Python実行:WSL側

構成イメージは次の通りです。

Windows 11
├ Ollama
│ └ gemma4:e4b

└ WSL Ubuntu
└ Pythonプログラム
├ Planner AI
├ Writer AI
├ Reviewer AI
└ HTML保存処理

ポイントは、OllamaはWindows側で動かし、PythonプログラムはWSL側で動かす ことです。

WSLとVS CodeでUbuntu環境に接続する

今回のPythonプログラムは、Windows側ではなく WSL Ubuntu側 で作成・実行します。
そのため、VS CodeからWSL Ubuntuに接続して作業できるようにしておくと便利です。

WSLとは

WSLは、Windows上でLinux環境を使うための仕組みです。
Windows 11の中でUbuntuを動かせるため、Linux向けのPython開発やコマンド操作を行いやすくなります。

今回の構成では、次のように使います。

Windows 11
├ Ollama
│ └ Gemma 4

└ WSL Ubuntu
└ Pythonプログラムを作成・実行

VS CodeのWSL拡張機能とは

VS Codeには、WSL環境に接続して作業するための拡張機能があります。
これを使うと、Windows側のVS Codeから、WSL Ubuntu内のファイルを直接開いて編集できます。

インストールする拡張機能は、Visual Studio Code WSLです。

識別子:ms-vscode-remote.remote-wsl

VS Codeの拡張機能画面で WSL と検索し、Microsoft提供の拡張機能をインストールします。

WSL拡張機能のインストールが完了したら、VS Code左下の青色のアイコンをクリックすることでUbuntu環境に接続できます。

Windows 11上のOllamaとGemma 4、WSL Ubuntu上のPython環境を連携させ、Planner AI・Writer AI・Reviewer AIの3つのAIが記事を作成し、HTMLとしてローカル保存する流れを示した構成図
ローカルAIマルチエージェント構成

最小実装で作る範囲

第1回では、動く最小構成を目指すため、機能をあえて絞ります。

今回作る機能

・キーワード入力
・Planner AIによる記事設計
・Writer AIによる本文作成
・Reviewer AIによる品質チェック
・Writer AIによる修正
・HTMLファイル保存

今回は扱わない機能

・Web検索
・画像生成
・外部CMSへの投稿
・イベント駆動化
・正式なMCPサーバー化

ファイル構成

今回のファイル構成は以下です。

article-agent/  #作業フォルダ
├ main.py
├ llm_client.py
├ agents/
│ ├ planner.py
│ ├ writer.py
│ └ reviewer.py
├ mcp_client.py
├ mcp_server.py
└ output/
└ final_article.html

それぞれの役割は以下です。

ファイル役割
main.py全体の実行管理
llm_client.pyOllama上のGemma 4を呼び出す共通処理
planner.pyPlanner AIの処理
writer.pyWriter AIの処理
reviewer.pyReviewer AIの処理
mcp_client.py保存処理の呼び出し口
mcp_server.pyHTML保存処理
output/生成記事の保存先

次から、手を動かしながら、ローカルAIを利用したマルチエージェント記事作成システムを実装していきます。

WSL側で作業フォルダを作る

まず、WSL Ubuntuで作業フォルダを作成します。

次に、Python仮想環境を作成します。

Python仮想環境に、OllamaをPythonから呼び出すため、Pythonライブラリをインストールします。

Python仮想環境とは

Python仮想環境は、プロジェクトごとにPythonライブラリを分けて管理するための仕組みです。

今回のように ollama ライブラリを使う場合、Windows全体やWSL全体に直接インストールするのではなく、作業フォルダ内に専用の環境を作ります。

article-agent/
└ .venv/

こうしておくと、他のPythonプロジェクトとライブラリが混ざりにくくなります。

Windows側OllamaにGemma 4を用意する

Windows側のPowerShellで、Gemma 4を取得します。

モデル一覧を確認します。

以下のように gemma4:e4b が表示されれば準備完了です。

WSLからOllamaに接続できない問題

最初に python main.py を実行しWSLからOllamaに接続しようとした際に、次のエラーが出る場合があります。

ConnectionError: Failed to connect to Ollama.

これは、WSL2が独立した仮想ネットワーク(別のIPアドレス)で動いているためです。

WSLのPythonからWindowsのOllamaへの接続は、別のパソコンに接続するのと同じ扱いになります。

Windows側では以下が成功しても、

WSL側では以下が失敗することがあります。

これは、Windows側の localhost とWSL側の localhost が同じではないためです。

localhostの違い

Windows側の localhost は、Windows自身を指します。

Windows側 localhost

Windows上のOllama

一方、WSL側の localhost は、WSL自身を指します。

WSL側 localhost

WSLの中

そのため、OllamaをWindows側で動かしている場合、WSLからはWindows側のIPアドレスを指定する必要があります。

OLLAMA_HOSTを設定する

WSLからWindows側Ollamaへ接続できるようにするため、Windowsのユーザー環境変数に以下を設定します。

変数名:OLLAMA_HOST
変数値:0.0.0.0:11434

この設定は、OllamaをWindows内の localhost だけでなく、外部IPからも接続できるように待ち受けさせるためのものです。

通常、Ollamaは127.0.0.1:11434で待ち受けいます。
これは、Windows自身からだけ接続できる状態です。

一方で、0.0.0.0:11434のように設定すると、PC上のすべてのアドレスから接続できるようになります。

環境変数を確認する

PCを再起動したあと、PowerShellで以下を確認します。

0.0.0.0:11434のように表示されれば設定されていればOKです。

次に、Ollamaの待ち受け状態を確認します。

以下のように表示されれば、外部接続も受け付ける状態です。

WSLからOllamaに接続確認する

WSLから接続するため、PowerShellでipconfigコマンドを使ってWindows側のIPv4アドレスを表示します。

表示されたIPv4アドレスが、192.168.x.xの場合は、WSL側で以下を実行します。

接続に成功すると、"name":"gemma4:e4b","model":"gemma4:e4b"を含むJSON形式のレスポンスが返ります。

以上が確認できれば、WSLからWindows側Ollamaに接続できる状態といえます。

補足:OllamaをWSL側で動かして接続する

OllamaはWindows側だけでなく、WSL Ubuntu側にインストールして使うこともできます。
その場合、PythonプログラムとOllamaが同じWSL内で動くため、接続先は localhost:11434 にできます。

一方で、WSL側にOllamaを入れてGemma 4(9.6 GB)を使う場合、WSLの仮想ディスク容量を圧迫したりGPU設定で問題が生じる可能性がありました。

そこで今回は、AIエージェント入門|ローカルLLMで学ぶチャットとJSON出力【第1週】からの作業で使用実績のある動作環境をそのまま利用しています。

llm_client.pyを作成する

WSLからOllamaに接続できたら、Python側の共通クライアントを作ります。

llm_client.py

ここでの 192.168.x.x は、ipconfigコマンドで確認した実際のWindows側IPv4アドレスに置き換えて使用します。

Planner AIを作成する

Planner AIは、記事設計を担当します。

agents/planner.py

Writer AIを作成する

Writer AIは、記事本文の作成と修正を担当します。

agents/writer.py

Reviewer AIを作成する

Reviewer AIは、記事の品質確認を担当します。

agents/reviewer.py

MCP風の保存処理を作成する

今回は正式なMCPサーバーではなく、まずは MCP風の保存ツール として関数で実装します。

mcp_server.py

mcp_client.py

この段階では正式なMCPではありませんが、将来MCPツール化しやすいように、save_article という形で処理を分けています。

main.pyで全体をつなぐ

main.py

実行する

WSL側で実行します。

キーワード入力待ちの状態になるので、作成する記事のキーワードを入力します。

Gemma 4ローカル・マルチエージェント記事作成システム
--------------------------------------------------
記事キーワードを入力してください:

キーワードを入力すると記事作成処理が始まり、以下の様に処理が進みます。
(キーワード:ブロックチェーン)の場合

記事の作成が成功すると、article-agent/output/フォルダに、HTML記事(final_article.html)が保存されます。

キーワードがブロックチェーンで作成された記事を以下に添付します。

実行時の注意点

ローカルAIで長文記事を作成すると、プロンプトが長くなりすぎる場合があります。

Ollamaのログに次のような警告が出ることがあります。

これは、入力プロンプトがコンテキスト上限に近づき、一部が切り詰められたことを意味します。

今回の最小実装では、以下の情報をまとめて渡しています。

・記事設計
・下書き
・レビュー指摘

そのため、記事が長くなると入力が大きくなります。

今後の改善点としては、次の方法があります。

・見出しごとに本文を生成する
・レビュー対象を分割する
・途中結果をファイル保存する
・長文を一度に再生成しない

今回完成したAIマルチエージェントの最小構成

今回完成した最小構成は以下です。

キーワード入力

Planner AI

Writer AI

Reviewer AI

Writer AIで修正

HTML保存

これは、完全自律型のAIエージェントではなく、固定フロー型のマルチエージェント構成です。

ただし、Reviewer AIの指摘をもとにWriter AIが修正するため、後から半自律型やイベント駆動型に発展させやすい構成になっています。

まとめ

今回は、Windows 11+WSL環境で、Ollama上のGemma 4を使った ローカルAIマルチエージェント記事作成システム を最小構成で実装しました。

重要なポイントは以下です。

・AIマルチエージェント構成では、役割を分けて処理する
・Gemma 4をPlanner / Writer / Reviewer の3役で使う
・OllamaはWindows側、PythonはWSL側で動かす
・WSLからOllamaへ接続するにはWindows側IPv4アドレスを使う
・実際の記事ではIPv4アドレスは 192.168.x.x のように表記する
・OLLAMA_HOST=0.0.0.0:11434 の設定が重要
・第1回ではHTML保存までの最小構成に絞る

この最小実装により、ローカルAIだけで、キーワード入力から記事設計・本文作成・レビュー・修正・HTML保存までを実行できるようになりました。

次回以降は、各AIエージェントの役割をさらに整理し、マルチエージェントとしての完成度を高めます。