「Claude APIって聞いたことはあるけど、自分で使えるかどうか不安…」そんな気持ちを持っている方、多いんじゃないでしょうか。😊
実は、PythonさえちょっとわかればClaude APIはびっくりするくらいシンプルに使えます。今回はゼロから一緒に、AIと会話できるチャットアプリを作っていきましょう!
「むずかしそう」を「できそう」に変えるのが、この記事のゴールです。✨
📌 この記事で学べること・対象読者

まず、この記事がどんな方に向けているかを確認しておきましょう。
- ✅ Python の基本文法(変数・関数・if文)がわかる方
- ✅ APIって何?くらいの知識レベルの初〜中級者
- ✅ Claude や Anthropic に興味はあるけど触ったことがない方
この記事を読み終わると、こんなことができるようになります。
- Claude APIの取得〜初回実行までの流れが理解できる
- シンプルなAIチャットアプリが自分で書ける
- 会話履歴を保持する「文脈を覚えるAI」が作れる
- ストリーミング出力でリアルタイムな応答表示ができる
ざっくりとした流れがつかめるはずですので、最後までお付き合いください!
🤖 Claude APIとは?まず30秒でおさらい
Claude は、Anthropic(アンソロピック)という企業が開発しているAIアシスタントです。ChatGPTと同じようなイメージで使えますが、長文の文章処理や安全性の高さが特徴として知られています。
そして Claude API とは、そのClaude の機能をプログラムから呼び出すための「窓口」のことです。
イメージとしては、レストランの「注文カウンター」みたいなものです。あなたがPythonコードで「こんな質問をして!」とオーダーを出すと、Claude がキッチンで処理して回答を返してくれる、という流れです。🍽️
🔑 STEP 1:APIキーを取得しよう
まずは Claude API を使うための「鍵(APIキー)」を取得します。APIキーは身分証明書みたいなものです。これがないとAPIを呼び出せません。
取得手順
- Anthropic の公式サイト(console.anthropic.com)にアクセス
- アカウントを作成してログイン
- 「API Keys」メニューから「Create Key」をクリック
- 表示されたキーをコピーして、安全な場所に保存
⚠️ 重要:APIキーは絶対にコードに直接書かないでください! GitHubなどに公開してしまうと、他人に使われてしまいます。環境変数(後述)で管理するのが基本です。
なお、APIは一定量まで無料トライアルが使えますが、超えると従量課金になります。最初は使いすぎないよう注意しながら試してみましょう。
📦 STEP 2:必要なライブラリをインストールしよう
Python で Claude API を使うには、Anthropic が公式に提供している anthropicライブラリを使います。インストールはたった1行です。
# ターミナルで実行
pip install anthropic
また、APIキーを環境変数で管理するために python-dotenv もインストールしておきましょう。
pip install python-dotenv
インストールできたら、プロジェクトフォルダに .env ファイルを作って、APIキーを書いておきます。
# .env ファイルの中身
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx
これで準備はOKです!次からいよいよコードを書いていきます。🚀
💬 STEP 3:はじめての Claude API 呼び出し
まずは一番シンプルな形で、Claude に1つ質問を投げかけてみましょう。
import anthropic
from dotenv import load_dotenv
import os
# .envファイルからAPIキーを読み込む
load_dotenv()
# Anthropicクライアントを初期化
client = anthropic.Anthropic(
api_key=os.environ.get("ANTHROPIC_API_KEY")
)
# Claude に質問を送る
message = client.messages.create(
model="claude-opus-4-5", # 使用するモデル名
max_tokens=1024, # 最大トークン数(応答の長さ上限)
messages=[
{
"role": "user",
"content": "Pythonの良いところを3つ教えてください。"
}
]
)
# 応答テキストを取り出して表示
print(message.content[0].text)
ポイントをまとめるとこんな感じです。
- model:使うAIモデルを指定します。
claude-opus-4-5が現時点で高性能なモデルです - max_tokens:応答の最大文字量(トークン数)を指定します。長い回答が必要なら大きくしましょう
- messages:会話のやり取りをリスト形式で渡します。
roleが「誰が話したか」、contentが「何を話したか」です - message.content[0].text:応答テキストはここに入っています
これを実行すると、Claude がPythonの良いところを丁寧に答えてくれます。動いた瞬間、ちょっと感動しますよ。😄
🧠 STEP 4:会話履歴を保持するチャットアプリを作ろう
さっきのコードは「1問1答」でした。でも実際のチャットアプリは、前の会話を覚えていて文脈に沿って答えてくれますよね。
Claude APIでそれを実現するには、過去のやり取りをすべて messages リストに積み重ねて渡すだけでOKです。つまり、自分でチャット履歴を管理する、というイメージです。
import anthropic
from dotenv import load_dotenv
import os
load_dotenv()
client = anthropic.Anthropic(
api_key=os.environ.get("ANTHROPIC_API_KEY")
)
# 会話履歴を保存するリスト
conversation_history = []
def chat(user_input):
"""ユーザーの入力を受け取りClaudeと会話する関数"""
# ユーザーの発言を履歴に追加
conversation_history.append({
"role": "user",
"content": user_input
})
# 履歴ごとClaudeに送る(ここがポイント!)
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
messages=conversation_history # 全履歴を渡す
)
# Claudeの応答を取り出す
assistant_message = response.content[0].text
# Claudeの応答も履歴に追加しておく
conversation_history.append({
"role": "assistant",
"content": assistant_message
})
return assistant_message
# メインループ(終了するまで会話を続ける)
print("Claudeとチャットを開始します(終了するには 'quit' と入力)")
print("-" * 50)
while True:
user_input = input("あなた: ")
if user_input.lower() in ["quit", "exit", "終了"]:
print("チャットを終了します。またね!")
break
response = chat(user_input)
print(f"Claude: {response}")
print("-" * 50)
ここが重要です。
conversation_historyというリストに、やり取りのたびにuserとassistantの発言を交互に追加しています- 毎回の API 呼び出しで、この 全履歴を messages に渡すことで、Claude が「あ、さっきこういう話をしてたんだな」と理解できます
- 会話が長くなるほど履歴が増え、APIコストも増えるので注意しましょう
これを実行すると、ちゃんと前の会話を踏まえた返答が来るようになります!一気に「チャットアプリっぽさ」が出てきますね。😊
⚡ STEP 5:ストリーミング出力でリアルタイム表示にしよう
ここまでのコードは、Claude が全文考えてから一気に返す形でした。でもChatGPTや Claude.ai では、文字がリアルタイムにポンポン表示されますよね。あの演出を ストリーミングといいます。
Anthropicライブラリではストリーミングも簡単に実装できます。
import anthropic
from dotenv import load_dotenv
import os
load_dotenv()
client = anthropic.Anthropic(
api_key=os.environ.get("ANTHROPIC_API_KEY")
)
def chat_stream(user_message):
"""ストリーミングでClaudeの応答をリアルタイム表示する"""
print("Claude: ", end="", flush=True)
# stream=True ではなく、with構文でストリームを使う
with client.messages.stream(
model="claude-opus-4-5",
max_tokens=1024,
messages=[
{"role": "user", "content": user_message}
]
) as stream:
# テキストが届くたびにリアルタイムで出力
for text in stream.text_stream:
print(text, end="", flush=True) # 改行なしで順番に出力
print() # 最後に改行を入れる
# 試してみよう
chat_stream("Pythonでできる面白いプロジェクトを5つ提案してください。")
ポイントをまとめるとこんな感じです。
- client.messages.stream():ストリーミング用のメソッドです。
with構文で使います - stream.text_stream:テキストが少しずつ届くたびにループが回ります
- end=””, flush=True:改行なし・即時出力にすることで、リアルタイムに文字が流れる演出ができます
実行すると、ChatGPTみたいにスラスラ文字が表示されます。ユーザー体験がぐっと上がりますよ。✨
🛠️ STEP 6:システムプロンプトでAIの性格を設定しよう
最後に、もう一つ便利な機能を紹介します。システムプロンプトです。
これは「このAIはこういうキャラクターで動いてほしい」という初期設定のようなものです。たとえば「あなたはPythonのベテランエンジニアです。初心者にわかりやすく教えてください」と指示できます。
import anthropic
from dotenv import load_dotenv
import os
load_dotenv()
client = anthropic.Anthropic(
api_key=os.environ.get("ANTHROPIC_API_KEY")
)
# システムプロンプト:AIの役割・性格を定義
SYSTEM_PROMPT = """
あなたはPythonに詳しい親切なプログラミング講師です。
以下のルールを守って回答してください:
- 初心者にもわかりやすい言葉で説明する
- コード例を積極的に使う
- 専門用語には必ず補足説明をつける
- 励ましの言葉を自然に加える
"""
def chat_with_persona(user_input, conversation_history):
"""システムプロンプトありで会話する"""
conversation_history.append({
"role": "user",
"content": user_input
})
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
system=SYSTEM_PROMPT, # ← ここでシステムプロンプトを渡す
messages=conversation_history
)
assistant_reply = response.content[0].text
conversation_history.append({
"role": "assistant",
"content": assistant_reply
})
return assistant_reply
# 実際に動かしてみる
history = []
print("Pythonお助けAIです!何でも聞いてください 🐍")
print("-" * 50)
while True:
user_input = input("質問: ")
if user_input.lower() in ["quit", "終了"]:
break
reply = chat_with_persona(user_input, history)
print(f"AI講師: {reply}")
print("-" * 50)
ここが重要です。
- system パラメータに文字列で指示を渡すだけで、AIの性格や役割を固定できます
- messages リストには含めず、専用の引数として渡すのがポイントです
- カスタマーサポートBot・勉強アシスタント・料理アドバイザーなど、アイデア次第でいろんなアプリが作れます!
🚨 よくあるエラーと対処法
実装中に詰まりやすいポイントも確認しておきましょう。
| エラー内容 | 原因と対処法 |
|---|---|
AuthenticationError |
APIキーが間違っているか読み込めていない。.envファイルの場所とキーの記述を確認 |
RateLimitError |
リクエスト数が上限を超えた。少し時間をおいてから再試行 |
BadRequestError |
messagesリストの形式が正しくない。roleとcontentが揃っているか確認 |
| 応答が途中で切れる | max_tokensが少なすぎる。値を増やしてみよう |
エラーが出たとき、まず APIキーの読み込み と messagesの形式 の2点を確認するだけで大半は解決します。ここを押さえておくと安心です。😌
📝 まとめ
今回は Claude API を Python で使うための基本から、実用的なチャットアプリの作り方まで一緒に学びました。
- ✅ APIキーの取得と環境変数での安全な管理
- ✅ anthropicライブラリで最初のAPI呼び出し
- ✅ 会話履歴を保持する本格チャットアプリ
- ✅ ストリーミングでリアルタイム表示
- ✅ システムプロンプトでAIに個性を与える
Claude API、思っていたよりずっとシンプルでしたよね。数十行のPythonコードで、本格的なAIチャットアプリが作れてしまうんですよね。😊
ぜひ今日のコードをベースに、自分だけのオリジナルAIアシスタントを作ってみてください。「料理レシピBotを作ってみたい」「英語学習アシスタントが欲しい」など、アイデアをそのままコードに変えられる時代になっています。一緒にどんどん試していきましょう!🚀





