Anthropic の Claude モデルを使用する

Vertex AI の Anthropic の Claude モデルは、API としてフルマネージドのサーバーレス モデルを提供します。Vertex AI で Claude モデルを使用するには、Vertex AI API エンドポイントにリクエストを直接送信します。Anthropic の Claude モデルではマネージド API を使用するため、インフラストラクチャのプロビジョニングや管理は不要です。

Claude の回答をストリーミングして、エンドユーザーが認識するレイテンシを軽減できます。回答をストリーミングする際には、サーバー送信イベント(SSE)を使用して回答を段階的にストリーミングします。

Claude モデルは従量課金制です。プロビジョニング スループットを使用する場合は、固定料金制になります。従量課金制の料金については、Vertex AI の料金ページの Anthropic の Claude モデルをご覧ください。

使用可能な Claude モデル

Vertex AI で使用できる Anthropic のモデルは次のとおりです。Claude モデルにアクセスするには、Model Garden のモデルカードに移動します。

Claude 3.5 Sonnet v2

Claude 3.5 Sonnet v2 は、実際のソフトウェア エンジニアリング タスクとエージェント機能向けの最先端モデルであり、Claude 3.5 Sonnet と同じ価格とスピードでこれらの進歩を実現しています。

Claude 3.5 Sonnet v2 モデルでは、コンピュータのデスクトップ環境を操作できるツールとやり取りできます。詳細については、Anthropic のドキュメントをご覧ください。

Claude 3.5 Sonnet は、次のユースケース向けに最適化されています。

  • エージェント タスクとツールの使用 - Claude 3.5 Sonnet では、ツールの使用が必要なエージェント ワークフローにおける優れた指示の実行、ツールの選択、エラー修正、高度な推論が可能です。
  • コーディング - コードの移行、コードの修正、変換などのソフトウェア開発タスクにおいて、Claude 3.5 Sonnet は複雑なコーディング タスクの計画と解決の両方で優れたパフォーマンスを発揮します。
  • ドキュメント Q&A - Claude 3.5 Sonnet は、コンテキストの深い理解、高度な推論、統合を組み合わせて、正確で人間のような回答を提示します。
  • 画像データ抽出 - Claude 3.5 Sonnet では、その最先端のビジョンスキルを活用し、AI ワークフローの過程で図表やグラフなどのビジュアルから元データを抽出できます。
  • コンテンツの生成と分析 - Claude 3.5 Sonnet は、コンテンツのニュアンスとトーンを理解し、より魅力的なコンテンツを生成して、コンテンツをさらに深いレベルで分析できます。

Claude 3.5 Sonnet v2 モデルカードに移動

Claude 3.5 Sonnet

Anthropic の Claude 3.5 Sonnet は、Anthropic の幅広い評価において Claude 3 Opus を上回っています。また、そのスピードと料金は、Anthropic の中間モデルである Claude 3 Sonnet と同じです。Claude 3.5 Sonnet は、次のユースケース向けに最適化されています。

  • 高度な推論とトラブルシューティング機能を使用したコードの作成、編集、実行などのコーディング。

  • ユーザーのコンテキストを理解し、複数のステップからなるワークフローをオーケストレートして、カスタマー サポートからの複雑なクエリに対応する。

  • 非構造化データのナビゲートと複数のツールを活用した分析情報の生成によるデータ サイエンスとデータ分析。

  • 視覚処理(視覚的な理解が必要な図表やグラフの解釈など)。

  • より自然で人間らしいトーンのコンテンツの作成。

Claude 3.5 Sonnet モデルカードに移動

Claude 3 Opus

Anthropic の Claude 3 Opus は、非常に複雑なタスクでトップレベルのパフォーマンスを発揮する強力な AI モデルです。自由形式のプロンプトや未知のシナリオを、きわめて流暢に、人間のような理解力でナビゲートできます。Claude 3 Opus は次のようなユースケース向けに最適化されています。

  • タスクの自動化(インタラクティブなコーディングと計画、API とデータベースを横断する複雑なアクションの実行など)。

  • 研究開発タスク(研究のレビュー、ブレインストーミング、仮説の生成、プロダクト テストなど)。

  • 戦略タスク(図表やグラフの高度な分析、財務とマーケット トレンド、予測など)。

  • ビジョンタスク(画像からのテキスト出力など)。図表、グラフ、技術図、レポートなどの視覚的なコンテンツの分析。

