Anthropic の Claude 3 モデルを使用する

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

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

Claude モデルは従量課金制です。詳細については、Vertex AI の料金ページの Anthropic Claude モデルに関するセクションをご覧ください。

利用可能な Anthropic Claude モデル

Anthropic Claude モデルにアクセスするには、Model Garden に移動して Claude を検索し、使用する Claude モデルを選択します。どの Claude 3 モデルも画像を処理し、テキスト出力を返します。また、200,000 のコンテキスト ウィンドウを備えています。次のリンクを使用して、Vertex AI で利用可能な Claude モデルのモデルカードに移動できます。

Claude 3 Sonnet

Anthropic Claude 3 Sonnet は、企業のワークロードに最適なインテリジェンスと速度のバランスを提供します。これは大規模 AI 向けの耐久性の高いモデルで、競争力のある価格で利用できます。Claude 3 Sonnet は、次のユースケース向けに最適化されています。

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

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

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

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

Claude 3 Haiku

Anthropic Claude 3 Haiku は、Anthropic で利用可能な最も高速でコンパクトなモデルです。クエリやリクエストに迅速に対応できるように設計されています。これを使用して、人間の操作を模倣した AI エクスペリエンスを構築できます。Claude 3 Haiku は次のようなユースケース向けに最適化されています。

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

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

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

  • ビジョンタスク(画像からのテキスト出力、チャート、グラフ、技術図、レポート、その他のビジュアル コンテンツの分析など)。

Claude モデルを使用する

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

  • Claude 3 Sonnet の場合は claude-3-sonnet@20240229 を使用します。
  • Claude 3 Haiku の場合は、claude-3-haiku@20240307 を使用します。

@ 記号(claude-3-sonnet または claude-3-haiku)で始まる接尾辞を含まない Anthropic Claude 3 モデル バージョンの使用はおすすめしません。

始める前に

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

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

  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. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Vertex AI API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Vertex AI API を有効にします。

    API を有効にする

  8. Anthropic Claude モデルを有効にしてメッセージを送信する権限があることを確認します。詳細については、Claude モデルを有効にしてプロンプトを送信するために必要な権限を設定するをご覧ください。
  9. 次のいずれかの Model Garden モデルカードに移動し、[有効にする] をクリックします。

Anthropic SDK を使用する

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

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

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

Python

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

def generate_text_streaming(project_id: str, region: str) -> str:
    client = AnthropicVertex(region=region, project_id=project_id)
    result = []

    with client.messages.stream(
        model="claude-3-sonnet@20240229",
        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)

    return "".join(result)

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

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

Python

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

def generate_text(project_id: str, region: str) -> object:
    client = AnthropicVertex(region=region, project_id=project_id)
    message = client.messages.create(
        model="claude-3-sonnet@20240229",
        max_tokens=1024,
        messages=[
            {
                "role": "user",
                "content": "Send me a recipe for banana bread.",
            }
        ],
    )
    print(message.model_dump_json(indent=2))
    return message

curl コマンドを使用する

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

  • Claude 3 Sonnet の場合は claude-3-sonnet@20240229 を使用します。
  • Claude 3 Haiku の場合は、claude-3-haiku@20240307 を使用します。

@ 記号(claude-3-sonnet または claude-3-haiku)で始まる接尾辞を含まない Anthropic Claude 3 モデル バージョンの使用はおすすめしません。

次のトピックでは、curl コマンドの作成方法と curl コマンドの例を示します。サンプルの curl コマンドでは、Claude 3 Sonnet モデルを使用します。

REST

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

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

  • LOCATION: Anthropic Claude モデルをサポートするリージョン。Claude 3 Sonnet は次のリージョンで利用できます。
    • us-central1 (Iowa)
    • asia-southeast1 (Singapore)
    Claude 3 Haiku は次のリージョンで利用できます。
    • us-central1 (Iowa)
    • europe-west4 (Netherlands)
  • MODEL: 使用するモデル名。Claude 3 Haiku の場合は claude-3-haiku@20240307 を使用します。Claude 3 Sonnet の場合は claude-3-sonnet@20240229 を使用します。
  • 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 であり、トップ P 値が 0.5 であるとします。この場合、モデルは温度を使用して A または B を次のトークンとして選択し、C は候補から除外します。

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

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

    トークン選択のそれぞれのステップで、最も高い確率を持つトップ K のトークンがサンプリングされます。その後、トークンはトップ 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="claude-3-sonnet@20240229"
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 を利用できるリージョン

