Private Service Connect エンドポイントを介して Python SDK で Gemini Chat にアクセスする

1. 概要

Vertex AI API にはインターネット経由でアクセスできますが、企業ではインターネットを介さずに Vertex AI API にプライベート アクセスする場合があります。このラボでは、まず、VM インスタンス上で実行される Python SDK から、公共のインターネット経由で Vertex Gemini Chat API にアクセスします。

次に、Google API への Private Service Connect エンドポイントを作成し、プライベート エンドポイントを使用して Gemini Chat API に接続するようにトラフィック フローを変更します。この構成は、Terraform、gcloud、コンソールを組み合わせたものになります。

このラボでは、次のパターンを作成します。

図 1.

8b283cc5684283c2.png

2. 目的

このラボでは、次のタスクの実行方法について学びます。

  • python sdk を使用するように VM インスタンスを設定する
  • Python スクリプト経由で Gemini Chat に接続する
  • Googleapis に接続するように PSC エンドポイントを構成する
  • Googleais への接続パスを確認する
  • 手動 DNS エントリを構成する

セルフペース型の環境設定

  1. Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
  • プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は PROJECT_ID と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。
  • なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
  1. 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。

Cloud Shell を起動する

Google Cloud はノートパソコンからリモートで操作できますが、この Codelab では、Google Cloud Shell(Cloud 上で動作するコマンドライン環境)を使用します。

Google Cloud Console で、右上のツールバーにある Cloud Shell アイコンをクリックします。

55efc1aaa7a4d3ad.png

プロビジョニングと環境への接続にはそれほど時間はかかりません。完了すると、次のように表示されます。

7ffe5cbb04455448.png

この仮想マシンには、必要な開発ツールがすべて用意されています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働します。そのため、ネットワークのパフォーマンスと認証機能が大幅に向上しています。この Codelab での作業はすべて、ブラウザ内から実行できます。インストールは不要です。

3. タスク 1. Terraform を使用して環境を設定する

ファイアウォール ルールとサブネットを含むカスタム VPC を作成します。Cloud コンソールを開き、使用するプロジェクトを選択します。

  1. コンソールの右上にある Cloud Shell を開き、Cloud Shell に正しいプロジェクト ID が表示されていることを確認します。アクセスを許可するよう求めるメッセージが表示されたら、そのメッセージに沿って操作します。4261e776f64ea978.png
  2. terraform-build という名前のフォルダを作成し、そのフォルダに移動します。
mkdir terraform-build  && cd terraform-build
  1. main.tf ファイルと variable.tf ファイルを作成します。
touch main.tf variable.tf 
  1. Cloud Shell エディタ ビューに切り替えます。[editor] を選択し、インターフェースを読み込めるように必要なプロンプトを許可します。
  2. 読み込みが完了したら、[File] > [Open Folder] に移動し、/home/your-user-name/terraform-build に移動して [OK] を選択して、エディタでフォルダを開きます。78f5eb9f2f82f1b0.png
  3. variable.tf ファイルを選択し、次のように追加します。your-project-id-here のテキストを、引用符で囲んだ実際のプロジェクト ID に置き換えます。
variable "project_id" {
  type = string
  default = "your-project-id-here"
}

variable "network_id" {
  type = string
  default = "python-net"
}
  1. 次に、main.tf ファイルを開きます。以下で説明するように、さまざまなアクションを実行するための Terraform コードを追加します。

API を有効にする

resource "google_project_service" "default"

python-net という VPC を作成する

resource "google_compute_network" "default"

サブネットを追加する

resource "google_compute_subnetwork" "default"

2 つのファイアウォール ルールを追加する

resource "google_compute_firewall" "allow_icmp"resource "google_compute_firewall" "allow_ssh"

  1. 次の内容をコピーして main.tf ファイルに貼り付けます。
resource "google_project_service" "default" {
  for_each = toset([
    "dns.googleapis.com",
    "aiplatform.googleapis.com",
    "servicedirectory.googleapis.com"
  ])

  service            = each.value
  disable_on_destroy = false
}

