Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Google Cloud Vertex AIにおけるGemini vs Claude

dyoshikawa
August 14, 2024
99

Google Cloud Vertex AIにおけるGemini vs Claude

dyoshikawa

August 14, 2024
Tweet

Transcript

  1. Google Cloud Vertex AIにおける Gemini vs Claude おもにクラウドの話してます - 広島

    #3(2024.8.16) クラスメソッド株式会社 Zennチーム dyoshikawa
  2. リージョン Claude Sonnet: us-central1 (Iowa), asia-southeast1 (Singapore) Haiku: us-central1 (Iowa),

    europe-west4 (Netherlands) Geminiは東京リージョン(asia-northeast1)が使える
  3. Rubyから呼び出す Rubyの場合、SDKはないので自分で net/http でHTTP(S)リクエス トを組み立ててAPIを叩く必要がある # アクセストークンの取得にADC(アプリケーションデフォルトクレデンシャル)を使用 credentials = Google::Auth.get_application_default

    access_token = credentials.fetch_access_token!["access_token"] uri = URI(API_URL) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Post.new(uri.request_uri) # 〜〜リクエストヘッダとボディのセット〜〜 response = http.request(request) parsed_body = JSON.parse(response.body) puts parsed_body["candidates"][0]["content"]["parts"][0]["text"]
  4. Rubyから呼び出す(Gemini) Gemini request["Authorization"] = "Bearer #{access_token}" request["Content-Type"] = "application/json" request.body

    = { contents: { role: "user", parts: [ { text: "こんにちは" } ], }, generation_config: { temperature: TEMPERATURE, max_output_tokens: MAX_TOKENS } }.to_json
  5. Rubyから呼び出す(Claude) Claude request["Authorization"] = "Bearer #{access_token}" request["Content-Type"] = "application/json" request.body

    = { anthropic_version: "vertex-2023-10-16", messages: [ { role: "user", content: [ { type: "text", text: "こんにちは" } ], } ], temperature: TEMPERATURE, max_tokens: MAX_TOKENS, stream: false }.to_json
  6. JSONで出力させる(Gemini) Gemini API を使用して JSON 出力を生成する | Google AI for

    Developers generation_config に {"response_mime_type": "application/json"} を指定することでJSON形式の出力になる
  7. JSONで出力させる(Gemini) JSONの内容はプロンプトで下記のように指示する PythonのType Hints風の記法 List 5 popQular cookie recipes. Using

    this JSON schema: Recipe = {"recipe_name": str} Return a `list[Recipe]` 実際、手元の検証ではJSON Schemaで指示するよりJSONパース エラーが少なかったので上記がベスプラっぽい response_schema にJSON Schemaを渡す方法もある こちらの方が精度良さそう
  8. JSONで出力させる(Claude) 出力フォーマットの制御 (JSONモード) - Anthropic LLM(assistant)の出力の一文字目に { を指定する messages: [

    { role: "user", content: [ { type: "text", text: "猫についての俳句を書いてください。“first_line”、“second_line”、“third_line”をキーとするJSON形式を使用してください。" }, ], role: "assistant", content: [ { type: "text", text: "{" # JSONの一文字目を入力しておく }, ], } ],
  9. 回答精度 判定結果よりスコア付けすると、おおむね次の結果になった Gemini 1.5 Flash < Claude 3 Haiku =

    Claude 3 Sonnet = Claude 3.5 Sonnet < Gemini 1.5 Pro Gemini 1.5 Proでベースのプロンプトを作成したので、必ずしもフェ アではないかも LLMの定量的な評価は難しい・・・
  10. まとめ ざっくりまとめる 項目 結果 価格 ほぼ同等。Context CachingやBatch Predictionの存在を考えるとコストはGemini優位か リージョン Geminiは東京リージョンが使える

    JSON出力 両方できる。Gemini 1.5 Proはパラメータから厳密な指定が可能 SDK Gemini: Python, Node.js, Go, Dart, Android(Java, Kotlin), Swift Claude: Python, Node.js 回答精度 Gemini 1.5 Flash < Claudeの各モデル < Gemini 1.5 Pro(あくまで今回の検証において)