主要プラン料金比較(2026年8月版)
| サービス | 無料 | 個人有料 | ビジネス |
|---|
| Claude | ○ | Pro $20 / Max $100 | Team $25/人 |
| ChatGPT | ○ | Plus $20 / Pro $200 | Team $25/人 |
| Gemini | ○ | Advanced $20 | Business込み |
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")
あわせて読みたい