初めてのAIエージェントを作る方法 — Claude Code と OpenAI Assistants API を例に
目的定義・ツール準備・実行ループ設計・実行という4ステップで、最初のAIエージェントを小さく安全に組み立てる手順を解説します。
AIエージェント(agent)とは、渡した目的に向けて複数の手順を自分で組み立て、必要に応じて外部ツールを呼び出しながら結果を確認し、次の行動を選び直す仕組みです。本記事では Claude Code と OpenAI Assistants API を例に、目的定義 → ツール準備 → 実行ループ設計 → 実行という4ステップで最初の一体を組み立てます。所要時間は環境構築込みでおおむね1〜2時間程度、前提として各サービスのAPIキーとプログラミングの基礎知識が必要です。
前提条件 — 始める前に用意するもの
着手する前に、次の点を確認してください。まず、Anthropic または OpenAI のAPIキー、もしくは Claude Code の実行環境(ターミナルからのCLI利用)のいずれかです。次に、ツール呼び出し(tool use / function calling)の概念を一度でも触ったことがあると理解が早いですが、必須ではありません。最後に、本番データではなくテスト用のアカウントやディレクトリで試すことです。エージェントは人間が事前に想定していない手順を自分で選ぶ可能性があるため、最初から本番環境で動かすのは避けるべきです。
なお、本記事は Claude・ChatGPT を教育目的で解説するものであり、RLNPay AIアカデミーは Anthropic、OpenAI との提携・代理店関係にはありません。各社の商標は各社に帰属します。料金プランやAPIの仕様は変更されることがあるため、実際に使う際は必ず公式ドキュメントで最新情報を確認してください。
ステップ1 — 目的を1文で定義する
最初に決めるべきは「何をどこまでやらせるか」です。「メールに対応する」のような曖昧な目的ではなく、「未対応の問い合わせメールを分類し、下書きの返信案を作成する(送信はしない)」のように、終了条件と除外範囲がわかる粒度で書きます。Anthropicのエンジニアリングブログは、あらかじめ決められた処理手順に1ステップだけモデルを組み込む「ワークフロー」と、モデル自身が次の行動を動的に決めていく「エージェント」を区別しており、多くの製品が実際には前者に近いと述べています。目的を狭く定義することは、この2つの違いを実装レベルで守るための最初の一手です。
ステップ2 — ツールを準備する
目的が決まったら、それを達成するために必要なツールだけを用意します。ここでのツールとは、エージェントが呼び出せる関数やAPIのことで、読み取り専用の検索、ファイルの読み込み、下書き保存など、実行しても被害が小さい操作から始めます。
Claude Code の場合
Claude Code はターミナル上で動くエージェント型のツールで、ファイル操作やコマンド実行といったツールをあらかじめ許可リストで制御できます。どのツールをどの範囲まで使わせるかは、プロジェクトの設定ファイルで宣言的に管理するのが基本です。PCでの導入・使い分けはClaudeをPCで使う方法で扱っています。
OpenAI Assistants API の場合
OpenAIのAssistants APIは、アシスタント(assistant)・スレッド(thread)・実行(run)という単位でツール呼び出しを管理します。最小限の構成は次のようになります。
from openai import OpenAI
client = OpenAI()
assistant = client.beta.assistants.create(
name="min-agent",
instructions="ユーザーの目的を達成するために必要なツールだけを呼び出してください。",
tools=[{"type": "code_interpreter"}],
model="gpt-4o",
)
thread = client.beta.threads.create()
client.beta.threads.messages.create(
thread_id=thread.id, role="user", content=goal
)
run = client.beta.threads.runs.create(
thread_id=thread.id, assistant_id=assistant.id
)
OpenAIはエージェント構築用のAPIを継続的に更新しているため、クラス名やメソッド名の最新仕様は必ず platform.openai.com/docs/assistants で確認してください。
ステップ3 — 実行ループを設計する
エージェントの中心は「モデルが行動を選び、ツールを呼び出し、結果を観察して次の行動を選び直す」ループです。Claude の Messages API を例にすると、概念としては次のような形になります。
# 最小限のエージェントループ(概念を示す擬似コード)
def run_agent(goal, tools, max_steps=6):
messages = [{"role": "user", "content": goal}]
for step in range(max_steps):
response = client.messages.create(
model="claude-...-latest",
system=SYSTEM_PROMPT,
tools=tools,
messages=messages,
)
if response.stop_reason == "tool_use":
call = response.content[-1]
result = call_tool(call.name, call.input)
messages.append({"role": "assistant", "content": response.content})
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": call.id,
"content": result,
}],
})
else:
return response.content
return "max_steps に到達したため停止しました"
ここで必ず入れるべきなのが max_steps のような上限です。上限がないと、エージェントが同じ確認作業を繰り返し続け、コストと処理時間だけが増えることがあります。停止条件と、それ以上は人が確認してから進める境界は、コードを書く前に文章で決めておきます。
ステップ4 — 実行して確認する
設計ができたら、内容の異なる入力を数パターン用意して実行し、ツール呼び出しが想定範囲に収まっているか、上限が実際に機能するかを確認します。ツール呼び出しと結果はすべてログに残す設定にしてください。ログがないと、後から「なぜその行動を選んだか」を追えず、次の改善ができません。
ただし、最初のエージェントで自動化する範囲は、失敗しても被害が小さい作業に限るべきです。金銭のやり取りや外部への送信、不可逆な削除操作などは、動作の信頼性を十分に確認するまでは自動実行の対象から外し、人が最終確認するステップを残しておくのが妥当です。
次に読むべき記事
ツール・記憶・計画をどう組み合わせるかという設計面の判断は、AIエージェントの設計パターンでさらに詳しく扱います。また、ここで組んだ最小構成を安全に本番へ近づけていく際の権限設計やログ運用は、後続の記事で扱う安全な運用の考え方が土台になります。
参考文献
- Anthropic. "Building Effective Agents." Anthropic Engineering, 2024.
- Anthropic. "Agents and tools." Claude Docs(docs.anthropic.com/en/docs/agents-and-tools), 2026年時点。
- OpenAI. "Assistants API." OpenAI Platform Documentation(platform.openai.com/docs/assistants), 2026年時点。
※本稿は2026年8月時点の情報にもとづきます。API仕様や料金は変更される場合があるため、実装前に必ず各社の公式ドキュメントを確認してください。
関連する記事
RLNPay アカデミー
会員登録で、フルコースとニュースレターを受け取る
無料の記事だけでも実務に役立つ内容を目指していますが、会員登録いただくと、 アドバンストAIコースのフル動画レッスンと、新着チュートリアル・更新情報のニュースレターをお届けします。 登録は無料です。メールアドレスは配信目的のみに使用し、第三者へ提供することはありません。