resource "google_compute_network" "default" {
  project                 = var.project_id
  name                    = var.network_id
  auto_create_subnetworks = false
  mtu                     = 1460
  routing_mode            = "GLOBAL"
}

resource "google_compute_subnetwork" "default" {
  name          = "vm1-subnet"
  ip_cidr_range = "10.0.11.0/24"
  region        = "us-east1"
  stack_type    = "IPV4_ONLY"
  network       = google_compute_network.default.id
}

resource "google_compute_firewall" "allow_icmp" {
  name    = "allow-icmp-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "icmp"
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-icmp"]
}

resource "google_compute_firewall" "allow_ssh" {
  name    = "allow-ssh-${google_compute_network.default.name}"
  network = google_compute_network.default.id
  project = var.project_id

  allow {
    protocol = "tcp"
    ports    = ["22"]
  }

  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-ssh"]
}
  1. Cloud Shell ターミナルに戻り、terraform-build ディレクトリ cd terraform-build にいることを確認して、次のコマンドを実行します。

terraform init

作業ディレクトリを初期化します。このステップでは、指定された構成に必要なプロバイダをダウンロードします。

terraform plan

実行プランを生成します。このプランには、Terraform がインフラストラクチャのデプロイに行う操作が示されます。

  1. 次に、リソースを作成するために terraform apply コマンドを実行し、「yes」と入力して実行します。

4. タスク 2. Terraform を使用して NAT ゲートウェイと VM を作成する

インターネットへの外部送信アクセスを許可する必要があるため、Cloud NAT ゲートウェイを作成して接続します。

  1. Cloud Shell を開き、terraform-build フォルダに移動して次のファイルを作成します(合計 3 つのファイル)。これらは後で編集します。
touch nat-vm.tf psc.tf dns.tf
  1. Cloud Shell エディタビューに切り替えて、nat-vm.tf ファイルを選択して、次の Terraform コードを追加します。これにより、NAT ゲートウェイと 2 つの VM が作成されます。

Terraform nat-vm.tf

resource "google_compute_router" "default" {
  name    = "py-outbound-nat"
  region  = "us-east1"
  network = google_compute_network.default.id

 bgp {
  asn = 64514
  }
}

resource "google_compute_router_nat" "default" {
  name                               = "py-outbound-nat-gw"
  router                             = google_compute_router.default.name
  region                             = google_compute_router.default.region
  nat_ip_allocate_option             = "AUTO_ONLY"
  source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"

  log_config {
    enable = true
    filter = "ERRORS_ONLY"
  }
}

resource "google_compute_instance" "vm1" {
  name         = "py-vm1"
  zone         = "us-east1-b"
  machine_type = "n2-standard-2"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    subnetwork = google_compute_subnetwork.default.id  
    stack_type = "IPV4_ONLY"
  }

  tags = ["allow-ssh", "allow-icmp"]

  metadata_startup_script = <<-EOF
    sudo apt-get update
    sudo apt-get install python3 python3-dev python3-venv -y
    sudo apt-get install tcpdump dnsutils -y
    sudo -i
    sudo mkdir -p ~/py-gem-env
    cd ~/py-gem-env
    python3 -m venv env
    source env/bin/activate
    pip install ipython google-cloud-aiplatform
  EOF
}

resource "google_compute_instance" "vm2" {
  name         = "py-vm2"
  zone         = "us-east1-b"
  machine_type = "n2-standard-2"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    subnetwork = google_compute_subnetwork.default.id   
    stack_type = "IPV4_ONLY"
  }

  tags = ["allow-ssh", "allow-icmp"]

  metadata_startup_script = <<-EOF
    sudo apt-get update
    sudo apt-get install python3 python3-dev python3-venv -y
    sudo apt-get install tcpdump dnsutils -y
    sudo -i
    sudo mkdir -p ~/py-gem-env
    cd ~/py-gem-env
    python3 -m venv env
    source env/bin/activate
    pip install ipython google-cloud-aiplatform
  EOF
}
  1. Cloud Shell ターミナルに切り替え、terraform-build フォルダにいることを確認し terraform plan を実行します。4 つのアイテムが追加されることがわかります。次に、terraform apply を実行して「yes」と入力し、NAT ゲートウェイと 2 つの VM を作成します。

