Vertex AIのPython APIによる利用(Workbench/Colab)

## 目的
Google Cloudの生成AIであるVertexAIの機能をPythonからのAPIコールで試してみる
実行環境として、Vertex AI WorkbenchとGoogle ColabからのPythonで実行する

## Vertex AI Workbenchとは？
https://cloud.google.com/vertex-ai-workbench?hl=ja

データサイエンティストや機械学習エンジニアが機械学習（ML）モデルの開発、トレーニング、デプロイメントを効率的に行えるように設計された環境で、Jupyter Notebookをベースにしたインタラクティブな環境を提供し、コードの実行、データの可視化、モデルの評価などが一元的に行える。

## Google Colabとは？
https://colab.research.google.com/

Googleが提供するクラウドベースのインタラクティブな環境で、Pythonプログラミングとデータサイエンス、機械学習のタスクに使用される。ColabはJupyter Notebookの一種であり、ウェブブラウザ上で直接コードを書き、実行することができる。


## 事前準備

APIを有効化する
![貼り付けた画像_2023_08_29_10_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/95479b88-d12c-dc21-c6ed-ebc885aa9d82.png)

![貼り付けた画像_2023_08_29_10_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/64122cd9-3b6f-1433-9d9f-de78dd76ac14.png)

### ノートブックの作成
![貼り付けた画像_2023_08_29_10_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/923d8f9c-9dfd-0214-86ae-b850daa06d73.png)

![貼り付けた画像_2023_08_29_10_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/c7bd7dcb-a448-c450-6fc2-1ae175a79c05.png)

### Jupyter LABの起動
![貼り付けた画像_2023_08_29_10_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/1043826c-79ca-d37e-e79b-ce0f2d2abc00.png)

![貼り付けた画像_2023_08_29_10_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/e4bdb6e5-fc85-65c5-6919-7e05f500ce00.png)

### クライアントライブラリの導入

下記を入力し、実行する
```
!pip install google-cloud-aiplatform --upgrade --user
```
![貼り付けた画像_2023_08_29_10_55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/21e8da83-bfe5-a13a-a0aa-e60a587c6864.png)

カーネルをリロードする
![貼り付けた画像_2023_08_29_12_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/fd56ade9-bb6f-fe2c-753a-7aabd88bd201.png)

## Workbench(JupyterLAB)からのAPIコールの実行
GUIで下記の様に実施することをAPI経由で実施する
単純に「hello」とチャットする
![貼り付けた画像_2023_08_29_13_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/5c527ef2-50a6-6573-3e22-296e25a883da.png)


**project**と**location**は実行環境の値にする
**parameters**については、下記を参照
https://cloud.google.com/vertex-ai/docs/generative-ai/model-reference/text

GUIの右側にサンプルコードがあるが、そのまま実行しても動かないので少し手を加えたのが下記
```
from google.colab import auth as google_auth
google_auth.authenticate_user()

import vertexai
from vertexai.language_models import ChatModel, InputOutputTextPair

vertexai.init(project="generative-ai-396008", location="us-central1")
chat_model = ChatModel.from_pretrained("chat-bison@001")
parameters = {
    "candidate_count": 1,
    "max_output_tokens": 256,
    "temperature": 0.2,
    "top_p": 0.8,
    "top_k": 40
}
chat = chat_model.start_chat()
response = chat.send_message("""hello""")
print(f"Response from Model: {response.text}")
```

実行してみる

GUI操作と同様にレスポンスが確認できた
![貼り付けた画像_2023_08_29_13_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/082d5243-88e9-0472-0927-445103a8ad50.png)

## Google ColabからのAPIコールの実行
https://colab.research.google.com/

ノートブックの作成
![貼り付けた画像_2023_08_29_13_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/54942f98-d332-d6d1-0ed5-230de5fe7780.png)

ライブラリの導入
```
!pip install "shapely<2.0.0" 
!pip install google-cloud-aiplatform --upgrade
```
実行後、リスタートする
![貼り付けた画像_2023_08_29_13_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/0bddea59-541b-0053-93ef-82d99a88a84c.png)

実行してみる
```
from google.colab import auth as google_auth
google_auth.authenticate_user()

import vertexai
from vertexai.language_models import ChatModel, InputOutputTextPair

vertexai.init(project="generative-ai-396008", location="us-central1")
chat_model = ChatModel.from_pretrained("chat-bison@001")
parameters = {
    "candidate_count": 1,
    "max_output_tokens": 256,
    "temperature": 0.2,
    "top_p": 0.8,
    "top_k": 40
}
chat = chat_model.start_chat()
response = chat.send_message("""hello""")
print(f"Response from Model: {response.text}")
```

実行するといくつかアクセス許可を手動で実施する
![貼り付けた画像_2023_08_29_13_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/a84f2510-2fbc-b188-c508-c8113f81e519.png)

アカウントの選択
![貼り付けた画像_2023_08_29_13_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/eb7c6552-5bf0-4800-0fea-0c686e88f92f.png)

アクセス許可を選択
![貼り付けた画像_2023_08_29_13_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/d5ecc7fc-52aa-2296-f10d-5c8809ea16dd.png)

アクセス許可後、Gmailにセキュリティ通知が送られてくる
![貼り付けた画像_2023_08_29_13_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/e0e104b5-bcc1-4a35-2066-a80b5f109cf1.png)

元の画面に戻ると実行されている
![貼り付けた画像_2023_08_29_13_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/bee70396-74f4-71c7-a0a5-2a4ac96a6cf4.png)