Claude 3 Opus モデルカードに移動

Claude 3 Haiku

Anthropic の Claude 3 Haiku は、Anthropic で最速のビジョンとテキストのモデルで、シンプルなクエリにほぼ瞬時に応答し、人間のやり取りに近いシームレスな AI エクスペリエンスを実現します。Claude 3 Haiku は次のようなユースケース向けに最適化されています。

  • お客様とのライブ対応と翻訳。

  • 不審な行為やお客様のリクエストを検出するためのコンテンツの管理

  • 在庫管理や非構造化データからの知識抽出など、費用削減に役立つタスク。

  • ビジョンタスク(画像からのテキスト出力のほか、図表、グラフ、技術図、レポートといった視覚的なコンテンツの分析など)。

Claude 3 Haiku モデルカードに移動

Claude 3 Sonnet

Anthropic の Claude 3 Sonnet では、Anthropic の信頼できるスキルとスピードが組み合わされています。さまざまなユースケースにわたる大規模な AI のデプロイで信頼性を確保できるように設計されています。Claude 3 Sonnet は、次のユースケース向けに最適化されています。

  • 検索拡張生成(RAG)や検索取得などのデータ処理。

  • 製品のレコメンデーション、予測、ターゲット マーケティングなどのセールスタスク。

  • コード生成、品質管理、画像の光学式文字認識(OCR)など、時間の節約に役立つタスク。

  • ビジョンタスク(画像からのテキスト出力など)。図表、グラフ、技術図、レポートなどの視覚的なコンテンツの分析。

Claude 3 Sonnet モデルカードに移動

Claude モデルを使用する

Anthropic の SDK または curl コマンドを使用すると、次のモデル名を使用して Vertex AI エンドポイントにリクエストを送信できます。

  • Claude 3.5 Sonnet v2 の場合は claude-3-5-sonnet-v2@20241022 を使用します。
  • Claude 3.5 Sonnet の場合は claude-3-5-sonnet@20240620 を使用します。
  • Claude 3 Opus の場合は claude-3-opus@20240229 を使用します。
  • Claude 3 Haiku の場合は claude-3-haiku@20240307 を使用します。
  • Claude 3 Sonnet の場合は claude-3-sonnet@20240229 を使用します。

Anthropic の各 Claude モデル バージョンでは、一貫した動作を保証するために、@ 記号(claude-3-5-sonnet-v2@20241022claude-3-haiku@20240307 など)で始まる接尾辞を使用する必要があります。

始める前に

Vertex AI で Anthropic の Claude モデルを使用するには、次の操作を行う必要があります。Vertex AI を使用するには、Vertex AI API(aiplatform.googleapis.com)を有効にする必要があります。既存のプロジェクトで Vertex AI API が有効になっている場合は、新しいプロジェクトを作成する代わりに、そのプロジェクトを使用できます。

パートナー モデルを有効にして使用するために必要な権限があることを確認します。詳細については、必要な権限を付与するをご覧ください。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Enable the API

  8. 次のいずれかの Model Garden モデルカードに移動し、[有効にする] をクリックします。

Anthropic の SDK を使用する

Anthropic Claude SDK を使用して、Anthropic の Claude モデルに API リクエストを送信することができます。詳しくは、以下をご覧ください。

Anthropic の Vertex SDK を使用して Claude モデルにストリーミング呼び出しを行う

次のコードサンプルでは、Anthropic の Vertex SDK を使用して Claude モデルにストリーミング呼び出しを行います。

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

# TODO(developer): Vertex AI SDK - uncomment below & run
# pip3 install --upgrade --user google-cloud-aiplatform
# gcloud auth application-default login
# pip3 install -U 'anthropic[vertex]'

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"

from anthropic import AnthropicVertex

