Claude3 API使ってみる
みなさん!こんにちは。
kirigayaです。
AIの最新情報でお祭り騒ぎの日々を送っていますが、そんな中ついにClaude3がリリースされました!
注目はなんといってもGPT-4より高精度な日本語PDF読み取りかと思います。
夢広がりますよね。今までデータ化が難しかったファイルなんかも簡単に構造化データに変換して分析する未来が見えます。
※PDFで遊ぶ系は別の記事にしようと思います。今回はpngなどを扱います。
それではさっそく登録して無料で5ドル
クレジットを入手していきましょう!
※WEB上で使うプレイグラウンドとAPIではアカウントが違うようなので注意してください。
環境はMacOSです。
Claude3のAPIドキュメントはこちら
モデル一覧
モデル | 最新のAPIモデル名 |
---|---|
Claude3 Opus | claude-3-opus-20240229 |
Claude3 Sonnet | claude-3-sonnet-20240229 |
Claude3 Haiku | claude-3-haiku-20240307 |
Claude3はどのモデルも画像を理解することができるそうです。
さっそく環境変数を設定していきます
vim ~/.zshrc
export ANTHROPIC_API_KEY="********"
python SDKのインストール
ガイドはこちら
poetry add anthropic
とりあえずテキストを送信してみる
import anthropic
client = anthropic.Anthropic(
# defaults to os.environ.get("ANTHROPIC_API_KEY")
)
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{"role": "user", "content": "こんにちは!Claude3。今日からよろしくね。私の新しい相棒さん"}
]
)
print(message.content)
返ってきたコメントはこんな感じ
こんにちは!これから一緒に楽しく会話ができるのを楽しみにしています。
あなたの興味のあることや、お話ししたいことがあれば、どんなことでも聞かせてください。
できる限りお力になれるよう頑張ります。これからよろしくお願いします!
それでは画像を送信してみよう
画像を送信する時のベストプラクティス
- 画像の鮮明さ:画像が鮮明で、ぼやけすぎたり、ピクセル化されすぎたりしていないことを確認します。Claude3は、不鮮明な画像または低品質の画像を正確に解釈するのに苦労する可能性があります。
- 画像の配置:ドキュメント クエリの配置と同様に、Claude3は画像がテキストの前にある場合に最適に機能します。画像をテキストの後に配置したり、テキストを補間したりしてもパフォーマンスは良好ですが、ユースケースで許容される場合は、画像、テキストの順に構成することをお勧めします。
- テキスト:画像に重要なテキストが含まれている場合は、読みやすく、小さすぎないことを確認してください。ただし、テキストを拡大するためだけに主要なビジュアルコンテキストを切り取ることは避けてください。
- 複数の画像: 1 つのリクエストに複数の画像を含めることができます ( claude.aiの場合は最大 5 個、API リクエストの場合は最大 20 個)。クロードは、応答を作成する際に、提供されたすべての画像を分析します。これは、画像を比較または対照するのに役立ちます。
1枚の画像に質問してみる
media_type
はjpgとかpngとかです
画像はbase64にエンコードする必要があります
import base64
import anthropic
client = anthropic.Anthropic(
# defaults to os.environ.get("ANTHROPIC_API_KEY")
)
# 画像をbase64にエンコードする
def get_base64_encoded_image(image_path: str) -> str:
with open(image_path, "rb") as image_file:
binary_data = image_file.read()
base_64_encoded_data = base64.b64encode(binary_data)
base64_string = base_64_encoded_data.decode('utf-8')
return base64_string
image_path = "/test/work/test_img/test1.jpg"
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages = [
{
"role": 'user',
"content": [
{"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": get_base64_encoded_image(image_path)}},
{"type": "text", "text": "何が描かれていますか?できる限り詳細に教えてください"}
]
}
]
)
print(message.content[0].text)
かなり認識精度高いです。いろいろ入力して遊んでみてください。
今回は1枚でしたが複数枚同時に入力やsystem="Respond only in Spanish.",
のように設定もできるようです...やれることいっぱい
画像に関する制限
よくある質問 | 回答 |
---|---|
Claude3がサポートしている画像ファイルの種類 | JPEG、PNG、GIF、WebP |
Claude3は画像のURLを読み取ることが可能か? | 読み取り不可 |
アップロードできる画像ファイルのサイズ制限 | 5MB(API) |
1つのリクエストに含めることができる画像枚数 | MessagesAPIでは最大20枚、claude.aiでは最大5枚までです。 |
Claude3は画像のメタデータを読み取れるか? | 読み取り不可 |
アップロードした画像は削除可能か? | 不可能 アップロードした画像は一時的でAPIリクエストの後に削除される |
Claude3は画像を生成、生成、編集、操作は可能か? | 不可能、Claude3は画像を生成、生成、編集、操作することはできません。 |
一番重要かもしれない...コストについて
Claude3へのリクエストに含める各画像は、トークンの使用量にカウントされます。おおよそのコストを計算するには、イメージ トークンのおおよその数に、使用しているモデルのトークンごとの価格を掛けます。
tokens = (width px * height px)/750
入力トークン100万あたり3ドルでClaude3 Sonnetを使用する場合...
画像サイズ | トークンの数 | 費用・イメージ | コスト / 1K 画像 |
---|---|---|---|
200x200ピクセル(0.04メガピクセル) | ~54 | ~$0.00016 | ~$0.16 |
1000×1000ピクセル(100万画素) | ~1334 | ~$0.004 | ~$4.00 |
1092x1092 ピクセル(119万画素) | ~1590 | ~$0.0048 | ~$4.80 |
今日はここまでw
ここにクックブックがあるので色々遊べそうです。
利用規約
Discussion