AI・機械学習

Claude APIをPythonで使う完全入門ガイド|初心者でもAIチャットアプリが作れる!

「Claude APIって聞いたことはあるけど、自分で使えるかどうか不安…」そんな気持ちを持っている方、多いんじゃないでしょうか。😊

実は、PythonさえちょっとわかればClaude APIはびっくりするくらいシンプルに使えます。今回はゼロから一緒に、AIと会話できるチャットアプリを作っていきましょう!

「むずかしそう」を「できそう」に変えるのが、この記事のゴールです。✨

📌 この記事で学べること・対象読者

AI chatbot python
AI chatbot python / Photo by Matheus Bertelli via Pexels

まず、この記事がどんな方に向けているかを確認しておきましょう。

  • ✅ 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を呼び出せません。

取得手順

  1. Anthropic の公式サイト(console.anthropic.com)にアクセス
  2. アカウントを作成してログイン
  3. 「API Keys」メニューから「Create Key」をクリック
  4. 表示されたキーをコピーして、安全な場所に保存

⚠️ 重要: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 というリストに、やり取りのたびに userassistant の発言を交互に追加しています
  • 毎回の 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を作ってみたい」「英語学習アシスタントが欲しい」など、アイデアをそのままコードに変えられる時代になっています。一緒にどんどん試していきましょう!🚀

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です