生成AI入門 2026.04.30
AIエージェント vs AIアシスタントの違いとは?特徴・できること・使い分けを徹底比較
「指示待ち」か「自分で動く」かの違い
| 項目 | AIアシスタント | AIエージェント |
|---|---|---|
| 動き方 | 聞かれたら答える(受動的) | 目標から自律実行(能動的) |
| 代表例 | ChatGPT・Claude.ai・Gemini | Claude Code・AutoGPT・n8n+AI |
| 向く用途 | 質問・相談・文章生成 | 業務フロー自動化・長期タスク |
| リスク | 低(毎回確認できる) | 高(誤操作が自動実行される) |
| コスト | 低〜中 | 中〜高(多くのAPIコールが必要) |
AIアシスタントの使い方(Claude APIの基本)
# assistant_basic.py
# AIアシスタント:人間が確認しながら使う基本パターン
import anthropic
client = anthropic.Anthropic()
def ask_assistant(question: str, context: str = "") -> str:
"""AIアシスタントに質問する(毎回人間が確認する)"""
system = f"コンテキスト:\n{context}" if context else ""
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=512,
system=system,
messages=[{"role": "user", "content": question}]
)
cost = (response.usage.input_tokens * 0.80 + response.usage.output_tokens * 4.00) / 1_000_000
print(f"コスト: ${cost:.5f}")
return response.content[0].text
# アシスタントは1問1答
answer = ask_assistant("このコードのバグを教えてください", "def calc(a,b): return a/b")
print(answer)
# → ユーザーが確認してから次のアクション(人間が主導)
AIエージェントの実装例
# simple_agent.py
# AIエージェント:目標から計画→実行→確認を自律的に繰り返す
import anthropic
import subprocess
from pathlib import Path
client = anthropic.Anthropic()
AGENT_SYSTEM = """あなたは開発タスクを自律実行するエージェントです。
タスクを完了するために必要なステップを計画し、順番に実行してください。
各ステップで:
1. 次にすべき作業を説明する
2. 作業を実行する
3. 結果を確認して次のステップを決める
完了したら「DONE」と出力してください。
実行できない場合は「BLOCKED: [理由]」と出力してください。"""
def run_agent(task: str, max_steps: int = 5, dry_run: bool = True) -> None:
"""自律エージェントを実行する(dry_run=Trueで確認のみ)"""
messages = [{"role": "user", "content": f"タスク: {task}"}]
total_cost = 0.0
for step in range(max_steps):
print(f"\n=== Step {step + 1}/{max_steps} ===")
response = client.messages.create(
model="claude-sonnet-4-5", # エージェントはSonnet推奨
max_tokens=1024,
system=AGENT_SYSTEM,
messages=messages
)
agent_output = response.content[0].text
cost = (response.usage.input_tokens * 3.00 + response.usage.output_tokens * 15.00) / 1_000_000
total_cost += cost
print(f"エージェント: {agent_output[:300]}")
print(f"コスト: ${cost:.5f} | 累計: ${total_cost:.4f}")
if "DONE" in agent_output or "BLOCKED" in agent_output:
print(f"\n完了({step + 1}ステップ)")
break
if not dry_run:
# 本番環境では確認後に実行
user_approval = input("このステップを実行しますか?(y/n): ")
if user_approval != "y":
print("ユーザーが中断しました")
break
messages.append({"role": "assistant", "content": agent_output})
messages.append({"role": "user", "content": "続けてください"})
# dry_run=Trueで安全に計画だけ確認
run_agent("プロジェクトの依存パッケージを最新版に更新してください", dry_run=True)