5. タスク 3. VM を構成してテストする

  1. VM インスタンスに移動します。py-vm1 で始まる VM を選択します。[SSH] を選択します。
  2. py-vm1 に SSH 接続したら、「sudo -i」と入力して root を有効にします。
  3. venv 環境を有効にします。
cd py-gem-env
source env/bin/activate
  1. 後でテストするために、これを認証しましょう。VM で次のコマンドを実行します。プロンプトが表示されたら、y キーを押します。
gcloud auth application-default login
  1. 次に、https:// で始まる URL をコピーし、ラボのブラウザ ウィンドウで新しいタブを開き、URL を貼り付けます。プロンプトを受け入れる。
  2. 次の選択コピーが表示されたら、vm py-vm1 セッションに戻り、[Enter authorization code:] にコピーしたコードを貼り付けて Enter キーを押して認証します。

c29615cdf9324209.png

  1. では、Vertex Gemini API に接続できるかどうかを簡単にテストしましょう。このテストでは us-central1-aiplatform.googleapis.com を使用するため、そのアドレスに dig を実行して、トラフィックのルーティング方法を確認します。
dig us-central1-aiplatform.googleapis.com
  1. 次のような結果が表示されます(アドレスは異なります)。API はパブリック API であるため、パスはパブリック IP アドレスを経由します。コピーしないでください
; <<>> DiG 9.16.48-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9117
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.210.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.211.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.212.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.213.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.215.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.216.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.12.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.13.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.26.95
  1. 次は Python を使用しますipython と入力して ipython インターフェースを有効にします。
ipython

4685b31f13df54e1.png

  1. 以下のコマンドをコピーして貼り付けます。Gemini に「Google ロゴの色は何色ですか?」と「空の色は何色ですか?」と尋ねます。enter-your-project-id-here は、引用符で囲まれたプロジェクト ID に置き換えます。
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

project_id = "enter-your-project-id-here" 
location = "us-central1" 

vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.5-pro")
chat_session = model.start_chat()  

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat_session, prompt)) 

prompt = "What are all the colors of the Google logo?"
print(get_chat_response(chat_session, prompt)) 

prompt = "What color is the sky?"
print(get_chat_response(chat_session, prompt))
  1. Enter キーを押して実行し、結果を確認します。
  2. このリクエストは、公開 API を介して Vertex にアクセスしました。
  3. SSH セッションを閉じて続行します。

今度は、同じ構成で py-vm2 を構成します

  1. VM インスタンスに移動します。py-vm2 で始まる VM を選択します。SSH を選択します。
  2. py-vm2 に SSH 接続したら、**sudo -i** と入力して root を有効にします。
  3. venv 環境を有効にします。
cd py-gem-env
source env/bin/activate
  1. 後でテストするために、これを認証しましょう。VM で次のコマンドを実行します。
gcloud auth application-default login
  1. 次に、https:// で始まる URL をコピーし、ラボのブラウザ ウィンドウで新しいタブを開いて URL を貼り付けます。プロンプトを受け入れます。
  2. 次のようにコピーして VM py-vm2 セッションに戻り、[Enter authorization code:] にコピーしたコードを貼り付け、Enter キーを押して認証します。

c29615cdf9324209.png

  1. では、Vertex Gemini API に接続できるかどうかを簡単にテストしてみましょう。このコマンドは us-central1-aiplatform.googleapis.com への 4 つの ping を使用するため、API の公開アドレスからレスポンスが返されます。
