LoginSignup
3
1

【Python】Claude3のAPIを叩いてみよう~

Posted at

はじめに

最近話題のClaude3。
なかなか日本語がお得意なようで、ChatGPTから乗り換える人もちらほらいますね。
というわけでさらっとAPIを使ってみます。

前提

  • Pythonがローカルで実行できる

今回はPythonを使っていくので実行環境を用意しておいてください。ローカルでなくとも問題ないです。

手順

1. APIキーを発行する

まずはコンソールにアクセスします。

ちなみに普段チャットで使うClaude3のページとは異なるので注意してください。

記事を作成している現在(2024/04/23)ですが、クレジットがいくらかもらえますので、無料で試すことができますよ~。

はい、ではAPI Keysからキーを発行してコピペしておいてください。

2. 叩いてみる

ではでは...作業用のディレクトリに移動します。

まずは、ライブラリを持ってきます。

$ pip install anthropic

次にAPIキーを環境変数に設定しちゃいます。
私の場合はzshなので/.zshrcに書いておきます。

export ANTHROPIC_API_KEY="********"

ちょっと試してみるくらいだったら、プログラムの中にべた書きしちゃっていいと思います。

ではでは、リクエストを送っていきましょう~~


import anthropic

client = anthropic.Anthropic(
    api_key="xxx", # もしも環境変数でAPIキーを設定していなかったら、ここで渡しておく
)


# client = anthropic.Anthropic() 設定していたらこっちでOK

message = client.messages.create(
    model="claude-3-opus-20240229", # モデル claude-3-opus-20240229, claude-3-sonnet-20240229, claude-3-haiku-20240307
    max_tokens=1000, # 4096 後述
    temperature=0.0, # 高ければはちゃめちゃになる
    system="", # プロンプト(なくてもいい)
    messages=[
        {"role": "user", "content": "明日のご飯は何がいいかな?"}
    ]
)

print(message.content)

生成されたメッセージはこちらです。


明日のご飯のおすすめは、以下のようなメニューはいかがでしょうか。

1. 鶏の照り焼き:鶏肉を醤油ベースのタレで焼いた、甘辛い味わいの一品です。ご飯との相性も抜群です。

2. 豚の生姜焼き:豚肉を生姜風味のタレで焼いた料理で、ご飯が進む一品です。

3. 野菜炒め:季節の野菜を使った炒め物は、ヘルシーで栄養バランスも良いです。

4. カレーライス:定番の家庭料理で、具材を変えることで様々なバリエーションが楽しめます。

5. 焼き魚:鮭や鯖など、お好みの魚を焼いて、ご飯と一緒にいただくのもおすすめです。

6. パスタ:トマトソースやクリームソースなど、お好みのソースで楽しめます。サラダと一緒に召し上がるのもおすすめです。

7. 肉じゃが:牛肉、じゃがいも、玉ねぎを甘辛く煮込んだ料理で、ご飯との相性も抜群です。

これらは一例ですが、お好みや手持ちの食材に合わせて、アレンジしてみてください。

レスポンスの構造自体はこんな感じですね〜。


{
  "id": "msg_xxxxxxxx",
  "content": [
    {
      "text": "明日のご飯のおすすめは、以下のようなメニューはいかがでしょうか。\n\n1. 鶏の照り焼き:鶏肉を醤油ベースのタレで焼いた、甘辛い味わいの一品です。ご飯との相性も抜群です。\n\n2. 豚の生姜焼き:豚肉を生姜風味のタレで焼いた料理で、ご飯が進む一品です。\n\n3. 野菜炒め:季節の野菜を使った炒め物は、ヘルシーで栄養バランスも良いです。\n\n4. カレーライス:定番の家庭料理で、具材を変えることで様々なバリエーションが楽しめます。\n\n5. 焼き魚:鮭や鯖など、お好みの魚を焼いて、ご飯と一緒にいただくのもおすすめです。\n\n6. パスタ:トマトソースやクリームソースなど、お好みのソースで楽しめます。サラダと一緒に召し上がるのもおすすめです。\n\n7. 肉じゃが:牛肉、じゃがいも、玉ねぎを甘辛く煮込んだ料理で、ご飯との相性も抜群です。\n\nこれらは一例ですが、お好みや手持ちの食材に合わせて、アレンジしてみてください。",
      "type": "text"
    }
  ],
  "model": "claude-3-opus-20240229",
  "role": "assistant",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "type": "message",
  "usage": { "input_tokens": 22, "output_tokens": 430 }
}