client = AnthropicVertex(project_id=PROJECT_ID, region="us-east5")
result = []

with client.messages.stream(
    model="claude-3-5-sonnet@20240620",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": "Send me a recipe for banana bread.",
        }
    ],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
        result.append(text)

# Example response:
# Here's a simple recipe for delicious banana bread:
# Ingredients:
# - 2-3 ripe bananas, mashed
# - 1/3 cup melted butter
# ...
# ...
# 8. Bake for 50-60 minutes, or until a toothpick inserted into the center comes out clean.
# 9. Let cool in the pan for a few minutes, then remove and cool completely on a wire rack.

Anthropic の Vertex SDK を使用して Claude モデルに単一呼び出しを行う

次のコードサンプルでは、Anthropic の Vertex SDK を使用して Claude モデルに単一呼び出しを行います。

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

# TODO(developer): Vertex AI SDK - uncomment below & run
# pip3 install --upgrade --user google-cloud-aiplatform
# gcloud auth application-default login
# pip3 install -U 'anthropic[vertex]'

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"

from anthropic import AnthropicVertex

client = AnthropicVertex(project_id=PROJECT_ID, region="us-east5")
message = client.messages.create(
    model="claude-3-5-sonnet@20240620",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": "Send me a recipe for banana bread.",
        }
    ],
)
print(message.model_dump_json(indent=2))
# Example response:
# {
#   "id": "msg_vrtx_0162rhgehxa9rvJM5BSVLZ9j",
#   "content": [
#     {
#       "text": "Here's a simple recipe for delicious banana bread:\n\nIngredients:\n- 2-3 ripe bananas...
#   ...

curl コマンドを使用する

curl コマンドを使用して、Vertex AI エンドポイントにリクエストを送信できます。curl コマンドで、使用するサポート対象の Claude モデルを指定します。

Anthropic の各 Claude モデル バージョンでは、一貫した動作を保証するために、@ 記号(claude-3-5-sonnet-v2@20241022claude-3-haiku@20240307 など)で始まる接尾辞を使用する必要があります。

次のトピックでは、curl コマンドの作成方法と curl コマンドの例を示します。

REST

Vertex AI API を使用してテキスト プロンプトをテストするには、パブリッシャー モデル エンドポイントに POST リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION: Anthropic Claude モデルをサポートするリージョン
  • MODEL: 使用するモデル名
  • ROLE: メッセージに関連付けられたロール。user または assistant を指定できます。最初のメッセージでは、user ロールを使用する必要があります。Claude モデルは userassistant のターンを交互に操作します。最後のメッセージが assistant ロールを使用する場合、そのメッセージの内容の直後に回答の内容が続きます。これを使用して、モデルの回答の一部を制限できます。
  • STREAM: 回答がストリーミングされるかどうかを指定するブール値。レスポンスのストリーミングを行うことで、エンドユーザーが認識するレイテンシを短縮できます。レスポンスをストリーミングする場合は true、すべてのレスポンスを一度に戻すには false に設定します。
  • CONTENT: user または assistant のメッセージの内容(テキストなど)。
  • MAX_OUTPUT_TOKENS: 回答で生成できるトークンの最大数。トークンは約 3.5 文字です。100 トークンは約 60~80 語に相当します。

    回答を短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。

  • TOP_P(省略可): Top-P は、モデルが出力用にトークンを選択する方法を変更します。トークンは、確率の合計が Top-P 値に等しくなるまで、確率の高いもの(Top-K を参照)から低いものへと選択されます。たとえば、トークン A、B、C の確率が 0.3、0.2、0.1 であり、Top-P 値が 0.5 であるとします。この場合、モデルは温度を使用して A または B を次のトークンとして選択し、C は候補から除外します。

    ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。

  • TOP_K(省略可): Top-K は、モデルが出力用にトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンは、モデルの語彙内のすべてのトークンで最も確率の高いものになります(グリーディ デコードとも呼ばれます)。Top-K が 3 の場合は、最も確率が高い上位 3 つのトークンから温度を使用して次のトークンが選択されることになります。

    トークン選択のそれぞれのステップで、最も高い確率を持つ Top-K のトークンがサンプリングされます。その後、トークンは Top-P に基づいてさらにフィルタリングされ、最終的なトークンは温度サンプリングを用いて選択されます。

    ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:streamRawPredict

