Claude APIとPythonで作るAIチャットボット入門

Anthropic社のClaude APIを使って、Pythonで動作するAIチャットボットを作成する方法を解説します。2024年以降、ClaudeはGPT-4oと並ぶ高性能LLMとして注目を集めています。

Claude APIとは

Claude APIは、Anthropic社が提供する大規模言語モデル(LLM)のAPIです。ChatGPTのOpenAI APIと同様に、HTTPリクエストでAIとの対話が可能です。特にClaude 3.5 Sonnetは、コーディング支援や長文処理において高い性能を発揮します。

環境構築

まずAnthropicの公式サイトでAPIキーを取得し、Pythonの環境を準備します。

pip install anthropic
export ANTHROPIC_API_KEY="your-api-key-here"

基本的なチャットボットの実装

以下がClaude APIを使った最もシンプルなチャットボットの実装です。

import anthropic

client = anthropic.Anthropic()

def chat(user_message: str) -> str:
    message = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=1024,
        messages=[
            {"role": "user", "content": user_message}
        ]
    )
    return message.content[0].text

# 対話ループ
while True:
    user_input = input("You: ")
    if user_input.lower() in ["quit", "exit"]:
        break
    response = chat(user_input)
    print(f"Claude: {response}")

会話履歴を保持する

実用的なチャットボットでは、会話の文脈を保持する必要があります。messagesリストに過去のやり取りを蓄積することで実現できます。

class ChatBot:
    def __init__(self, system_prompt="あなたは親切なアシスタントです。"):
        self.client = anthropic.Anthropic()
        self.system = system_prompt
        self.messages = []

    def send(self, user_message: str) -> str:
        self.messages.append({"role": "user", "content": user_message})
        response = self.client.messages.create(
            model="claude-sonnet-4-20250514",
            max_tokens=2048,
            system=self.system,
            messages=self.messages
        )
        assistant_msg = response.content[0].text
        self.messages.append({"role": "assistant", "content": assistant_msg})
        return assistant_msg

bot = ChatBot("あなたはPythonプログラミングの専門家です。")
print(bot.send("リスト内包表記について教えてください"))
print(bot.send("具体例をもう少し見せてください"))

エラーハンドリング

本番環境ではレート制限やネットワークエラーへの対策が必要です。anthropicライブラリは自動リトライ機能を備えていますが、明示的なエラーハンドリングも重要です。

import anthropic
from anthropic import RateLimitError, APIConnectionError

try:
    response = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=1024,
        messages=[{"role": "user", "content": "Hello"}]
    )
except RateLimitError:
    print("レート制限に達しました。しばらく待ってから再試行してください。")
except APIConnectionError:
    print("API接続エラー。ネットワーク状態を確認してください。")

まとめ

Claude APIは直感的なインターフェースで、少ないコード量でAIチャットボットを構築できます。次回はFunction Callingを活用した、外部データベースと連携するチャットボットの作り方を紹介します。

コメント

コメントを残す

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

IP: 取得中...
216.73.216.31216.73.216.31