Claude APIガイド:2026年AnthropicのClaudeでAIアプリを作る
Claude APIガイド:2026年AnthropicのClaudeでAIアプリを作る
Claude API完全ガイド。認証、リクエスト、ストリーミング、ツール使用、実践AIアプリ構築まで。
2026年3月17日4分で読了
Claude APIとは
AnthropicのClaudeは、2026年現在、最も高い評価を受けているLLM(大規模言語モデル)の一つです。Claude APIを使うことで、チャットボット、コード生成ツール、文書要約システム、マルチエージェントシステムなど、さまざまなAIアプリケーションを構築できます。
本ガイドでは、Claude APIの使い方を基礎から実践まで、コード例を交えて解説します。
モデル一覧(2026年3月時点)
| モデル | 用途 | コンテキスト | 特徴 |
|---|---|---|---|
| claude-opus-4-6 | 高度な推論・複雑なタスク | 200K tokens | 最高性能 |
| claude-sonnet-4-6 | バランス重視 | 200K tokens | 性能とコストのバランス |
| claude-haiku-3-5 | 高速・軽量タスク | 200K tokens | 最速・最安 |
セットアップ
APIキーの取得
- console.anthropic.com にアクセス
- アカウント作成またはログイン
- API Keys セクションで新しいキーを生成
# 環境変数にAPIキーを設定
export ANTHROPIC_API_KEY="sk-ant-..."
# .envファイルを使う場合
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env
SDKのインストール
# Python
pip install anthropic
# Node.js
npm install @anthropic-ai/sdk
基本的なメッセージ送信
Python
import anthropic
client = anthropic.Anthropic()
# シンプルなメッセージ
message = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "Pythonでバブルソートを実装してください。"}
]
)
print(message.content[0].text)
JavaScript/TypeScript
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const message = await client.messages.create({
model: "claude-opus-4-6",
max_tokens: 1024,
messages: [
{
role: "user",
content: "TypeScriptでバブルソートを実装してください。",
},
],
});
console.log(message.content[0].text);
システムプロンプト
システムプロンプトを使って、Claudeの役割や振る舞いを設定できます。
message = client.messages.create(
model="claude-opus-4-6",
max_tokens=2048,
system="""あなたはToolBox Hubの専任サポートエンジニアです。
開発者の技術的な質問に回答します。
- 常に日本語で回答する
- コード例を積極的に使う
- 不明な点は正直に「わからない」と答える
- 回答は簡潔で実践的にする""",
messages=[
{"role": "user", "content": "Dockerコンテナのメモリを制限する方法は?"}
]
)
マルチターン会話
会話履歴を渡すことで、文脈を維持した対話ができます。
from anthropic import Anthropic
client = Anthropic()
def chat(conversation_history: list, user_message: str) -> str:
"""会話履歴を維持しながらチャットする"""
conversation_history.append({
"role": "user",
"content": user_message
})
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=2048,
system="あなたは親切なプログラミングの先生です。",
messages=conversation_history
)
assistant_message = response.content[0].text
conversation_history.append({
"role": "assistant",
"content": assistant_message
})
return assistant_message
# 使用例
history = []
print(chat(history, "Pythonのジェネレーターとは何ですか?"))
print(chat(history, "実際のコード例を見せてください"))
print(chat(history, "イテレーターとの違いは?"))
ストリーミングレスポンス
長い回答の場合、ストリーミングを使うと応答がリアルタイムで表示されます。
# Python:ストリーミング
import anthropic
client = anthropic.Anthropic()
with client.messages.stream(
model="claude-opus-4-6",
max_tokens=2048,
messages=[
{"role": "user", "content": "Reactの状態管理について詳しく説明してください。"}
]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
print() # 改行
// TypeScript:ストリーミング
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const stream = client.messages.stream({
model: "claude-opus-4-6",
max_tokens: 2048,
messages: [
{
role: "user",
content: "Reactの状態管理について詳しく説明してください。",
},
],
});
// リアルタイムでテキストを受け取る
for await (const event of stream) {
if (
event.type === "content_block_delta" &&
event.delta.type === "text_delta"
) {
process.stdout.write(event.delta.text);
}
}
Tool Use(関数呼び出し)
Tool Useを使うと、Claudeが外部APIや関数を呼び出せるようになります。
import anthropic
import json
client = anthropic.Anthropic()
# ツールの定義
tools = [
{
"name": "get_weather",
"description": "指定した都市の現在の天気を取得します",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "天気を取得する都市名(例:Tokyo, Osaka)"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "温度の単位"
}
},
"required": ["city"]
}
},
{
"name": "search_database",
"description": "商品データベースを検索します",
"input_schema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "検索クエリ"
},
"limit": {
"type": "integer",
"description": "返す結果の最大数",
"default": 10
}
},
"required": ["query"]
}
}
]
def get_weather(city: str, unit: str = "celsius") -> dict:
"""実際の天気APIを呼び出す(例示用のモック)"""
return {
"city": city,
"temperature": 22,
"unit": unit,
"condition": "晴れ",
"humidity": 65
}
def process_tool_call(tool_name: str, tool_input: dict) -> str:
"""ツール呼び出しを処理する"""
if tool_name == "get_weather":
result = get_weather(**tool_input)
return json.dumps(result, ensure_ascii=False)
return "ツールが見つかりません"
# エージェントループ
messages = [{"role": "user", "content": "東京の天気を教えてください"}]
while True:
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
tools=tools,
messages=messages
)
if response.stop_reason == "tool_use":
# ツール呼び出しを処理
tool_uses = [b for b in response.content if b.type == "tool_use"]
tool_results = []
for tool_use in tool_uses:
result = process_tool_call(tool_use.name, tool_use.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": tool_use.id,
"content": result
})
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": tool_results})
else:
# 最終回答
print(response.content[0].text)
break
ビジョン(画像理解)
ClaudeはBase64エンコードされた画像やURLから画像を理解できます。
import anthropic
import base64
client = anthropic.Anthropic()
# ローカル画像をBase64にエンコード
with open("screenshot.png", "rb") as f:
image_data = base64.standard_b64encode(f.read()).decode("utf-8")
message = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data,
},
},
{
"type": "text",
"text": "このスクリーンショットのUIの問題点を指摘してください。"
}
],
}
],
)
print(message.content[0].text)
実践:コードレビューボット
import anthropic
from pathlib import Path
client = anthropic.Anthropic()
def review_code(file_path: str, language: str = "Python") -> str:
"""コードファイルをレビューする"""
code = Path(file_path).read_text(encoding="utf-8")
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
system=f"""あなたはシニアの{language}開発者です。
コードレビューを行い、以下の点を確認してください:
1. バグや潜在的な問題
2. パフォーマンスの改善点
3. セキュリティの懸念事項
4. コードの可読性と保守性
5. ベストプラクティスへの準拠
日本語で回答し、具体的な改善提案を含めてください。""",
messages=[
{
"role": "user",
"content": f"以下の{language}コードをレビューしてください:\n\n```{language.lower()}\n{code}\n```"
}
]
)
return response.content[0].text
# 使用例
review = review_code("app.py", "Python")
print(review)
ベストプラクティス
1. エラーハンドリング
from anthropic import Anthropic, APIError, RateLimitError
import time
def safe_message(client: Anthropic, messages: list, max_retries: int = 3) -> str:
for attempt in range(max_retries):
try:
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=messages
)
return response.content[0].text
except RateLimitError:
wait_time = 2 ** attempt # 指数バックオフ
time.sleep(wait_time)
except APIError as e:
if attempt == max_retries - 1:
raise
time.sleep(1)
raise Exception("最大リトライ回数に達しました")
2. コスト最適化
# より安いモデルを使い分ける
def choose_model(task_complexity: str) -> str:
"""タスクの複雑さに応じてモデルを選択"""
models = {
"simple": "claude-haiku-3-5", # 分類、要約など
"medium": "claude-sonnet-4-6", # 一般的なコーディング
"complex": "claude-opus-4-6", # 複雑な推論、アーキテクチャ設計
}
return models.get(task_complexity, "claude-sonnet-4-6")
まとめ
Claude APIを使うことで、以下のようなアプリケーションを構築できます:
- チャットボット: カスタマーサポート、社内Q&A
- コードアシスタント: レビュー、バグ修正、ドキュメント生成
- 文書処理: 要約、翻訳、分析
- マルチエージェント: 複数のClaudeインスタンスが協力するシステム
APIキーを取得して、まずは最もシンプルなメッセージ送信から試してみてください。Claudeの高い能力を実感できるはずです。