かつて、Node.jsからOpenAI APIをささっと叩いたことがありましたが、今回はVertexAI APIをさささっと叩いてみようと思います。
公式の クイックスタート はこちらです。
❶ 必要なモジュールをインストールする
yarn add @google-cloud/vertexai dotenv
❷ Google Cloud Platformにプロジェクトを作る
https://console.cloud.google.com/projectcreate から新しいプロジェクトを作り、プロジェクトを選択します
❸ Vertex AIを有効にする
Vertex AIを検索し、有効にします
❹ サービスキーを作る
https://cloud.google.com/iam/docs/keys-create-delete にアクセスし、「Enable the API」をクリックし、プロジェクトを選択し、APIを有効にします。
次に、https://cloud.google.com/iam/docs/keys-list-get にアクセスし、「サービスアカウントに移動」をクリックします。
APIを有効にしたサービスを選択したら、アカウントを選択し、「鍵タブ」から「キーを追加」の「新しい鍵を作成」を選択します。
キーのタイプはJSONを選択し、作成をクリックするとPCにjsonがダウンロードされるので、service-account.jsonとリネームしておきます。
❺ コードを書く
.env
PROJECT_ID=Google Cloud Platformに作成したプロジェクトのID LOCATION=us-central1 TEXT_MODEL=gemini-1.5-flash-001
index.mjs
import * as dotenv from 'dotenv'; import serviceAccount from './service-account.json' with { type: 'json' }; import { VertexAI } from '@google-cloud/vertexai' dotenv.config(); const { PROJECT_ID: project, LOCATION: location, TEXT_MODEL: model, } = process.env; const vertexAI = new VertexAI({ project, location, googleAuthOptions: { credentials: serviceAccount }, }); const generativeModel = vertexAI.getGenerativeModel({ model: model, }); (async () => { const prompt = '日本語で、なにか適当な話をしてみてください' const resp = await generativeModel.generateContent(prompt); const contentResponse = await resp.response; console.log(contentResponse.candidates[0].content.parts[0].text); })();
❻ index.mjsと同階層にservice-account.jsonを設置する
これで準備完了です。
node index.mjs
を実行すると、
夕暮れの街を、自転車に乗った少年が駆け抜けていく。風になびく彼の髪は、夕焼けの色に染まっているようだった。少年は、いつも通り、公園へ向かう。そこには、彼のお気に入りの場所がある。 公園の奥まった場所に、大きな木が生えている。その木の根元には、いつも、一匹の猫が寝そべっている。少年は、その猫に「ミミ」と名付け、毎日、公園に来るたびに、ミミに話しかける。 今日は、少年はいつものように、ミミに話しかけた。「今日は、学校で新しい友達ができたんだ。すごく優しい子で、一緒に遊んだ後、家に遊びに行く約束をしたんだ。ミミも一緒に来ればよかったのに。」 すると、ミミはゆっくりと目を覚まし、少年の方を見た。そして、まるで少年の言葉を理解したかのように、ニャーと鳴いた。少年は微笑む。 「そうか、ミミも嬉しいのか。よかったな。」 少年は、ミミの頭を優しく撫でた。そして、夕暮れの空を眺めながら、明日もまた、ミミに会いに来ようと心に決めた。 少年は、自転車に乗って、家路につく。後ろ姿は、夕焼けに照らされて、小さく霞んでいた。
と返ってきました。
当然、AIが生成する文章は実行する度に変わります。
あと、書き忘れましたが、GCPのプロジェクトを請求先アカウントに紐づけておく必要がある気がします。
APIを叩くたびに数銭請求が発生するので。