Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Google Cloud Vertex AIにおけるGemini vs Claude
Search
dyoshikawa
August 14, 2024
0
99
Google Cloud Vertex AIにおけるGemini vs Claude
dyoshikawa
August 14, 2024
Tweet
Share
More Decks by dyoshikawa
See All by dyoshikawa
生PHPで学ぶSSRF.pdf
dyoshikawa1993
0
76
Zennへのスパム投稿が急増したのでLLMでなんとかした話
dyoshikawa1993
0
660
OSSコミットしてZennの課題を解決した話
dyoshikawa1993
0
300
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
65
11k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
41
2.1k
The Cost Of JavaScript in 2023
addyosmani
45
6.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.1k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
KATA
mclloyd
29
13k
Measuring & Analyzing Core Web Vitals
bluesmoon
1
38
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Bash Introduction
62gerente
608
210k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Transcript
Google Cloud Vertex AIにおける Gemini vs Claude おもにクラウドの話してます - 広島
#3(2024.8.16) クラスメソッド株式会社 Zennチーム dyoshikawa
自己紹介 2020年10月クラスメソッド入社(今年で4年目) 2023年よりZennチーム ソフトウェアエンジニア フロントエンド Next.js バックエンド Ruby on Rails
インフラ Google Cloud
Zennについて https://zenn.dev/ エンジニアのための情報共有コミュニティサービス 2023年12月に会員数10万|月間PV数1000万突破を発表 🎉
最近、LLMを活用して課題に取り組む機会があった Zennにスパム投稿が急増 1日あたり数十件〜数百件 LLMを使用してスパム投稿の検出を自動化した プラットフォームはVertex AI ZennがGoogle Cloudインフラなので LLMはAnthropic Claude
選定にあまり強い理由はない
最近、LLMを活用して課題に取り組む機会があった Zennへのスパム投稿が急増したのでLLMでなんとかした話
本当にClaude(on Vertex AI)でいいんだっけ? Claudeは特にAWSのBedrockを採用する場合においてファーストチ ョイス感があり、かつ評判も良い印象 しかしGoogleといえばGemini 真面目にGemini vs Claudeを比較検討してみる
前提 Google Cloud Vertex AI越しに叩く Rubyから叩く ZennがRuby on Railsなので
価格(Gemini) https://cloud.google.com/vertex-ai/generative-ai/pricing? hl=ja#gemini-models 文字数あたりの表記 モデル 入力コスト(1,000文字あたり) 出力コスト(1,000文字あたり) Gemini 1.5 Pro
$0.00125 $0.00375 Gemini 1.5 Flash $0.000125 $0.000375
価格(Claude) https://cloud.google.com/vertex-ai/generative-ai/pricing? hl=ja#partner-models トークン数あたりの表記 モデル 入力コスト (1,000トークンあたり) 出力コスト (1,000トークンあたり) Claude
3/3.5 Sonnet $0.003 $0.015 Claude 3 Haiku $0.00025 $0.00125
価格 1トークン≒1文字(日本語のマルチバイト文字換算で)と仮定すれ ば、Geminiの方が単価は安そう? Gemini 1.5 Pro 入力: $0.00125 / 1000文字あたり
Claude 3/3.5 Sonnet 入力: $0.003 / 1000トークンあたり
リージョン Claude Sonnet: us-central1 (Iowa), asia-southeast1 (Singapore) Haiku: us-central1 (Iowa),
europe-west4 (Netherlands) Geminiは東京リージョン(asia-northeast1)が使える
Rubyから呼び出す Ruby on RailsアプリケーションからLLMを使いたい SDK対応状況 Gemini: Python, Node.js, Go, Dart,
Android(Java, Kotlin), Swift Claude: Python, Node.js
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"]
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
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
JSONで出力させる LLMをシステムに組み込む際は返答をJSONで出力してくれた方が何 かと都合がいい LLMによってJSON出力指示のベストプラクティスが異なる
JSONで出力させる(Gemini) Gemini API を使用して JSON 出力を生成する | Google AI for
Developers generation_config に {"response_mime_type": "application/json"} を指定することでJSON形式の出力になる
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を渡す方法もある こちらの方が精度良さそう
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の一文字目を入力しておく }, ], } ],
JSONで出力させる(Claude) JSONの内容の指定はどうする? ドキュメントの例はプロンプト内において 猫についての俳句を書いて ください。“first_line”、“second_line”、“third_line”をキーとす るJSON形式を使用してください。 JSON形式でチョコレートチップクッキ ーのレシピを生成してください。 といったややざっくりした指定 手元の検証ではPython風、JSON
Schemaいずれでもおおむね期待通 りの出力が得られた
回答精度 モデルごとの回答精度を評価したい 以下を100件程度用意し、各モデルに判定させる スパムでない投稿と判定されることを期待するコンテンツ スパム投稿と判定されることを期待するコンテンツ モデルごとにプロンプトは多少カスタマイズ
回答精度 判定結果よりスコア付けすると、おおむね次の結果になった Gemini 1.5 Flash < Claude 3 Haiku =
Claude 3 Sonnet = Claude 3.5 Sonnet < Gemini 1.5 Pro Gemini 1.5 Proでベースのプロンプトを作成したので、必ずしもフェ アではないかも LLMの定量的な評価は難しい・・・
その他(Geminiのみ使える機能) Geminiのみ使える機能がある Context Caching 同じプロンプトを繰り返し使用する場合、コンテキストをキャッ シュしてコストの最適化ができる Batch Prediction リアルタイムな応答を必要としない用途の場合、バッチ処理でコ ストの最適化ができる
まとめ ざっくりまとめる 項目 結果 価格 ほぼ同等。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(あくまで今回の検証において)
結論 Vertex AIのLLMとしてはまずはGeminiの選定を検討するのが無難 東京リージョンを選択可 Context Caching、Batch Predictionなど将来取れるオプションが 多い Claude含む、特定モデルにしか回答できないようなタスクを扱う場 合はそれを使う
ご清聴ありがとうございました 選定の参考になれば幸いです 質問やフィードバックをお待ちしています
最後に宣伝(その1) ZennのPublication機能により企業などの単位でテックメディアを立 ち上げられます
最後に宣伝(その2) We are hiring 🔧 広島のエンジニア募集中です! 募集職種 https://careers.classmethod.jp/requirements/
参考 https://cloud.google.com/vertex-ai/generative-ai/pricing?hl=ja https://ai.google.dev/gemini-api/docs/quickstart?hl=ja https://console.cloud.google.com/vertex- ai/publishers/anthropic/model-garden/claude-3-haiku https://ai.google.dev/gemini-api/docs/json-mode https://docs.anthropic.com/ja/docs/control-output-format https://ai.google.dev/gemini-api/docs/caching
参考 https://cloud.google.com/vertex-ai/generative- ai/docs/multimodal/batch-prediction-gemini