リクエストの本文(JSON):

{
  "anthropic_version": "vertex-2023-10-16",
  "messages": [
   {
    "role": "ROLE",
    "content": "CONTENT"
   }],
  "max_tokens": MAX_TOKENS,
  "stream": STREAM
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:streamRawPredict"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:streamRawPredict" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

curl コマンドの例

MODEL_ID="MODEL"
LOCATION="us-central1"
PROJECT_ID="PROJECT_ID"

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/anthropic/models/${MODEL_ID}:streamRawPredict -d \
'{
  "anthropic_version": "vertex-2023-10-16",
  "messages": [{
    "role": "user",
    "content": "Hello!"
  }],
  "max_tokens": 50,
  "stream": true}'

ツールの使用(関数呼び出し)

Anthropic の Claude モデルは、ツールと関数呼び出しをサポートしてモデルの機能を強化します。詳細については、Anthropic のドキュメントのツールの使用の概要をご覧ください。

次のサンプルは、Anthropic の SDK または curl コマンドを使用してツールを使用する方法を示しています。これらのサンプルでは、サンフランシスコで現在営業中の近くのレストランを検索します。

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

# TODO(developer): Vertex AI SDK - uncomment below & run
# pip3 install --upgrade --user google-cloud-aiplatform
# gcloud auth application-default login
# pip3 install -U 'anthropic[vertex]'
from anthropic import AnthropicVertex

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"

client = AnthropicVertex(project_id=PROJECT_ID, region="us-east5")
message = client.messages.create(
    model="claude-3-5-sonnet@20240620",
    max_tokens=1024,
    tools=[
        {
            "name": "text_search_places_api",
            "description": "returns information about a set of places based on a string",
            "input_schema": {
                "type": "object",
                "properties": {
                    "textQuery": {
                        "type": "string",
                        "description": "The text string on which to search",
                    },
                    "priceLevels": {
                        "type": "array",
                        "description": "Price levels to query places, value can be one of [PRICE_LEVEL_INEXPENSIVE, PRICE_LEVEL_MODERATE, PRICE_LEVEL_EXPENSIVE, PRICE_LEVEL_VERY_EXPENSIVE]",
                    },
                    "openNow": {
                        "type": "boolean",
                        "description": "whether those places are open for business.",
                    },
                },
                "required": ["textQuery"],
            },
        }
    ],
    messages=[
        {
            "role": "user",
            "content": "What are some affordable and good Italian restaurants open now in San Francisco??",
        }
    ],
)
print(message.model_dump_json(indent=2))
# Example response:
# {
#   "id": "msg_vrtx_018pk1ykbbxAYhyWUdP1bJoQ",
#   "content": [
#     {
#       "text": "To answer your question about affordable and good Italian restaurants
#       that are currently open in San Francisco....
# ...

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION: Anthropic Claude モデルをサポートするリージョン
  • MODEL: 使用するモデル名
  • ROLE: メッセージに関連付けられたロール。user または assistant を指定できます。最初のメッセージでは、user ロールを使用する必要があります。Claude モデルは userassistant のターンを交互に操作します。最後のメッセージが assistant ロールを使用する場合、そのメッセージの内容の直後に回答の内容が続きます。これを使用して、モデルの回答の一部を制限できます。
  • STREAM: レスポンスがストリーミングされるかどうかを指定するブール値。レスポンスのストリーミングを行うことで、エンドユーザーが認識するレイテンシを短縮できます。レスポンスをストリーミングする場合は true、すべてのレスポンスを一度に戻すには false に設定します。
  • CONTENT: user または assistant のメッセージの内容(テキストなど)。
  • MAX_OUTPUT_TOKENS: レスポンスで生成できるトークンの最大数。トークンは約 3.5 文字です。100 トークンは約 60~80 語に相当します。

    回答を短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict

リクエストの本文(JSON):


