生成AI入門 2026.04.30

AIエージェント vs AIアシスタントの違いとは?特徴・できること・使い分けを徹底比較

タグ:AIエージェント / AIアシスタント / 生成AI入門 / AI活用 / AI比較

「指示待ち」か「自分で動く」かの違い

項目AIアシスタントAIエージェント
動き方聞かれたら答える(受動的)目標から自律実行(能動的)
代表例ChatGPT・Claude.ai・GeminiClaude 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)

あわせて読みたい

参考ソース