AIエージェント入門|ローカルLLMでループ型エージェントを作る【第3週】

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

第2週では、ローカルLLMを使ってツール(関数)を呼び出し、AIが判断した内容を実際の処理につなげる仕組みを実装しました。
これにより、AIは「答えるだけ」ではなく、「行動する」ことができるようになりました。

しかし、現時点ではまだ1回の判断と実行で処理が終了する単発の動きです。
実際のAIエージェントは、状況に応じて何度も判断を繰り返しながら、目的を達成するまで動き続けます。

本記事では、AIが「終わるまで考え続ける」ループ型エージェントを実装していきます。

AIエージェントとは

AIエージェントとは、入力に対して一度だけ応答するのではなく、状況に応じて判断と実行を繰り返し、目的達成まで処理を継続する仕組みです。

第3週では、その「繰り返し処理(ループ)」を実装します。

学習ロードマップ

内容
第1週チャット + JSON出力
第2週ツール呼び出し
第3週ループ型エージェント
第4週マルチエージェント

作業環境について

本記事は、第1週の内容を前提として進めています。
そのため、以下の環境がすでに整っている状態を想定しています。

  • ローカルLLM実行環境:Ollama
  • 使用モデル:qwen3
  • Python仮想環境(venv)
  • ollama Pythonライブラリのインストール済み

作業環境の準備ができていない場合

第1週の記事で、環境構築からJSON出力までを解説しています。
未実施の場合は、先に第1週から進めることをおすすめします。

AIエージェント入門|ローカルLLMで学ぶチャットとJSON出力【第1週】

第3週のゴール

この週では、AIエージェントの「継続的に動く仕組み」を理解します。

  • AIが複数回判断できる
  • 処理を繰り返せる
  • 完了条件まで動き続ける

なぜループが必要なのか?

第2週では、AIが判断した内容をもとに関数を呼び出し、実際の処理を実行する仕組みを作りました。
これにより、AIは「答えるだけ」でなく「行動する」ことができるようになりました。

しかし、この仕組みにはまだ重要な制約があります。

なぜ処理を繰り返す必要があるのか?

第2週の処理の流れは次の通りです。

AIが判断 → 関数を実行 → 終了

一見すると問題なさそうですが、この流れでは1回の処理で必ず終了してしまうという特徴があります。

AIは1回の判断だけでは、処理が本当に完了したかどうかを検証できません。

1回の判断では不十分な理由

例えば「タスクを追加する」という処理でも、次のような点を確認する必要があります。

  • 本当にタスクが追加されたか
  • 同じ内容が重複していないか
  • 他に必要な処理が残っていないか

これらはすべて、関数を実行した後の状態を見ないと判断できません。

重要なポイント

ここで押さえておきたいのは、AIが見ている情報の範囲です。

AIは最初、関数を実行する前の状態しか知らない

しかし実際には、次のような流れが必要になります。

実行後の状態を確認する
↓
次の行動を決める

つまり、結果を見てから次を判断する仕組みが必要になります。

だからループが必要になる

この問題を解決するのが、ループという仕組みです。

判断
↓
実行
↓
結果を確認
↓
再判断
↓
必要なら続ける

AIは一度で終わるのではなく、

  • 実行結果を確認し
  • 必要であれば再度判断し
  • 次の処理を決める

という流れを繰り返します。

ループ型AIエージェントの仕組みを示した図。ローカルLLMが関数呼び出しを繰り返しながらタスクを完了する流れを解説。
1回で終わらず、結果を見て考え続ける。この繰り返しがAIエージェントの本質です。

実装してみる

完成コード

loop_agent.py

ここが重要(処理の流れを分解)

ループ型エージェントでは、同じ処理を繰り返しながら目的に近づいていきます。
その中で重要なポイントを順番に見ていきます。

① ループしている

最大5回まで処理を繰り返しています。

ここでは「無限ループ」を防ぐために、回数に上限を設けています。
エージェントは本来「終わるまで続ける」ものですが、安全のために制限をかけているというイメージです。

② AIの出力を蓄積する

AIの返答を会話履歴に追加します。

これによりAIは、

  • これまでに何をしたか
  • どんな結果が出たか

を踏まえて、次の判断ができるようになります。

これは過去の情報を覚えながら考える仕組みです。
messagesは以下の様に情報が追加されていきます。

参考:Generate a chat message – Ollama

③ 結果をAIに戻す

関数の実行結果をAIに渡すために、会話履歴に追加します。
AIはこの情報をもとに、

  • 処理が成功したか
  • 次に何をするべきか

を判断します。

ここまでの会話履歴

④ 終了条件のチェック

message.get("tool_calls", [])
AIの回答(message)の中に、tool_calls(関数の実行指示)が含まれているか確認します。
・含まれていない場合: デフォルト値として空のリスト [] を代入します。
・含まれている場合: その指示リストを取得します。

if not tool_calls:
tool_calls が空([])の場合は、AIは「関数(ツール)を動かす必要はない。」と判断したことを意味します。

関数の流れまとめ

この4つをつなげると、以下の流れになります。

AIが判断する
↓
関数を実行する
↓
結果をAIに戻す
↓
AIが再判断する
↓
終わるまで繰り返す

AIエージェントは「1回で終わる処理」ではなく、「結果を見ながら何度も考え直す」仕組みになっています。

関数の実行

Git Bashで、保存したフォルダに移動してから実行します。

上記コマンドは、第1週で構築したPython仮想環境での実行例です。
Python仮想環境の構築に関しては、第1週ステップ5およびステップ6を参考にしてください。

正常に動けば、AIからの返答がターミナルに表示されます。

第2週との違い

項目第2週第3週
実行回数1回複数回
処理単発ループ
エージェント性低い高い

AIエージェントの本質

AIは、1回だけ判断して終わるのではなく、
結果を見ながら何度も考え直すことで、正しい状態に近づいていきます。

役割分担

この仕組みは、次のように分かれています。

AI     → 何をするかを判断する(考える)
Python → 実際の処理を実行する(動く)

AIは処理を直接実行するのではなく、「次に何をするか」を判断し続ける役割を担っています。

3週のまとめ

この週では、AIエージェントの「繰り返し動く仕組み」を学びました。

1. AIは繰り返し判断できる

AIは一度判断して終わるのではなく、
結果を見ながら何度も考え直すことができます。

2. 処理を続けることで目的に近づく

1回の処理で完了しなくても、
判断と実行を繰り返すことで、少しずつ正しい状態に近づいていきます。

3. これが「エージェントらしさ」

AIが

  • 考える
  • 実行する
  • 結果を見てまた考える

という流れを繰り返すことで、
単なる会話AIではなく「自律的に動く存在」になります。


ここまでで、AIは単独で判断し続けることができるようになりました。
しかし実際のシステムでは、1つのAIだけではなく、役割ごとに複数のAIが協力して動くことが多くなります。

第4週では「司令塔+実行役」のマルチエージェント構成を作ります。

AIエージェント入門|マルチエージェント構成の作り方【第4週】