usageにインプットとアウトプットのトークンが入ってますねー。

見た感じ、OpenAIのAPIを使っていた方ならサラッと使い始められちゃいますね。

いい感じに使えているので、次はClaudeの目玉とも言える画像を試して見ます!


import anthropic
import base64
import httpx

image_url = "https://upload.wikimedia.org/wikipedia/commons/a/a7/Camponotus_flavomarginatus_ant.jpg"
image_media_type = "image/jpeg"
image_data = base64.b64encode(httpx.get(image_url).content).decode("utf-8")

message = anthropic.Anthropic().messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    system="write in Japanese",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": image_media_type,
                        "data": image_data,
                    },
                }
            ],
        }
    ],
)
print(message)

ちなみにここで渡しているのは巨大なアリの画像です。
出力はこちらです。

この画像は、コンクリートの表面に立っている小さな黒いアリの写真です。
アリは細長い触覚と脚を伸ばして立ち上がっており、細部まではっきりと捉えられています。
背景はぼやけていて、アリにフォーカスが当てられています。
アリの体は光を反射しており、つやのある外骨格が見られます。
この写真は、小さな生き物の美しさと複雑さを捉えており、昆虫の世界を身近に感じさせてくれる1枚だと思います。

※見やすいように改行入れてます。

なかなか精度が高いですよね。結構面白いです。
お分かりかと思いますが、エンコードする必要がありますので利用される際は忘れずに〜!

料金やモデルの特徴について

気になる料金ですね。抜粋してまとめました。上が原文です。

Claude 3 Opus Claude 3 Sonnet Claude 3 Haiku
Description Most powerful model for highly complex tasks Ideal balance of intelligence and speed for enterprise workloads Fastest and most compact model for near-instant responsiveness
Latest API model name claude-3-opus-20240229 claude-3-sonnet-20240229 claude-3-haiku-20240307
Comparative latency Moderately fast Fast Fastest
Max output 4096 tokens 4096 tokens 4096 tokens
Cost (Input / Output per MTok^) $15.00 / $75.00 $3.00 / $15.00 $0.25 / $1.25
Claude 3 Opus Claude 3 Sonnet Claude 3 Haiku
説明 高度な複雑なタスクに最適な最も強力なモデル エンタープライズワークロードに最適なインテリジェンスとスピードのバランス 即時応答性に優れた最速かつ最もコンパクトなモデル
最新APIモデル名 claude-3-opus-20240229 claude-3-sonnet-20240229 claude-3-haiku-20240307
比較レイテンシー やや速い 速い 最速
最大出力 4096トークン 4096トークン 4096トークン
コスト (入力 / 出力あたりのMTok^) $15.00 / $75.00 $3.00 / $15.00 $0.25 / $1.25

この辺結構端折ってますので、公式のドキュメントを見ていただけると...

おまけ

シェルでもちょっと遊んでみる。

#!/bin/sh
curl https://api.anthropic.com/v1/messages \
     --header "x-api-key: $ANTHROPIC_API_KEY" \
     --header "anthropic-version: 2023-06-01" \
     --header "content-type: application/json" \
     --data \
'{
    "model": "claude-3-opus-20240229",
    "max_tokens": 1024,
    "messages": [
        {"role": "user", "content": "Hello, Claude"}
    ]
}'

{
  "id": "msgxxxxxx",
  "type": "message",
  "role": "assistant",
  "model": "claude-3-opus-20240229",
  "stop_sequence": null,
  "usage": { "input_tokens": 10, "output_tokens": 18 },
  "content": [
    {
      "type": "text",
      "text": "Hello! It's nice to meet you. How are you doing today?"
    }
  ],
  "stop_reason": "end_turn"
}

いい感じ!

おわりに

というわけでClaude3のAPIで遊んでみました!
さわりの部分しか紹介してませんので、興味を持っていただけたらぜひ公式のリファレンスに目を通していただけるといいかと思います!

ちなみにクックブックもあります。
一通り遊んだ後に目を通してみるととっても楽しめるのではないかと思います!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1