{
  "anthropic_version": "vertex-2023-10-16",
  "max_tokens": MAX_TOKENS,
  "stream": STREAM,
  "tools": [
    {
      "name": "text_search_places_api",
      "description": "Returns information about a set of places based on a string",
      "input_schema": {
        "type": "object",
        "properties": {
          "textQuery": {
            "type": "string",
            "description": "The text string on which to search"
          },
          "priceLevels": {
            "type": "array",
            "description": "Price levels to query places, value can be one of [PRICE_LEVEL_INEXPENSIVE, PRICE_LEVEL_MODERATE, PRICE_LEVEL_EXPENSIVE, PRICE_LEVEL_VERY_EXPENSIVE]",
          },
          "openNow": {
            "type": "boolean",
            "description": "Describes whether a place is open for business at
            the time of the query."
          },
        },
        "required": ["textQuery"]
      }
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": "What are some affordable and good Italian restaurants that are open now in San Francisco??"
    }
  ]
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

Anthropic の Claude を使用できるリージョン

Claude 3.5 Sonnet v2 は次のリージョンで利用できます。
  • us-east5 (Ohio)
Claude 3.5 Sonnet は次のリージョンで利用できます。
  • us-east5 (Ohio)
  • asia-southeast1 (Singapore)
  • europe-west1 (Belgium)
Claude 3 Opus は次のリージョンで利用できます。
  • us-east5 (Ohio)
Claude 3 Haiku は次のリージョンで利用できます。
  • us-east5 (Ohio)
  • asia-southeast1 (Singapore)
  • europe-west1 (Belgium)
Claude 3 Sonnet は次のリージョンで利用できます。
  • us-east5 (Ohio)

Anthropic の Claude の割り当てとサポートされているコンテキストの長さ

Claude モデルの場合、モデルが使用可能なリージョンごとに割り当てが適用されます。割り当ては、1 分あたりのクエリ数(QPM)と 1 分あたりのトークン数(TPM)で指定されます。TPM には、入力トークンと出力トークンの両方が含まれます。

Claude 3.5 Sonnet v2 のデフォルトの割り当て上限と、サポートされているコンテキストの長さは次のとおりです。

リージョン 割り当てシステム サポートされているコンテキストの長さ
us-east5 (Ohio) 90 QPM、540,000 TPM 200,000 トークン
europe-west1 (Belgium) 15 QPM、100,000 TPM 200,000 トークン

Claude 3.5 Sonnet のデフォルトの割り当て上限と、サポートされているコンテキストの長さは次のとおりです。

リージョン 割り当てシステム サポートされているコンテキストの長さ
us-east5 (Ohio) 動的共有割り当てをサポート 200,000 トークン
asia-southeast1 (Singapore) 動的共有割り当てをサポート 200,000 トークン
europe-west1 (Belgium) 動的共有割り当てをサポート 200,000 トークン

Claude 3 Opus のデフォルトの割り当て上限と、サポートされているコンテキストの長さは次のとおりです。

リージョン デフォルトの割り当て上限 サポートされているコンテキストの長さ
us-east5 (Ohio) 動的共有割り当てをサポート 200,000 トークン

Claude 3 Haiku のデフォルトの割り当て上限と、サポートされているコンテキストの長さは次のとおりです。

リージョン デフォルトの割り当て上限 サポートされているコンテキストの長さ
us-east5 (Ohio) 動的共有割り当てをサポート 200,000 トークン
asia-southeast1 (Singapore) 動的共有割り当てをサポート 200,000 トークン
europe-west1 (Belgium) 動的共有割り当てをサポート 200,000 トークン

Claude 3 Sonnet のデフォルトの割り当て上限と、サポートされているコンテキストの長さは次のとおりです。

リージョン デフォルトの割り当て上限 サポートされているコンテキストの長さ
us-east5 (Ohio) 動的共有割り当てをサポート 200,000 トークン

Vertex AI の生成 AI の割り当てを引き上げる場合は、Google Cloud コンソールから割り当ての増加をリクエストできます。割り当ての詳細については、割り当てを操作するをご覧ください。