Claude 3 Sonnet は次のリージョンで利用できます。

  • us-central1 (Iowa)
  • asia-southeast1 (Singapore)
Claude 3 Haiku は次のリージョンで利用できます。
  • us-central1 (Iowa)
  • europe-west4 (Netherlands)

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

Claude 3 Sonnet と Claude 3 Haiku には、利用可能なリージョンごとに 1 つずつ、2 つの割り当てがあります。割り当ては、1 分あたりのクエリ数(QPM)と 1 分あたりのトークン数(TPM)で指定されます。TPM には、入力トークンと出力トークンの両方が含まれます。

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

リージョン デフォルトの割り当て上限 サポートされているコンテキストの長さ
us-central1 (Iowa) 60 QPM、50,000 TPM 200,000 トークン
asia-southeast1 (Singapore) 60 QPM、50,000 TPM 200,000 トークン

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

リージョン デフォルトの割り当て上限 サポートされているコンテキストの長さ
us-central1 (Iowa) 60 QPM、50,000 TPM 200,000 トークン
europe-west4 (Netherlands) 60 QPM、50,000 TPM 200,000 トークン

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

Claude モデルの有効化とプロンプトの送信に必要な権限を設定する

ユーザーが Anthropic Claude モデルを有効にするには、管理者がそのユーザーに Consumer Procurement Entitlement 管理者 IAM(Identity and Access Management)ロールを付与する必要があります。このロールを付与されたユーザーは、Model Garden で Anthropic Claude モデルを有効にできます。

ユーザーが Vertex AI からプロンプト リクエストを行うには、管理者がそのユーザーに aiplatform.endpoints.predict 権限を付与する必要があります。この権限は、Vertex AI ユーザー IAM ロールに含まれています。詳細については、Vertex AI ユーザーアクセス制御をご覧ください。

コンソール

  1. Consumer Procurement Entitlement 管理者 IAM ロールをユーザーに付与するには、[IAM] ページに移動します。

    [IAM] に移動

  2. [プリンシパル] 列で、Anthropic Claude モデルへのアクセスを有効にするユーザーのプリンシパルを探して、その行の「プリンシパルを編集します」アイコン をクリックします。

  3. 権限の編集ペインで、[ 別のロールを追加] をクリックします。

  4. [ロールを選択] で、[Consumer Procurement Entitlement 管理者] を選択します。

  5. 権限の編集ペインで、[ 別のロールを追加] をクリックします。

  6. [ロールを選択] で、[Vertex AI ユーザー] を選択します。

  7. [保存] をクリックします。

gcloud

  1. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

  2. Model Garden で Anthropic Claude モデルを有効にするために必要な Consumer Procurement Entitlement 管理者ロールを付与します。

    gcloud projects add-iam-policy-binding  PROJECT_ID \
    --member=PRINCIPAL --role=roles/consumerprocurement.entitlementManager
    
  3. プロンプト リクエストを行うために必要な aiplatform.endpoints.predict 権限を含む Vertex AI ユーザーロールを付与します。

    gcloud projects add-iam-policy-binding  PROJECT_ID \
    --member=PRINCIPAL --role=roles/aiplatform.user
    

    PRINCIPAL は、プリンシパルの ID に置き換えます。ID の形式は user|group|serviceAccount:email または domain:domain です(例: user:cloudysanfrancisco@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com)。

    以下を含むポリシー バインディングのリストが出力されます。

    - members:
      - user:PRINCIPAL
      role: roles/roles/consumerprocurement.entitlementManager
    

    詳細については、単一のロールを付与するgcloud projects add-iam-policy-binding をご覧ください。