Vertex AIに、Claude 3 Opus(Public Preview) APIを叩いてみた
Announcing AnthropicAI’s most intelligent model, Claude 3 Opus, is now in public preview on #VertexAI.
Google Cloud Next 1 Day まとめページに、comming weekとなっているので数週間後にはつかえるようになる記載がありました。
4/12 朝確認したところ、Model Gardenを確認したところ、Comming soonがとれていました
今朝確認したところ、Claude 3 OpusはPrivate Preview として使えるようになってました。
Claude 3 Opus て?
Anthropicからだしている、GPT-4越えといわれているClaude 3ファミリー最上位のモデルです。
Claude 3 Opus は、精度 99% を超える、ほぼ完璧な再現を達成しただけでなく、場合によっては、「針」文が人間によって原文に人為的に挿入されたように見えることを認識することで、評価自体の限界さえ特定しました。 。
早速触ってみた。
Model Gardenから有効にします。Business Emailとか利用用途をいれればすぐ利用できるようになります
Gemini のようなPlaygroundはなく、curlあるいは、python 等のSDKから利用するようになります。
pythonから呼んでみる。
モデルIDは、claude-3-opus@20240229 になります。
Model Garden のモデルのページにサンプルコードが公開されているのでこれをベースに試してみました。
python moduleをインストールします。
pip install -U 'anthropic[vertex]'
以下のコードを実行してみます。
import base64
from anthropic import AnthropicVertex
LOCATION = "us-east5"
client = AnthropicVertex(region=LOCATION, project_id="xxxxxxxxx")
image1_media_type = "image/jpeg"
with open('./test.jpg', "rb") as image_file:
data = base64.b64encode(image_file.read()).decode("utf-8")
message = client.messages.create(
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": image1_media_type,
"data": data,
},
},
{
"type": "text",
"text": "この画像について説明して。"
}
],
}
],
model="claude-3-opus@20240229",
)
print(message.model_dump_json(indent=2))
下記画像の説明するプロンプトになります。
{
"id": "msg_vrtx_01WPxcchU3Dan5zmU7FRMj8Y",
"content": [
{
"text": "この画像は、レストランやカフェのメニュー黒板だと思われます。メニューはフランス語で書かれており、前菜、メインディッシュ、デザートなどが詳細に記載されています。\n\n前菜には、生ハムのサラダ、ツナのサラダ、トマトのブラータチーズなどが提供されています。メインディッシュには、魚のムニエル、ビーフシチュー、ポークのグリルなどがあります。デザートには、クレームブリュレ、りんごのタルト、アイスクリームなどのオプションが用意されています。\n\nメニューボードは木製のフレームに囲まれ、レストランの温かみのある雰囲気を醸し出しています。これは、フランスの典型的なビストロやカフェでよく見られるスタイルのメニュー表示です。",
"type": "text"
}
],
"model": "claude-3-opus-20240229",
"role": "assistant",
"stop_reason": "end_turn",
"stop_sequence": null,
"type": "message",
"usage": {
"input_tokens": 1652,
"output_tokens": 270
}
}
同じ画像を、Gemini 1.5 Pro、AzureOpenAI GPT-4-visionに与えた結果
Gemini 1.5 Pro
レシピ、メニューについて詳しく回答してくれた。
import PIL.Image
from io import BytesIO
import vertexai
from vertexai.preview.generative_models import GenerativeModel,Part
PROJECT_ID = "xxxxxxxx"
REGION = "us-central1"
vertexai.init(project=PROJECT_ID, location=REGION)
img = PIL.Image.open('test.jpg')
buffer = BytesIO()
img.save(buffer, 'jpeg')
img_part = Part.from_data(data=buffer.getvalue(), mime_type="image/jpeg")
generative_multimodal_model = GenerativeModel("gemini-1.5-pro-preview-0409")
response = generative_multimodal_model.generate_content(
["この画像について日本語で説明して?", img_part]
)
print(response)
candidates {
content {
role: "model"
parts {
text: "## フランスのレストランの黒板メニューについて\n\nこの画像は、フランスのレストランの店頭に置かれた黒板メニューのようです。フランス語で書かれており、前菜、メイン、デザート、チーズなどのメニューが価格と共に記載されています。\n\n**前菜 (Entrées) - 8€**\n\n* サラダ・ド・ジェジェ(砂肝のサラダ)\n* フィレ・ド・アラン(ニシンのマリネ)\n* トマト・ブッラータ\n* ゆで卵(オーガニック)マヨネーズ添え\n\n**メイン (Plats) - 15€**\n\n* アッシ・パルマンティエ(フランス風シェパーズパイ)サラダ添え\n* ブーシェ風ステーキ フライドポテト/サラダ添え\n* 仔牛のステーキ クリームとマッシュルームソース\n* 本日の魚とその付け合わせ野菜\n\n**牛肉**\n\n* アントルコート(リブロースステーキ) 約300g 25€\n* フォー・フィレ(サーロインステーキ) 約280g 19€\n\n**デザート (Desserts) - 7€**\n\n* ヌガーグラッセ\n* リンゴの薄切りタルト\n* チョコレートムース\n* クレームブリュレ\n\n**チーズ (Fromages) - 5.5€**\n\n* ロックフォール\n* ブリー・ド・モー\n* サン・ネクテール・フェルミエ\n* フルム・ダンベール\n* カンタル・アントル・ドゥ\n* カマンベール・オ・レ・クリュ \n\n**その他**\n\n* VISAとMastercardのマークがあり、クレジットカードが使用可能\n* Wi-Fiが利用可能\n\n**雰囲気**\n\n黒板メニューの全体的にカジュアルな雰囲気から、ビストロやブラッスリーのような気軽に入れるレストランであることが推測できます。\n\n**まとめ**\n\nこの黒板メニューは、フランスの典型的なビストロの料理を提供していることがわかります。お手頃な価格で、地元の食材を使った伝統的なフランス料理を楽しむことができそうです。\n"
}
}
finish_reason: STOP
safety_ratings {
category: HARM_CATEGORY_HATE_SPEECH
probability: NEGLIGIBLE
}
safety_ratings {
category: HARM_CATEGORY_DANGEROUS_CONTENT
probability: NEGLIGIBLE
}
safety_ratings {
category: HARM_CATEGORY_HARASSMENT
probability: NEGLIGIBLE
}
safety_ratings {
category: HARM_CATEGORY_SEXUALLY_EXPLICIT
probability: NEGLIGIBLE
}
}
usage_metadata {
prompt_token_count: 266
candidates_token_count: 442
total_token_count: 708
}
AzureOpenAIのGPT-4-vision
説明に答えてくれず。
Discussion