🐷

Vertex AIに、Claude 3 Opus(Public Preview) APIを叩いてみた

2024/04/12に公開

Announcing AnthropicAI’s most intelligent model, Claude 3 Opus, is now in public preview on #VertexAI.
https://twitter.com/googlecloud/status/1778818477123633270

Google Cloud Next 1 Day まとめページに、comming weekとなっているので数週間後にはつかえるようになる記載がありました。
https://cloud.google.com/blog/topics/google-cloud-next/welcome-to-google-cloud-next24?hl=en

4/12 朝確認したところ、Model Gardenを確認したところ、Comming soonがとれていました

今朝確認したところ、Claude 3 OpusはPrivate Preview として使えるようになってました。

Claude 3 Opus て?

Anthropicからだしている、GPT-4越えといわれているClaude 3ファミリー最上位のモデルです。

Claude 3 Opus は、精度 99% を超える、ほぼ完璧な再現を達成しただけでなく、場合によっては、「針」文が人間によって原文に人為的に挿入されたように見えることを認識することで、評価自体の限界さえ特定しました。 。

https://www.anthropic.com/news/claude-3-family

早速触ってみた。

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