AIエージェントの仕組みを新人エンジニア向けにゼロから解説する

「AIエージェント」という言葉を聞かない日はなくなりました。でも「ChatGPTと何が違うの?」と聞かれると、意外とスッキリ答えられない人も多いはず。この記事では、エンジニアとしてAIエージェントの仕組みを理解し、簡単なものを自分で作れるようになるところまでを目指します。

チャットAIとエージェントの決定的な違い

ChatGPTやClaudeに質問すると、答えが返ってきます。1回の会話で完結する、いわば「一問一答」のモデルです。

AIエージェントは違います。目的を与えると、自分で計画を立て、必要なツールを呼び出し、結果を確認し、次のアクションを決める。つまり「自分で考えて動く」仕組みです。

たとえば「来週の出張の新幹線を予約して」と頼んだとき——

  • チャットAI:「〇〇駅から△△駅への新幹線は、以下の時刻があります…」と情報を返すだけ
  • AIエージェント:カレンダーを確認→空き時間を特定→予約サイトにアクセス→座席を選んで予約→結果を報告

この「ループして自律的に動く」のがエージェントの本質です。2025年が「AIエージェント元年」と呼ばれ、2026年はそれが組織の業務フローに組み込まれ始めた年になっています。

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

AIエージェントは、どんなに複雑なものでも基本的に4つのパーツで成り立っています。

1. LLM(大規模言語モデル)— 脳

Claude、GPT-4、Geminiなど。判断と推論を担当します。エージェントの「賢さ」はここで決まります。

2. ツール — 手足

Web検索、ファイル操作、API呼び出し、データベースへのクエリなど。LLMだけでは「考える」ことしかできませんが、ツールがあれば「行動」できます。

3. メモリ — 記憶

会話の履歴や、途中で得た情報を保持する仕組み。短期メモリ(今のタスクの文脈)と長期メモリ(過去の経験)があります。

4. プランナー — 司令塔

目標を受け取り、サブタスクに分解し、実行順を決める。「まずWebを検索して、次にコードを書いて、最後にテストを走らせる」のような段取りを組むのがこの部分です。

最小限のAIエージェントを作ってみる

理屈はいいから手を動かしたい、という人向けに、Pythonで最小限のエージェントを書いてみましょう。Anthropic Claude APIを使った例です。

# 環境: Python 3.12 / anthropic 0.52.0
# pip install anthropic

import anthropic
import json

client = anthropic.Anthropic()  # ANTHROPIC_API_KEY環境変数を設定

# ツールの定義(天気を取得する擬似ツール)
tools = [
    {
        "name": "get_weather",
        "description": "指定した都市の天気を取得する",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "都市名"}
            },
            "required": ["city"]
        }
    }
]

def get_weather(city):
    # 実際にはAPIを呼ぶ。ここではダミーデータ
    return {"city": city, "temp": "18°C", "condition": "晴れ"}

# エージェントループ
messages = [{"role": "user", "content": "東京と大阪の天気を比較して"}]

while True:
    response = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=1024,
        tools=tools,
        messages=messages,
    )

    # ツール呼び出しがなければ完了
    if response.stop_reason == "end_turn":
        print(response.content[0].text)
        break

    # ツール呼び出しを処理
    for block in response.content:
        if block.type == "tool_use":
            result = get_weather(block.input["city"])
            messages.append({"role": "assistant", "content": response.content})
            messages.append({
                "role": "user",
                "content": [{
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": json.dumps(result, ensure_ascii=False),
                }]
            })

このコードのポイントはwhile Trueループです。LLMが「もうツールを呼ぶ必要がない」と判断するまでループが続きます。これがエージェントの「自律性」の正体で、ループの中でLLMが次にやることを自分で決めています。

実務で使われているエージェントの例

「エージェントって結局、業務でどう使うの?」という疑問に答えます。

コーディングエージェント
Claude CodeやCursor Agentがこのカテゴリ。「この関数にテストを追加して」と頼むと、コードを読み、テストを書き、実行して、エラーがあれば修正するところまで自動でやります。

カスタマーサポートエージェント
ユーザーの質問を受けて、社内ナレッジベース(RAG)を検索し、回答を生成。解決できなければ人間のオペレーターにエスカレーションする判断も自動化されています。

データ分析エージェント
「先月の売上を地域別に分析して」と言えば、SQLを生成→実行→結果をグラフ化→考察を添えるところまで一気通貫で処理します。

エージェント開発で新人がハマりやすいポイント

無限ループに注意

エージェントは「自分で判断してループする」仕組みなので、終了条件が曖昧だとループが止まりません。最大ループ回数の制限は必ず入れましょう。

ツールの説明文が雑だとLLMが正しく呼べない

ツールのdescriptionはLLMが「いつこのツールを使うべきか」を判断する根拠です。「データを取得する」ではなく「指定されたユーザーIDに基づいて、ユーザーのプロフィール情報をJSON形式で返す」くらい具体的に書きましょう。

コストが予想外に膨らむ

1回のタスクでLLMが5〜10回APIを呼ぶのはザラです。開発中は安価なモデル(Claude Haikuなど)で動作確認し、本番で高性能モデルに切り替えるのが定石です。

よくある質問

RPAは「事前に定義されたルール通り」に動きます。画面のこのボタンを押して、このフィールドに入力して、という手順が固定。AIエージェントは「目標だけ与えて、手順はAIが考える」点が根本的に違います。想定外のエラーが出ても、エージェントは自分で対処を考えられます。

PythonかTypeScriptが主流です。ライブラリが充実しており、LangChainやAnthropic SDKなどエージェント構築用のツールがそろっています。まずはPythonで基礎を押さえ、Webサービスとして提供するならTypeScriptに移行する流れが多いです。

もちろん。上のコード例のように、50行程度で基本的なエージェントは動きます。APIキーさえあればローカルPCで開発でき、クラウドのセットアップは不要です。まずは「自分のメール下書きを自動で作るエージェント」あたりから始めると、実用性を感じながら学べます。

まとめ

  • AIエージェントは「自分で考えてループして行動するAI」。チャットAIとの違いは自律性にある
  • 構成要素はLLM(脳)、ツール(手足)、メモリ(記憶)、プランナー(司令塔)の4つ
  • 最小限のエージェントはPython数十行で作れる。まずは手を動かしてみるのが近道
  • 開発時は無限ループ防止・ツール説明の品質・コスト管理の3点に注意

参考: Anthropic公式 - Building Agentic Loops

K
AWS・Python・生成AIを専門とするソフトウェアエンジニア。AI・クラウド・開発ワークフローの実践ガイドを執筆しています。詳しく見る →