ping -c 4 us-central1-aiplatform.googleapis.com
  1. この VM は後でテストします。SSH セッションを閉じて続行します。

6. タスク 4. Terraform で PSC エンドポイントを googleapis に作成する

Vertex API エンドポイントへのプライベート接続を有効にするため、Google API 用の Private Service Connect エンドポイントを作成します。これにより、割り当てたプライベート IP アドレスを使用して、必要な Google API(この場合は Vertex)にトラフィックをルーティングできます。

  1. Cloud Shell をエディタビューで開きます(まだ開いていない場合)。作成する内容は次のとおりです。
  • PSC エンドポイントの IP 192.168.255.250 を作成します(resource "google_compute_global_address" "default")
  • Google API への PSC エンドポイントを作成します(resource "google_compute_global_forwarding_rule" "default")

terraform-build フォルダの psc.tf ファイルを開きます。ファイルに次のコードを追加します。

Terraform psc.tf

resource "google_compute_global_address" "default" {
  name         = "vertex-ip"
  purpose      = "PRIVATE_SERVICE_CONNECT"
  network      = google_compute_network.default.id
  address_type = "INTERNAL"
  address      = "192.168.255.250"
}

resource "google_compute_global_forwarding_rule" "default" {  
  name                  = "pscvertexgemini"
  target                = "all-apis"
  network               = google_compute_network.default.id
  ip_address            = google_compute_global_address.default.id
  load_balancing_scheme = ""
  }
  1. Cloud Shell ターミナルに切り替えて、terraform-build フォルダが表示されていることを確認します。次に、terraform init を実行します。次に、terraform plan を実行すると、2 つの項目が追加されることが示されます。
    次に、terraform apply を実行し、yes と入力して、IP と PSC の Google API エンドポイントを作成します。
  2. エンドポイントが存在することを確認する
gcloud compute addresses list --filter="name=( 'vertex-ip' ...)"
gcloud compute forwarding-rules describe pscvertexgemini --global

7. タスク 5. IP アドレスを使用してエンドポイントの接続を確認する

プライベート エンドポイントを使用して Gemini に接続しましょう。

  1. VM インスタンス py-vm1 に移動します。[SSH] を選択して VM に SSH 接続する
  2. sudo -i」と入力して root アクセス権を取得します。
  3. この個別のインスタンスを使用して PSC エンドポイントをテストするため、ホストファイルを次のエントリで変更します。
echo 192.168.255.250 us-central1-aiplatform.googleapis.com >> /etc/hosts

cat /etc/hosts
  1. ping コマンドを使用して、us-central1-aiplatform.googleapis.com への接続パスを確認します。これにより、ホストファイルに入力した IP アドレスに ping が送信されます。これは PSC エンドポイントであり、ping は失敗します。
ping -c 2 us-central1-aiplatform.googleapis.com
  1. コンソールに移動し、VM インスタンス py-vm1 の別のインスタンスを開きます。[SSH] を選択して VM に SSH 接続する
  2. sudo -i」と入力して root アクセス権を取得します。
  3. 次のコマンドを実行して、TCP ダンプで接続を確認します。
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. VM インスタンス py-vm1 の最初の SSH インスタンスに戻ります。
  2. 次を使用して環境をアクティブにします。
cd py-gem-env
source env/bin/activate
  1. では Python をテストします。ipython と入力して ipython インターフェースを有効にします。今度は、トラフィックは PSC エンドポイントを通過します。
ipython
  1. 次のコードをコピーして貼り付けます。「Google ロゴの色をすべて教えてください」と「ナイアガラ滝について教えてください」と Gemini に尋ねます。enter-your-project-id-here は、引用符で囲まれたプロジェクト ID に置き換えます。
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

project_id = "enter-your-project-id-here" 
location = "us-central1" 

vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.5-pro")
chat_session = model.start_chat()  # Corrected line

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat_session, prompt)) 

prompt = "What are all the colors of the Google logo?"
print(get_chat_response(chat_session, prompt)) 

