生成AI入門 2026.05.01

Claude vs ChatGPT vs Gemini【2026年版】料金・機能比較|選び方早見表

タグ:料金比較 / 生成AI / Claude / ChatGPT / Gemini

主要プラン料金比較(2026年8月版)

サービス無料個人有料ビジネス
ClaudePro $20 / Max $100Team $25/人
ChatGPTPlus $20 / Pro $200Team $25/人
GeminiAdvanced $20Business込み

API料金比較

モデル入力/1M出力/1M最適な用途
Gemini 2.0 Flash$0.075$0.30高頻度・低コスト
GPT-4o mini$0.15$0.60バランス型
Claude Haiku 4.5$0.80$4.00高速・高品質
GPT-4o$2.50$10.00汎用高品質
Claude Sonnet 4.5$3.00$15.00コード・長文
Claude Opus 5$15.00$75.00最高精度

用途別おすすめモデル選択コード

# model_selector.py
# タスクの種類と要求品質でモデルを自動選択する

import anthropic

client = anthropic.Anthropic()

MODELS = {
    "high_quality":    "claude-sonnet-4-5",
    "fast_cheap":      "claude-haiku-4-5-20251001",
    "max_quality":     "claude-opus-5",
}

PRICES = {
    "claude-sonnet-4-5":         (3.00, 15.00),
    "claude-haiku-4-5-20251001": (0.80, 4.00),
    "claude-opus-5":             (15.00, 75.00),
}

def select_model(task: str, output_length: int = 500) -> str:
    """タスクと必要な出力長に応じてモデルを選択する"""
    task_lower = task.lower()
    
    # コード生成・長文分析 → Sonnet
    if any(kw in task_lower for kw in ["コード", "実装", "デバッグ", "分析", "code", "debug"]):
        return MODELS["high_quality"]
    
    # 短い変換・分類・要約 → Haiku
    elif output_length <= 300:
        return MODELS["fast_cheap"]
    
    # 複雑な推論・戦略立案 → Opus
    elif any(kw in task_lower for kw in ["戦略", "企画", "設計", "research"]):
        return MODELS["max_quality"]
    
    # デフォルト → Haiku(コスト重視)
    return MODELS["fast_cheap"]

def smart_ask(task: str, question: str) -> dict:
    """タスクに合ったモデルを自動選択してAPIコールする"""
    model = select_model(task, len(question))
    
    response = client.messages.create(
        model=model,
        max_tokens=min(len(question) * 2, 2048),
        messages=[{"role": "user", "content": question}]
    )
    
    inp_price, out_price = PRICES[model]
    cost = (response.usage.input_tokens * inp_price + response.usage.output_tokens * out_price) / 1_000_000
    
    return {
        "answer": response.content[0].text,
        "model_used": model,
        "cost_usd": round(cost, 5)
    }

# 使用例
tasks = [
    ("コード生成", "PythonでバイナリサーチをO(log n)で実装してください"),
    ("短い要約", "以下を3行で要約: AIとは人工知能の略で..."),
    ("戦略立案", "2026年のAIスタートアップの差別化戦略を考えてください"),
]

for task, question in tasks:
    result = smart_ask(task, question)
    print(f"[{task}] モデル: {result['model_used']} | コスト: ${result['cost_usd']:.5f}")

3サービスを並列比較する

# parallel_comparison.py
# 同じ質問をClaude・GPT・Geminiに並列送信して結果を比較する

import anthropic
import openai
from concurrent.futures import ThreadPoolExecutor

claude = anthropic.Anthropic()
oai = openai.OpenAI()

def ask_claude(q: str) -> tuple[str, float]:
    r = claude.messages.create(model="claude-haiku-4-5-20251001", max_tokens=256,
                                messages=[{"role": "user", "content": q}])
    cost = (r.usage.input_tokens * 0.80 + r.usage.output_tokens * 4.00) / 1_000_000
    return r.content[0].text, cost

def ask_gpt(q: str) -> tuple[str, float]:
    r = oai.chat.completions.create(model="gpt-4o-mini", max_tokens=256,
                                     messages=[{"role": "user", "content": q}])
    return r.choices[0].message.content, r.usage.total_tokens * 0.15 / 1_000_000

def compare_all(question: str) -> dict:
    """3サービスを並列実行して結果を比較する"""
    with ThreadPoolExecutor(max_workers=3) as executor:
        claude_future = executor.submit(ask_claude, question)
        gpt_future = executor.submit(ask_gpt, question)
        
        claude_ans, claude_cost = claude_future.result()
        gpt_ans, gpt_cost = gpt_future.result()
    
    return {
        "Claude Haiku": {"answer": claude_ans[:100], "cost": claude_cost},
        "GPT-4o mini":  {"answer": gpt_ans[:100], "cost": gpt_cost},
    }

results = compare_all("生成AIの主なユースケースを3つ教えてください")
for name, data in results.items():
    print(f"[{name}] コスト: ${data['cost']:.5f}")
    print(f"  {data['answer']}\n")

あわせて読みたい

参考ソース