生成AI入門 2026.04.19

ChatGPT vs Claude vs Gemini【2026年版】機能・料金・使い分け完全比較

タグ:生成AI入門 / ChatGPT / Claude / Gemini / 比較 / 初心者向け

3大AIの基本比較(2026年8月版)

項目ChatGPT (GPT-5)Claude Sonnet 4.5Gemini 2.0 Flash
開発元OpenAIAnthropicGoogle
月額(個人)$20 Plus / $200 Pro$20 Pro / $100 Max$20 Advanced
API入力料金~$10/1M$3/1M$0.075/1M
コンテキスト128K200K1M
得意分野創造的タスク・画像生成コード・長文分析検索連携・Google連携

用途別おすすめAI

コード生成・リファクタリング → Claude Sonnet 4.5
   理由: 200Kコンテキストで大きなコードベース処理、CLAUDE.md設定可能

最新情報の調査・リサーチ → Gemini 2.0 Flash
   理由: Google検索連携で最新情報を引用

DALL-E画像生成が必要 → ChatGPT Plus
   理由: DALL-E 3が統合済み

日常的な文章作成 → 3つとも無料版で十分
   理由: 価格差ほどの品質差はない

API経由の自動化 → コスト優先ならGemini、品質優先ならClaude

マルチモデル比較コード

# compare_three_ais.py
# 同じ質問をClaude・GPT・Geminiに送って回答を比較する

import anthropic
import openai
import google.generativeai as genai  # pip install google-generativeai
import os

claude_client = anthropic.Anthropic()
openai_client = openai.OpenAI()
genai.configure(api_key=os.environ.get("GOOGLE_API_KEY"))

MODELS = {
    "claude-sonnet": ("claude-sonnet-4-5", "claude"),
    "gpt-4o":        ("gpt-4o", "openai"),
    "gemini-flash":  ("gemini-2.0-flash-exp", "gemini"),
}

def ask_claude(prompt: str) -> tuple[str, float]:
    response = claude_client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=512,
        messages=[{"role": "user", "content": prompt}]
    )
    cost = (response.usage.input_tokens * 3.00 + response.usage.output_tokens * 15.00) / 1_000_000
    return response.content[0].text, cost

def ask_gpt(prompt: str) -> tuple[str, float]:
    response = openai_client.chat.completions.create(
        model="gpt-4o", max_tokens=512,
        messages=[{"role": "user", "content": prompt}]
    )
    tokens = response.usage.total_tokens
    cost = tokens * 2.50 / 1_000_000  # GPT-4o $2.50/1M
    return response.choices[0].message.content, cost

def ask_gemini(prompt: str) -> tuple[str, float]:
    model = genai.GenerativeModel("gemini-2.0-flash-exp")
    response = model.generate_content(prompt)
    cost = 0.00001  # Gemini Flash は超安価
    return response.text, cost

def compare_ais(question: str) -> dict:
    """3つのAIに同じ質問して回答とコストを比較する"""
    results = {}
    
    for name, func in [("Claude", ask_claude), ("GPT-4o", ask_gpt), ("Gemini", ask_gemini)]:
        answer, cost = func(question)
        results[name] = {
            "answer_preview": answer[:200] + "..." if len(answer) > 200 else answer,
            "cost_usd": round(cost, 5)
        }
        print(f"[{name}] コスト: ${cost:.5f}")
    
    return results

# 使用例
results = compare_ais("Pythonのデコレータパターンを3行で説明してください")
for ai, data in results.items():
    print(f"\n=== {ai} (${data['cost_usd']}) ===")
    print(data["answer_preview"])

あわせて読みたい

参考ソース