コンテンツにスキップ

Anthropicの会話フォーマット(Python)

本ページの概要

公式ドキュメント

  • Anthropic Messages
  • Anthropic Streaming Messages

これは Anthropic 形式の完全な Python コードで、anthropic SDK を使って Anthropic API を呼び出すためのものです。

import anthropic # anthropic モジュールをインポート
import httpx # anthropic ライブラリはネットワークリクエストに httpx を依存
import os # 環境変数から API キーを取得するために使用(推奨)
# --- 設定 ---
# 強く推奨: API キーはコードに直書きせず、環境変数に保存してください。
# たとえば、ターミナルで次を設定します: export ANTHROPIC_API_KEY="sk-your-anthropic-api-key"
# または Windows PowerShell では: $env:ANTHROPIC_API_KEY="sk-your-anthropic-api-key"
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
# 環境変数を設定していない場合や、一時的に試したい場合は、下の行のコメントを外してキーを入力してください
ANTHROPIC_API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Anthropic API キーに置き換えてください
# カスタム Base URL(Anthropic に特定のプロキシ経由でアクセスする場合のみ必要)
# たとえば、以前の sg.4All API.com/v1 でも Anthropic リクエストをプロキシしている場合
# ANTHROPIC_BASE_URL = "https://sg.4All API.com/v1"
ANTHROPIC_BASE_URL = "https://sg.4All API.com" # 既定は None、SDK は Anthropic 公式エンドポイントを使用
# モデル選択(API キーの権限と要件に応じて選択)
# Claude 3 Opus: "claude-3-opus-20240229"(最も高性能だが、より高い権限または有料プランが必要な場合あり)
# Claude 3 Sonnet: "claude-3-sonnet-20240229"(性能とコストのバランスが良い)
# Claude 3 Haiku: "claude-3-haiku-20240307"(最速かつ最も経済的)
MODEL_NAME = "claude-3-7-sonnet-20250219" # 既定では Sonnet を使用、変更可能
# --- セキュリティ警告 ---
if not os.getenv("ANTHROPIC_API_KEY") and ANTHROPIC_API_KEY and "sk-anthropic-xxxx" not in ANTHROPIC_API_KEY:
print("**********************************************************************************")
print("警告:API キーがコード内にハードコードされているようです。")
print("テストには便利ですが、API キーのような機密情報をコードに直接書き込むことには")
print("重大なセキュリティリスクがあります。特に、コードを共有したり、バージョン管理システム(Git など)にコミットしたり、本番環境へデプロイする場合は注意してください。")
print("本番環境では、環境変数などのより安全な方法で API キーを管理することを強く推奨します。")
print("例: export ANTHROPIC_API_KEY='your_actual_api_key'")
print("**********************************************************************************")
# 1. API キーの検証
if not ANTHROPIC_API_KEY:
raise ValueError(
"API キー (ANTHROPIC_API_KEY) が設定されていません。\n"
"環境変数 ANTHROPIC_API_KEY を設定するか、コード内で直接 ANTHROPIC_API_KEY を指定してください(本番環境では非推奨)。"
)
else:
print(f"使用中の API Key(部分表示): '{ANTHROPIC_API_KEY[:12]}...{ANTHROPIC_API_KEY[-4:]}'") # sk-anthropic- プレフィックスの一部を表示
if ANTHROPIC_BASE_URL:
print(f"使用中のカスタム Base URL: {ANTHROPIC_BASE_URL}")
else:
print("Anthropic の既定 Base URL を使用します。")
# 2. API クライアントの設定
try:
client_params = {
"api_key": ANTHROPIC_API_KEY,
"timeout": httpx.Timeout(300.0, connect=60.0), # 総タイムアウト300秒、接続タイムアウト60秒
"max_retries": 1,
}
if ANTHROPIC_BASE_URL:
client_params["base_url"] = ANTHROPIC_BASE_URL
client = anthropic.Anthropic(**client_params)
except Exception as e:
print(f"Anthropic クライアントの作成中にエラーが発生しました: {e}")
exit()
# 3. API リクエスト用メッセージ本文の準備
# Anthropic の messages API 形式は OpenAI に似ています
messages_payload = [
{"role": "user", "content": "你好,你能做什么?请用中文回答。"}
]
# 4. リクエスト送信とレスポンス処理
try:
print(f"\nAnthropic API の呼び出しを試行中です(モデル: {MODEL_NAME})...")
response = client.messages.create(
model=MODEL_NAME,
max_tokens=200, # 有意な応答には、Claude 3 Sonnet では少なくとも150〜200 tokens を推奨
temperature=0.7, # 生成テキストのランダム性を制御する温度パラメータ
messages=messages_payload
# system="You are a helpful assistant." # 任意のシステムプロンプト
)
# 5. モデルが生成した応答内容を抽出して出力
if response.content and isinstance(response.content, list) and len(response.content) > 0:
# 通常、非ストリーミング応答では content は response.content[0].text にあります
assistant_reply = response.content[0].text
print("\nモデルの応答:")
print(assistant_reply)
else:
print("\nAPI から有効な応答を取得できませんでした。")
if response.stop_reason:
print(f"停止理由: {response.stop_reason}")
# print("完全なレスポンスオブジェクト:", response.model_dump_json(indent=2)) # デバッグ用
# 使用量情報を出力(利用可能な場合)
if response.usage:
print("\n使用量情報:")
print(f" 入力 Token: {response.usage.input_tokens}")
print(f" 出力 Token: {response.usage.output_tokens}")
except anthropic.APIStatusError as e:
print(f"\nAnthropic API がエラー状態コードを返しました: {e.status_code}")
print(f"エラータイプ: {e.type}" if hasattr(e, 'type') and e.type else "")
print(f"エラーメッセージ: {e.message}" if hasattr(e, 'message') and e.message else "")
print(f"レスポンス詳細: {e.response}") # 元の httpx.Response を含む
if e.status_code == 401:
print("エラー詳細:API キーが無効、または提供されていません。ANTHROPIC_API_KEY を確認してください。")
elif e.status_code == 403:
print("エラー詳細:認証は成功しましたが、キーに要求されたリソース/モデルへのアクセス権がないか、使用制限を超過しているか、アカウントに問題があります。")
print(f" - Anthropic アカウントがモデル '{MODEL_NAME}' へのアクセス権を持っているか確認してください。")
print(" - アカウントの使用量、請求ステータス、API キーの権限を確認してください。")
print(" - たとえば 'claude-3-haiku-20240307' や 'claude-3-sonnet-20240229' など、別のモデルを試してください。")
elif e.status_code == 404:
print(f"エラー詳細:要求されたリソースが見つかりません。モデル名 '{MODEL_NAME}' が正しくないか、利用できない可能性が高いです。")
print(" - 正しいモデル名については Anthropic のドキュメントを確認してください。")
elif e.status_code == 429:
print("エラー詳細:Anthropic API のレート制限に達しました。しばらくしてから再試行するか、レート制限ポリシーを確認してください。")
elif e.status_code >= 500:
print("エラー詳細:Anthropic 側のサーバーエラーです。しばらくしてから再試行してください。")
except anthropic.APIConnectionError as e:
print(f"\nAnthropic API に接続できませんでした: {e}")
print(" - ネットワーク接続を確認してください。")
print(f" - カスタム Base URL ('{ANTHROPIC_BASE_URL}') を使用している場合は、正しくアクセス可能か確認してください。")
except anthropic.RateLimitError as e:
print(f"\nAnthropic API のレート制限に達しました: {e}")
except anthropic.AuthenticationError as e:
print(f"\nAnthropic API の認証に失敗しました: {e}")
print(" - ANTHROPIC_API_KEY が正しく有効なものか、もう一度確認してください。")
except Exception as e:
print(f"\nAPI 呼び出し中に不明なエラーが発生しました: {e}")
print(f"エラータイプ: {type(e).__name__}")
  • anthropic ライブラリをインストールする(まだの場合): pip install anthropic
  • API キーを設定する: 推奨: 環境変数 ANTHROPIC_API_KEY を設定する。
  1. .env 変数ファイルを作成する
  • Python スクリプト(例: xxxx.py)があるのと同じディレクトリに、.env という名前のファイルを作成します(注意: ファイル名は .env で、先頭にドットがあり、それ以外の接頭辞はありません)。
  • その .env ファイルに、以下の内容を入力し、API キーとベース URL を設定してください: # .env ファイルの内容 OPENAI_API_KEY=“sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” OPENAI_BASE_URL=“https://sg.4All API.com/v1”

今後、他の設定変数も追加できます。例えば:

Section titled “今後、他の設定変数も追加できます。例えば:”

DEFAULT_MODEL=“claude-4-6-sonnet-20250219”

Section titled “DEFAULT_MODEL=“claude-4-6-sonnet-20250219””
2. または、コード内で `ANTHROPIC_API_KEY = "sk-anthropic-..."` の行を直接編集します(共有コードや本番コードには非推奨)。
二、 **モデルの選択**:
- コードでは既定で `MODEL_NAME = "claude-4-6-sonnet-20250219"` が使われています。
- Opus や Haiku を使いたい場合は、`4All API.com` の管理画面で取得した別のモデル名にこの変数を変更してください。**API キーが選択したモデルにアクセスできることを必ず確認してください。** 以前の 403 エラーでも見られたように、Opus モデルにはより厳しいアクセス要件がある場合があります。
三. **カスタム Base URL(必要な場合)**:
- `https://api.4All API.com/v1` のようなプロキシサーバー経由で Anthropic にアクセスしており、そのプロキシが Anthropic のリクエストも処理している場合。