AIエージェントの学び方をゼロから6段階で解説
AIエージェントをゼロから学ぶ6段階の道筋です。概念、手書きのループ、ツール、メモリ、設計、安全性を学び、各段階で1つ作ります。
6 段階で進む道筋
AI エージェントをゼロから学ぶには、6 つの段階を順番に進めます。概念、最初のループ、ツール、メモリ、ループ設計、安全性の順です。各段階で、自分の手で 1 つのものを作ります。先に進みすぎると、必要な部分がフレームワークに隠れてしまうため、途中で行き詰まりやすくなります。
AI エージェントとは、ツールを呼び出せる言語モデルを中心にしたループです。この一文が主題のすべてです。それ以降は、ループに含めるもの、ツールが触れられる対象、問題が起きたときにループを停止する方法の詳細です。このループを他の人に説明できれば、要点を理解できています。フレームワークの名前しか挙げられないなら、まだ理解できていません。
以下の計画は、実際に作りながら学ぶことを前提にしています。各段階を読み、小さなものを作り、意図的に壊してから次へ進みます。読んだだけの段階は、まだ実施していない段階です。
ステージ 1 の前に実際に必要なもの
本当に必要な前提条件は短く、多くのコースページが示すものより少ないです。
- 50 行程度のスクリプトを書けるレベルで、Python または TypeScript のコードを読み書きできること。
- Linux シェルを使えること。パッケージのインストール、ファイルの編集、ログの確認ができれば十分です。
- ホスト型モデルの API key、またはローカルモデルを実行できるマシンがあること。
必要なのはこれだけです。機械学習の理論は必要ありません。モデルをトレーニングした経験も必要ありません。エージェントの開発で、勾配やトレーニングデータを扱うことはありません。グラフィックカードが必要になるのは、モデルを自分で実行する場合だけです。これは別のスキルであり、後から VPS に Ollama をホストして LLM をセルフホストする方法 で学べます。
多くの人が過小評価しているのは、シェルに関する部分です。エージェントは、権限、パス、環境変数、そしてひそかに終了するプロセスが原因で失敗します。PATH に関するスタックトレースやファイルモードを見てターミナルを閉じたくなるなら、まず週末を使って Linux の基礎を学んでください。後で 1 か月分の時間を節約できます。
ステージ 1: エージェントとは何か、エージェントでないものは何か
まず、ループなしで API を 1 回呼び出します。プロンプトを送信し、応答を表示して、応答に含まれるトークン数を確認します。これで、コストの単位とレイテンシの単位を理解できます。
次に、ツールの使用を学びます。これは、この分野で本当に新しい唯一の考え方です。関数を、名前、説明、入力用の JSON (JavaScript object notation) スキーマとしてモデルに定義します。モデルは何も実行しません。代わりに、構造化されたリクエストを返します。つまり、これらの引数で run_command を呼び出すよう要求します。コードが関数を実行し、その出力をメッセージとして送り返してから、再度モデルに問い合わせます。モデルはテキストを読み、テキストを書くプランナーです。実際に処理を実行するのはコードです。
チャットボットは、1 回の応答で終了します。エージェントは、モデルがツールを要求しなくなるまで、このやり取りを繰り返します。この繰り返しが両者の違いのすべてであり、失敗の形も異なる理由です。チャットボットは 1 回だけ誤った回答を返します。エージェントは、誰かが気付くまで、誤った回答に基づく処理を何度も実行します。
ステージ 2: ループを一度、自分で書きます
フレームワークから始めないでください。Python を約 30 行書き、処理の形を自分のものにしてください。
sudo apt update && sudo apt install -y python3-venv
python3 -m venv ~/agent
source ~/agent/bin/activate
pip install anthropic
export ANTHROPIC_API_KEY=your-key-hereimport subprocess
import anthropic
client = anthropic.Anthropic()
tools = [{
"name": "run_command",
"description": "Run a read only shell command and return its output.",
"input_schema": {
"type": "object",
"properties": {"command": {"type": "string"}},
"required": ["command"],
},
}]
messages = [{"role": "user", "content": "How much disk space is free here?"}]
while True:
response = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
tools=tools,
messages=messages,
)
if response.stop_reason != "tool_use":
break
messages.append({"role": "assistant", "content": response.content})
results = []
for block in response.content:
if block.type == "tool_use":
done = subprocess.run(
block.input["command"], shell=True,
capture_output=True, text=True, timeout=10,
)
results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": done.stdout or done.stderr,
})
messages.append({"role": "user", "content": results})
print(next(b.text for b in response.content if b.type == "text"))python3 agent.pyで実行してください。正常に実行されると、ファイルシステム名と空き容量を示す段落が 1 つ出力されます。これは、モデルが df -hを要求し、コードがそれを実行し、2 回目の処理でその表が文章に変換されるためです。何も出力されない場合は、テキストブロックが返る前にループが終了しています。ループ内に print(response.stop_reason)を追加し、値の変化を確認してください。
次に、意図的に壊してください。tool_use_idの行を削除してエラーを確認します。対応する id がないツール結果は API に拒否されるためです。これは初心者に最も多いバグです。2 つのコマンドが必要な質問をして、ループが 2 回実行されることを確認してください。実行不可能な質問をして、処理が諦めるか、無限に実行され続けるかを確認してください。
この例には注意点が 1 つあります。shell=Trueを使ってモデルの出力をそのまま shell に渡しています。再構築できる検証用マシンでは許容できますが、それ以外の環境では不適切です。この問題はステージ 6 で修正します。ループの基礎概念については、VPS 上で独自の AI エージェントを構築するで詳しく説明しています。
ステージ 3: エージェントにまだ備わっていなかったツール
run_commandツールは動作します。しかし、実際のエージェントには、外部のシステムへ接続するツールが必要です。チケットシステム、データベース、リポジトリなどが対象になります。サービスごと、エージェントごとに専用のラッパーを作成する方法では、規模を拡大できません。
業界で採用された答えが Model Context Protocol (MCP) です。MCP server は標準トランスポート経由で一連のツールを公開します。MCP に対応したエージェントであれば、専用の接続処理なしで利用できます。リファレンスの filesystem server は、1 つのコマンドで起動できます。
npx -y @modelcontextprotocol/server-filesystem /home/you/projectsこのコマンドには Node のインストールが必要です。ディレクトリ引数で指定したパスだけが、server による操作対象になります。これがセキュリティモデルの要点です。境界を決めるのは model ではなく server です。クライアントから接続すれば、エージェントに、独自に実装していないファイルの読み書き機能を追加できます。これらを service account で適切に実行する方法と、トランスポートの選択肢については、AI コーディングエージェント向けに VPS で MCP server を実行する方法で説明します。
このステージの教訓は、実際の作業はツール設計だということです。曖昧な説明では、model が推測することになります。40000 文字を返すツールは、コンテキストウィンドウを圧迫します。削除できるツールは、いずれ実際に削除を実行します。
Stage 4: memory, which is mostly just files
初心者はここでベクトルデータベースを導入しがちです。しかし、少なくともまだ必要ありません。
エージェントは呼び出しの間でメモリを保持しません。毎回、会話全体を再送します。そのため、長いセッションでは短いセッションよりも 1 ターンあたりのコストが高くなります。メモリは 2 つの問題に分かれます。1 つ目は、現在コンテキストウィンドウに収まる情報です。これは、要約、古いツール出力の削除、プロンプトの安定した先頭部分のキャッシュによって管理します。これにより、その部分にかかる料金を一部に抑えられます。2 つ目は、再起動後も残る情報です。これはストレージで管理します。
2 つ目の問題では、エージェントが読み書きできる通常の Markdown ファイルのほうが、ほとんどの最初のプロジェクトではベクトルデータベースより適しています。ファイルを 1 つ用意し、形式を指示します。また、処理を開始する前にそのファイルを読み、何かを学習したら更新するよう指示します。これで利点の大部分を得られます。さらに、ファイルを開いてエージェントが何を把握しているか確認できます。メモがコンテキストウィンドウに収まらなくなった段階で、初めて embeddings と retrieval を導入してください。それより前に導入する必要はありません。
Stage 5: ループがプロダクトです
ここまでで、監視している間は動作するエージェントを作れるようになりました。Stage 5 では、監視していない場合でも動作するようにします。
無人でエージェントを放置しても安全かどうかは、4 つの問いで決まります。何がエージェントを起動するのか。何もない状態で実行されないようにする必要があります。どの境界内で動作するのか。ミスが小さく収まるようにする必要があります。結果をどのように検証するのか。自分で採点するエージェントは、常に合格にしてしまうためです。トークン数または実時間で、どの予算がエージェントを停止させるのか。これら 4 つを意図的に設計することが、ループエンジニアリングとその定義の範囲で説明する規律です。
演習では、stage 2 のエージェントを使い、4 つまたは 5 つの手順を必要とするタスクを与えて、厳格な反復回数の上限を追加します。次に上限を外し、上限のないループがトークン料金にどのような影響を与えるかを確認します。大きな予算で誤って実行しないように、最初は少額の予算で 1 回だけ実施してください。
ステージ 6: 安全性、Secret、コスト
このステージは省略できません。最後に置いているのは、動作するものを構築するまでリスクを実感できないためです。
エージェントは専用の非特権ユーザーとして実行してください。root としても、自分のアカウントとしても実行しないでください。これにより、問題が発生した場合の影響範囲をマシン全体ではなくディレクトリに限定できます。認証情報はモデルからアクセスできない場所に保管してください。コンテキストウィンドウに入った情報は、tool call を通じてそのまま引用される可能性があるためです。対策として、AI エージェントから Secret を分離する方法で説明しているように、helper の背後で有効期間の短い token を発行し、権限範囲を限定します。支出には上限を設定してください。監視されていない loop では、誰も確認しないまま反復ごとに課金されるためです。上限設定と batching によってコストを適切に抑える方法は、常時稼働 VPS での AI エージェントのコスト管理で説明しています。
コストについては、具体的な数字を1つ確認しておきます。2026年7月時点で、Claude Opus 5 の料金は入力 token 100万個あたり $5、出力 token 100万個あたり $25 です。会話履歴が増え続ける状態で agent が再送を繰り返すと、1つの task だけで数十万 token に達することがあります。Prompt caching と、定型的な手順に小型モデルを使うことは、prompt の微調整よりもこの計算結果を大きく変えます。
Prompt injection もここで扱う必要があります。エージェントが Web ページ、issue tracker、または inbox を読む場合、その文章を書いた人物はエージェントへの指示も書いていることになります。通常、最初にこの入口を開く tool は Web 検索です。自分の SearXNG instance にエージェントを接続する方法では、接続方法と、そこから生じる injection の攻撃面を並べて説明しています。対策は、より巧妙な system prompt ではありません。境界を設けることです。リポジトリを削除できないエージェントは、説得されても削除できません。
従うべき道筋はどれですか?
6 つを少しずつ試すのではなく、1 つのカリキュラムを選んで最後まで進めてください。Microsoft ai-agents-for-beginners repository は、無料で利用できるものの中で最も完全な構成です。18 レッスンのコースで、2026 年 7 月時点で 70,000 stars を超えており、前述の段階にも無理なく対応しています。注目を集めている agent repository のまとめは、どのようなものが存在するかを把握するには役立ちます。しかし、教材としてはあまり適していません。stars 順の一覧は、学習順ではなく人気順に並んでいるためです。
実際のプロジェクトで練習したい場合は、最初の対象として coding agent が適しています。フィードバックがすぐに得られ、ツールも分かりやすく、失敗しても簡単に元に戻せます。VPS 上で coding AI agent を実行するでは、1 つの構成を最初から最後まで説明しています。ゼロから構築するよりも、動作するシステムを調べたい場合は、最適な self hosted AI agentsの比較で、複数のプロジェクトが同じループをどのように異なる方法で実装しているかを確認できます。
どのくらい時間がかかりますか?
すでにプログラミングをしている人であれば、ステージ 1 と 2 は 1 晩で完了します。ステージ 3 は週末 1 回分です。その大半は、プロトコルではなくツールの説明に費やします。ステージ 4 と 5 は、実際に数週間使いながら進めます。エージェントが何を忘れるかは、忘れる様子を監視しなければ分からないためです。ステージ 6 は、完全に終わることはありません。新しい機能を追加するたびに、ステージ 6 の作業が再び必要になるためです。
毎晩継続して 2 か月取り組めば、多くの人は実用可能で、範囲を限定した有用なエージェントを完成させられます。1 年かかる人の多くは、構築する代わりに読み続けていた人です。
FAQ
AI エージェントを構築するために、機械学習の知識は必要ですか?
いいえ。エージェントの構築では、API 経由でモデルを呼び出し、モデルからのツール要求を実際の関数に接続します。これは一般的なアプリケーション開発です。トレーニング、勾配、データセットを扱う必要はありません。エージェントが機能するかどうかを左右するのは、ツールのスキーマ設計、エラー処理、Linux の権限です。機械学習理論が必要になるのは、モデルのファインチューニングまで進む場合だけです。これは、前提条件の異なる別の作業です。
LangChain や CrewAI などのフレームワークから始めるべきですか?
最初に、フレームワークを使わずに 1 つのループを作ってください。その後でフレームワークを導入します。フレームワークは、stage 2 の 30 行の処理を設定オブジェクトに置き換えます。何を置き換えたのかを理解していれば便利ですが、理解する前は分かりにくくなります。エージェントが期待どおりに動かない場合は、メッセージのリストとツールの結果を直接追跡する必要があります。それらを見たことがなければ、原因の把握はさらに難しくなります。自分で 1 つのループを作った後なら、フレームワークは仕組みを隠すのではなく、作業時間を短縮してくれます。
AI エージェントの学習には、どの程度の費用がかかりますか?
上限を設定すれば、多くの人が予想するより少なく済みます。ホスト型 API のキーと小規模な VPS があれば、この 6 つの stage をすべて実行できます。本当のリスクは時間単価ではありません。自分が寝ている間も、制限のないループが反復ごとに課金を続けることです。初日から API アカウントに厳格な支出上限を設定し、作成するすべてのループに反復回数の上限を追加し、定型的な処理には安価なモデルを使用してください。モデルをローカルで実行すればトークン料金はなくなりますが、その代わりにハードウェアが必要になります。
AI エージェントとチャットボットの違いは何ですか?
チャットボットは 1 回回答します。エージェントは、モデルがツールを要求し、コードがそのツールを実行し、結果をモデルに返し、モデルが次の処理を決定するサイクルを繰り返します。この反復により、エージェントは複数の手順からなるタスクを完了できます。同時に、チャットボットには不要な境界条件がエージェントに必要になる理由でもあります。チャットボットの誤答は、誤った段落です。エージェントの誤答は、誤った段落に加えて、その内容に基づいて実行した処理も含みます。