AIエージェントの作り方

AIエージェントの作り方:ループ、ツール、メモリ、ガードレール | We.Inc

AIエージェントを基礎から作る方法。判断・実行・観察のループ、ツール定義、メモリ、ステップ上限、人による承認、テストまで解説。ステップシミュレーター付き。

AIエージェントの作り方

AIエージェントとはループです。言語モデルが目標とそれまでの経過をすべて読み、定義済みのツールを1つ呼び出すか、最終回答を返します。あなたのコードがツールを実行し、結果を追記して再びモデルに問い合わせます。ステップ上限、権限、人による承認、テストがこのループを安全に保ちます。

エージェントを構成する5つの要素

シミュレーターを動かして、1つのタスクがループを進む様子を見てみましょう。承認のオンとオフを切り替えると、ガードレールが危険なステップのどこで割り込むかがわかります。トレースは学習用に台本化されています。実際の実行では、判断ステップごとにモデルへ問い合わせます。

よくある質問

エージェントを作るのにフレームワークは必要ですか?

必要ありません。このページの例が示すとおり、核となるのは1回のモデル呼び出しを囲むwhileループと、ツール名によるswitchです。フレームワークはリトライ、トレース、連携機能を追加し、後々役に立ちますが、学習中はループの仕組みを隠してしまいます。

モデルはどのようにツールを呼び出すのですか?

リクエストのたびにツール定義を送ります。モデルがツールを使いたいときは、通常のテキストの代わりにツール名と引数を返します。あなたのコードが関数を実行し、その結果を次のメッセージとして返します。

メモリとコンテキストの違いは何ですか?

コンテキストは、今回の呼び出しでモデルが見る内容です。指示、目標、これまでのやり取りの記録が含まれます。メモリは、あなたが保存して後でコンテキストに戻すと決めたもので、前回の実行のメモなどがあります。

エージェントが永遠に動き続けるのを防ぐには?

ステップ数と総支出に上限を設け、どちらかに達したら明確なメッセージで実行を終了させます。OWASPは2025年版の言語モデル応用アプリのリスクの1つにUnbounded Consumptionを挙げています。

エージェントはどうテストすればよいですか?

結果を確認できる固定タスクのセットを用意します。正しいツールが呼ばれたか、危険な操作が承認を待ったか、最終回答に数値が含まれているか、といった確認です。プロンプトやツールを変更するたびにこのセットを実行し、合格数を比較します。

本当に機能するガードレール

信頼できないテキストが最大の攻撃対象

素のJavaScriptで書くループ

フレームワークもベンダーSDKも使いません。callModelは固定の判断を再生するスタブなので、ファイルはそのまま動きます。実際には、利用しているモデルサービスへのリクエストに置き換えてください。

ツールは1つのオブジェクトにまとめ、危険なツールには承認を必須にし、ループはステップ上限で停止します。node agent.mjsで実行できます。

設計で備えるべきリスク

OWASP Top 10 for LLM Applications 2025のうち、エージェントに特に重要な項目

目標:3社の仕入れ見積もりのうち最安のものを見つけ、要約をオフィスマネージャーにメールで送る。

モデルが、届いた内容を確認するためにread_quotesを選ぶ。

コードがread_quotes()を実行し、3つのファイルを返す。

結果をメモリに追加:A $1,240、B $1,180、C $1,315。

必要な情報が揃ったので、モデルが要約の下書きを添えてsend_emailを選ぶ。

send_emailは影響の大きい操作に指定されているため、人が下書きを承認するまで実行が一時停止する。

承認済み。コードが承認されたテキストでsend_email()を実行する。

結果をメモリに追加:メッセージ送信済み。

モデルが最終回答を返す:最安は見積もりBの$1,180。要約を送信済み。モデル呼び出しは3回で、10ステップの上限内。

モデルが、届いた内容を確認するためにread_quotesを選ぶ。

コードがread_quotes()を実行し、3つのファイルを返す。

結果をメモリに追加:A $1,240、B $1,180、C $1,315。

必要な情報が揃ったので、モデルが要約の下書きを添えてsend_emailを選ぶ。

承認ルールがないため、コードが下書きをすぐに送信する。事前に誰も確認していない。

結果をメモリに追加:メッセージ送信済み。

モデルが最終回答を返す。今回はうまくいったが、数値の誤りや注入された指示があっても、確認されないまま送信されていた。

判断

実行

観察

ガードレール

完了

エージェントループのシミュレーター

次のステップ

リセット

send_emailの前に承認を必須にする

ステップ {n} / {v}

実行が完了しました。

未到達

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る