Anthropic ClaudeもWebサービスだけでなく、APIを介して利用できるようになっています。ChatGPTに迫る性能を発揮するClaudeのAPIを利用できると便利です。そこで、Claudeのアカウント登録とAPIの使い方を紹介します。
Claude APIを使うには、Anthropic公式の方法に加えて、AmazonのBedrockからも利用できます。Bedrockを使う方法は次節で解説しますので、本節では、Anthropic公式の方法を解説します。
Claudeは基本的に無料で利用することができますが、有料プランの「Claude Pro」もあります。有料プランに加入することで、利用上限が5倍になり、アクセス集中時に優先的に利用できるようになります。また、新機能への早期アクセスも提供されます。原稿執筆時点で、Claude Proは月々20米ドルとなっています。
なお、執筆時点の価格ですが、高性能なモデル「Claude 2」を使う場合、100万トークンあたり、入力が11.02米ドル、出力が32.68米ドルとなっています。
Anthropic > Product [URL] https://www.anthropic.com/product
Claudeを利用するには、アカウントを作成する必要があります。ブラウザで下記のURLにアクセスしてユーザー登録を行います。
Claudeの登録 [URL] https://claude.ai/login
メールアドレスか、Googleアカウントで登録できます。Googleアカウントで登録するには、下記の「Continue with Google」のボタンをクリックします。
すると、Sign upの画面が出るので、「Full name(名前)」と、「What should we call you?(何と呼べば良いのか) 」を入力し、「Yes, I am over 18 years old(18才以上である)」と「 I agree to Anthropic's Terms...(規約などに同意する)」にチェックを入れて[Continue]ボタンをクリックします。
続いて、日本を選んで、電話番号を入力します。SMS認証が必要となるので、SMSが受信できる番号を入力する必要があります。
認証が終わるといくつか注意事項が表示されますので、[Next]ボタンを押していくとチャットの開始画面が表示されます。画面上部のテキストボックスにメッセージを入力するとチャットを開始できます。
Claude APIを使うには、APIコンソールにアクセスして、APIキーを取得する必要があります。下記のAPIコンソールにアクセスします。
Claude > API Console [URL] https://console.anthropic.com/
なお、API Consoleにアクセスできない場合、APIアクセスのための申請を行う必要があります。(執筆時点では申請が必要でした。)以下のURLのフォームにメールアドレスや名前などを入力して送信して、Anthropicからの返信を待ちましょう。なかなか返信が来ない場合、次節で紹介するAmazon Bedrockを利用することもできます。
Claude API Access [URL] https://www.anthropic.com/earlyaccess
そして、画面右上の丸いアイコンをクリックすると、ポップアップメニューが表示されます。そこから、[API Keys]をクリックします。
そして、[Create Key]をクリックするとAPIキーが生成されます。
作成されたキーは、一覧に表示されます。そして一覧からキーを無効にしたり削除したりできます。一覧の[…]をクリックすると、[Disable Api Key..(無効にする)]と[Delete API Key...(削除する)]を実行できます。
なお、取得したAPIキーをプログラムに記述するのは推奨されていません。環境変数「ANTHROPIC_API_KEY」に登録しましょう。
Windowsであれば、Windowsメニューで「環境変数」を検索して、「システムのプロパティ > 環境変数」で環境変数のパネルを表示しましょう。そして、[新規]ボタンを押して、ANTHROPIC_API_KEYにAPIキーを入力して[OK]ボタンを押します。
macOS/Linuxであれば、利用しているシェルの設定ファイルで環境変数を登録しましょう。Zshを使っている場合、ターミナルで下記のコマンドを実行すると、設定ファイルの編集ができます。
# Zshを使っていて、nanoを使って設定ファイルを編集する場合 $ nano ~/.zshrc # Zshを使っていて、Visual Studio Codeをインストールした場合 $ code ~/.zshrc
下記のように環境変数の設定を追記します。
# Claudeを使うため、Anthropic APIキーを以下に指定 export ANTHROPIC_API_KEY="sk-ant-api03-cHi…gQAA"
ターミナルを起動して、anthropicパッケージをインストールしましょう。以下のコマンドを実行します。
$ python3 -m pip install anthropic==0.7.4
それでは、Claude APIを使ったプログラムを作ってみましょう。以下のプログラムを「claude_hello.py」という名前で保存します。
from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPT # Anthropicのオブジェクトを作成 --- (*1) anthropic = Anthropic() # モデル Claude-2 を使ってAPIを呼び出す --- (*2) def call_claude(prompt): # プロンプトを組み立てる --- (*3) prompt_text = f'{HUMAN_PROMPT} {prompt}\n\n{AI_PROMPT}' # APIを呼び出す --- (*4) completion = anthropic.completions.create( model='claude-2', max_tokens_to_sample=300, prompt=prompt_text) return completion.completion # APIを呼び出す --- (*5) print(call_claude('可愛いネコの名前とその由来を3つ考えてください。'))
プログラムを確認してみましょう。(*1)ではAnthropicのオブジェクトを作成します。引数にAPIキーを指定することもできます。今回は、環境変数「ANTHROPIC_API_KEY」を指定しているため、APIキーの指定を省略しています。
(*2)では関数call_claudeを定義しています。これは、手軽にClaude-2のAPIを呼び出すことができるように関数にしたものです。
(*3)ではClaude-2に与えるプロンプトを指定します。Claude-2で良い精度を出すために、HUMAN_PROMPT(値は"Human:")とAI_PROMPT(値"Assistant:")を利用してプロンプトを組み立てます。
(*4)では、ompletions.createメソッドで、APIを呼び出します。modelにはモデル名を、max_tokens_to_sampleにはトークンの最大値を指定します。これは、生成されるテキストの長さや量を制限するために使用されるパラメータの一つです。生成されるテキストが過度に長くなりすぎないように設定します。
(*5)では上記(*2)で定義したcall_claudeを呼び出します。
それでは、プログラムを実行してみましょう。以下のコマンドを実行します。すると、次のようなネコの名前と由来を表示します。
$ python3 claude_hello.py はい、3つの可愛いネコの名前とその由来を考えます。 モッフィー - ふわふわの毛並みがキャラクターのモッフィーのようだから クローバー - 四つ葉のクローバーのように幸運なネコだから ピーナッツ - 小さいけれど元気いっぱいなネコだから
以下は、ClaudeのAPIで会話もできるように修正したものです。基本的には、これまでの会話履歴を全部覚えておいて、プロンプトして与えることで、続く会話を実現します。
from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPT # Anthropicのオブジェクトを作成 --- (*1) anthropic = Anthropic() chat_logs = [] # モデル Claude-2 を使ってAPIを呼び出す --- (*2) def call_claude_chat(prompt): # プロンプトを組み立てる --- (*3) prompt_line = f'{HUMAN_PROMPT} {prompt}' # 過去ログに今回のプロンプトを追加 chat_logs.append(prompt_line) # Claudeに送信するプロンプトを組み立てる --- (*4) prompt_text = '\n\n'.join(chat_logs) + '\n\n' + AI_PROMPT # APIを呼び出す --- (*5) completion = anthropic.completions.create( model='claude-2', max_tokens_to_sample=300, prompt=prompt_text) # 過去ログに応答を追加 --- (*6) res_line = f'{AI_PROMPT} {completion.completion}' chat_logs.append(res_line) return completion.completion # チャットを行う --- (*7) print('Claude 2とチャットをしましょう。') while True: print('---------') # ユーザーからの入力を受け付ける --- (*8) user = input('あなた: ') # ユーザーが「quit」と入力したら終了 if user == 'quit' or user == 'exit': break print('---------') # ユーザーの入力をプロンプトにしてAPIを呼び出す --- (*9) response = call_claude_chat(user) # APIの応答を表示 print('Claude: ' + response)
プログラムを確認してみましょう。(*1)ではAnthropicのオブジェクトを作成し、チャットログを管理する変数chat_logsを初期化します。
(*2)ではモデルClaude-2を呼び出す関数call_claude_chatを定義します。(*3)と(*4)と(*6)ではユーザーとの対話ログからプロンプトを組み立てます。(*3)では今回分のユーザーの発言プロンプトを作ります。(*4)ではリスト型の過去ログを文字列に変換します。
(*5)ではモデルに「Claude-2」を指定してAPIを呼び出します。そして、(*6)ではClaude 2の応答を過去ログのリストを追加します。
(*7)以降のwhileでは、繰り返しユーザーとClaudeの対話を行います。(*8)ではユーザーから入力を得て、(*9)で関数call_claude_chatを呼び出し、Claudeからの応答を表示します。
それでは、プログラムを実行しましょう。
$ python3 claude_chat.py
すると、次のように画面イメージのように、ターミナル上でClaude 2と対話ができます。
本節では、Claude 2のAPIを使う方法について解説しました。ライブラリが整っていることもあり、とても簡単に使えることが分かったことでしょう。ChatGPTの性能に迫る勢いがあり、さらによりも大きなトークンを扱えるClaude 2をAPIから使えることには、大きなメリットがあります。