Share
Embed
Transcript
30 slides
-
Google Cloud Vertex AIにおける Gemini vs Claude おもにクラウドの話してます - 広島
#3(2024.8.16) クラスメソッド株式会社 Zennチーム dyoshikawa -
価格(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で出力させる(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の一文字目を入力しておく }, ], } ], -
回答精度 判定結果よりスコア付けすると、おおむね次の結果になった Gemini 1.5 Flash < Claude 3 Haiku =
Claude 3 Sonnet = Claude 3.5 Sonnet < Gemini 1.5 Pro Gemini 1.5 Proでベースのプロンプトを作成したので、必ずしもフェ アではないかも LLMの定量的な評価は難しい・・・ -
まとめ ざっくりまとめる 項目 結果 価格 ほぼ同等。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(あくまで今回の検証において)