prompt = "Describe Niagara Falls"
print(get_chat_response(chat_session, prompt))
  1. Enter キーを押して実行し、結果を確認します。
  2. VM インスタンス py-vm1 の 2 番目のインスタンスに戻ります。TCPDUMP の結果が表示されます。VM の IP アドレスと、us-central1-aiplatform.googleapis.com に接続する PSC エンドポイントの IP アドレスを含む In と Out が表示されます。
22:21:55.032433 ens4  Out IP 10.0.11.18.57114 > 192.168.255.250.443: Flags [.], ack 8606, win 501, options [nop,nop,TS val 1797790182 ecr 2593039209], length 0
22:21:55.468285 ens4  In  IP 192.168.255.250.443 > 10.0.11.18.57114: Flags [P.], seq 8606:8991, ack 5785, win 296, options [nop,nop,TS val 2593039645 ecr 1797790182], length 385
22:21:55.468320 ens4  Out IP 10.0.11.18.57114 > 192.168.255.250.443: Flags [.], ack 8991, win 501, options [nop,nop,TS val 1797790618 ecr 2593039645], length 0
  1. VM インスタンス py-vm1 へのすべての SSH セッションを閉じます。

8. タスク 6. Terraform を使用して googleapis に手動 DNS エントリを作成する(省略可)

限定公開 DNS を使用して、PSC エンドポイントを参照する手動 DNS エントリを作成できます。この設定は、そのキャンペーンに割り当てられたすべてのネットワークに影響します。

  1. [ネットワーク サービス] に移動し、[Cloud DNS] を選択します。
  2. ゾーンには、Google API 用の Private Service Connect の自動作成ゾーンと、ゾーンタイプ Service Directory が表示されます。これは、**SERVICE-ENDPOINTp.googleapis.com の形式で PSC エンドポイントに接続するために使用できます。例: aiplatform-pscvertexgemini.p.googleapis.com
  3. この場合は、限定公開 DNS エントリを手動で作成します。構成は次のようになります。
  • 「googleapis.com」の限定公開 DNS ゾーンを「googleapis-private」という名前で作成し、「python-net」ネットワークに制限します。
  • A レコードを追加して、「googleapis.com」を IP アドレス「192.168.255.250」にマッピングします。
  • CNAME レコードを追加して、「googleapis.com」のすべてのサブドメイン(例: www.googleapis.com)を「googleapis.com」にリダイレクトする。
  1. Cloud Shell をエディタビューで開きます(まだ開いていない場合)。terraform-build フォルダ内にある dns.tf ファイルを開きます。次のコードをファイルに追加します。

Terraform dns.tf

resource "google_dns_managed_zone" "private_zone" {
  name        = "googleapis-private"
  dns_name    = "googleapis.com."  
  visibility  = "private"
  project     = var.project_id     

  private_visibility_config {
    networks {
      network_url = google_compute_network.default.id  
    }
  }
}

resource "google_dns_record_set" "a_record" {
  name    = "googleapis.com."  
  type    = "A"
  ttl     = 300
  managed_zone = google_dns_managed_zone.private_zone.name
  project = var.project_id    

  rrdatas = ["192.168.255.250"]
}

resource "google_dns_record_set" "cname_record" {
 name    = "*.googleapis.com."
 type    = "CNAME"
 ttl     = 300
 managed_zone = google_dns_managed_zone.private_zone.name
 project = var.project_id    

 rrdatas = ["googleapis.com."]  
}
  1. Cloud Shell ターミナルに切り替えて、terraform-build フォルダが表示されていることを確認します。次に、terraform plan を実行して、追加される項目を表示します。
    次に、terraform apply を実行して yes と入力し、限定公開 DNS エントリを作成します。
  2. 次のように、A レコードと CNAME を含む設定が表示されます(b7f122f0d1fd2850.png を参照)。
  3. 次に、py-vm2 でこれらの変更に対する接続を確認します。

9. タスク 7. IP アドレス経由のエンドポイント接続を確認する(省略可)

プライベート エンドポイントを使用して接続し、Gemini に接続しましょう。

  1. VM インスタンス py-vm2 に移動します。SSH を選択して VM に SSH 接続する
  2. sudo -i と入力して root アクセス権を取得します。
  3. ping コマンドを使用して、us-central1-aiplatform.googleapis.com への接続パスを確認します。これにより、限定公開 DNS の IP アドレス(googleapis のレコード)に ping が行われます。この IP は PSC エンドポイントであり、ping は失敗します。
ping -c 2 us-central1-aiplatform.googleapis.com
  1. aiplatform-pscvertexgemini.p.googleapis.com で、PSC Google API 用に自動的に作成された DNS エントリを使用して、ping で接続パスを確認します。これは PSC エンドポイントの IP アドレスを指しており、ping は失敗します。
ping -c 2 aiplatform-pscvertexgemini.p.googleapis.com
  1. dig コマンドを使用して、us-central1-aiplatform.googleapis.com への接続パスを確認します。これは PSC エンドポイントの IP アドレスにする必要があります。
dig us-central1-aiplatform.googleapis.com
  1. コンソールに戻り、VM インスタンス py-vm2 の別のインスタンスを開きます。[SSH] を選択して VM に SSH 接続する
  2. sudo -i」と入力して root アクセス権を取得します。
  3. 次のコマンドを実行して、TCP ダンプで接続を確認します。
sudo tcpdump -i any port 53 -n or host us-central1-aiplatform.googleapis.com
  1. VM インスタンス py-vm2 の最初の SSH インスタンスに戻ります。
  2. を使用して環境を有効にします。
cd py-gem-env
source env/bin/activate
  1. では、Python をテストしてみましょう。ipython と入力して ipython インターフェースを有効にします。
ipython
  1. 次のコードをコピーして貼り付けます。「Google ロゴの色は何色ですか?」と「Gemini Pro の 2 つの機能は何ですか?」と Gemini に尋ねます。enter-your-project-id-here は、引用符で囲まれたプロジェクト ID に置き換えます。
import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

project_id = "enter-your-project-id-here" 
location = "us-central1" 

vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.5-pro")
chat_session = model.start_chat()  # Corrected line

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat_session, prompt)) 

prompt = "What are all the colors of the Google logo?"
print(get_chat_response(chat_session, prompt)) 

prompt = "What are two features of Gemini pro"
print(get_chat_response(chat_session, prompt))
  1. Enter キーを押して実行し、結果を確認します。
  2. VM インスタンス py-vm2 の 2 つ目のインスタンスに戻ります。TCPDUMP の結果が表示されます。送受信が確認され、VM の IP アドレスが PSC エンドポイントの IP アドレスを使用して us-central1-aiplatform.googleapis.com に接続していることがわかります。

VM インスタンス py-vm2 へのすべての SSH セッションを閉じます。

10. クリーンアップ

  1. Cloud Shell に移動し、terraform-build ディレクトリが cd terraform-build にあることを確認し、次のコマンド terraform destroy を実行して「yes」と入力します。これにより、Terraform を使用してプロジェクトで作成したすべてのリソースが削除されます。

11. 完了

これで、パブリック API アドレスと、Google API 用の Private Service Connect エンドポイントを使用して、Vertex Gemini チャットに正常に接続できました。この機能は、Interconnect、Cross-Cloud Interconnect、VPC を介して接続されているオンプレミス/その他のクラウド環境にプライベート API 接続を拡張できます。

次のステップと詳細情報

Vertex AI ネットワーキングの詳細を確認する

Codelab: Private Service Connect エンドポイントを介して Python SDK を使用して Vertex AI の Anthropic Claude にアクセスする

次のラボを受講する

Google Cloud でクエストを続けるか、以下の Google Cloud Skills Boost ラボをご確認ください。