社内用AIチャットアプリ② GAS + Gemini API
生成AIを業務で使うため、API経由だと学習利用しないということだったので、APIをつかったチャットアプリを作成します。
もともとGWS環境なので、GCP + GAS + Geminiで作成を進めていきます。
前回はオウム返しのアプリを作成したので、今回はgeminiへ接続していきます。
Google AI Studioの準備
GASを使ったREST版での使用の仕方の情報は少ないです。
数少ない情報の提供者様、ありがとうございました。
GCPで自分でモデルを準備するパターンとAI STUDIOを使うパターンと2通り出来るようです。
AI STUDIOではv1とv1betaが準備されているようです。(2024/06/10現在)
※APIバージョン説明
一般的にWEBで公開されているものはv2のようで、URLを入力するとyoutubeを参照したりしてくれるのですが、そういったweb情報の取得がv1では出来ないようです。
早く、v2を使えるようになりたいですね。
早期アクセスアプリの有効化
GWS環境下で組織のルールに従っている場合、早期アクセスアプリを禁止にしている場合があります。
GWS管理者に設定を確認してもらい、禁止になっている場合は許可してもらうようお願いしてください。
参考までに、許可ポイントはGWS管理コンソール内の
「アプリ」>「その他のGoogleサービス」>「早期アクセスアプリ」
です。一番最後の方に表示されると思います。
APIキーを取得する
AI STUDIOにアクセスしてAPIキーを発行します。
リンク先からGoogle AI Studioにログインします。
すると通知が出てくるので、一番上だけチェックするとログインできるようになります。
必要に応じて2、3番目もチェックしてください。
ログイン出来たら「Get API Key」>「APIキーを作成」をクリックします。
どのGCPプロジェクトで作成するかの選択画面が出てきたら、前回作成したGCPプロジェクトを選択します。
「Google Cloudプロジェクトを検索」ボックスをクリックすると選択肢が現れます。
しばらくするとAPIキーが作成されるので、コピーして控えておいてください。
ちなみに、このAPIキーを使うためには課金情報が必要になってきます。プロジェクトの課金設定を行ったうえで作業を行ってください。
GASを変更する
前回作成したGASを変更します。
コードの変更
const GEMINI_API = "{APIキー}";
/**
* Geminiにメッセージを送信し、答えを受け取る
*
* @param {string} uText - 送信するメッセージ
*/
function fetch2Gemini(uText){
// メッセージ作成
const contentsStr = `{
"role": "user",
"parts": [{
"text": ${JSON.stringify(uText)}
}]
}`;
// GEMINIに送信する
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=${GEMINI_API}`;
const payload = {
'contents': JSON.parse(`[${contentsStr}]`)
};
const options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const res = UrlFetchApp.fetch(url, options);
// 受信メッセージをJSONに変換する
const resJson = JSON.parse(res.getContentText());
// 送受信のログを残す
Logger.log(resJson);
// 結果処理
if(resJson && resJson.candidates && resJson.candidates.length > 0){
return resJson.candidates[0].content.parts[0].text;
}
else{
return '回答を取得できませんでした。';
}
}
/**
* Responds to a MESSAGE event in Google Chat.
*
* @param {Object} event the event object from Google Chat
*/
function onMessage(event) {
let message = "";
// イベントにメッセージが含まれていれば処理実行
if(event.message.text){
// メッセージ取得
const uText = event.message.text;
// GEMINIに接続
message = fetch2Gemini(uText);
}
return { "text": message };
}
-
APIキーの設定
スクリプトの最初にGEMINI_APIキーを設定しておきます。
先ほど控えたAPIキーをここに入力しておいてください。 -
fetch2Gemini関数の作成
GEMINIに接続してお返事をもらう関数です。
const contentsStr = `{
"role": "user",
"parts": [{
"text": ${JSON.stringify(uText)}
}]
}`;
ここでgeminiに投げるコンテンツを作成します。詳細はこちらのチュートリアルをお読みください。
roleは"user"または"model"となります。userは質問者、modelはgeminiの回答となります。
partsの中身はメッセージ電文となり、textにメッセージ文字列を入力します。
urlに関してはこちらのRESTの中身をお読みください。
主に関係があるのは、v1betaのモデルの欄になるかと思います。今回はmodels.generateContentを使用したのですが、models.listを使用することでv1betaの中でも使用できるモデル一覧の取得などを行うことが出来ます。
今回のチャレンジでは、v1betaのgemini-1.5-pro-latestモデルを使用しています。
設定が終わればfetchを行い、回答のjsonを取得します。結果があればテキスト情報を返し、うまく行かなかった場合にはエラーを返します。
- onMessageの変更
メッセージ取得時にオウム返しを行っていましたが、fetch2Gemini関数を実行するように変更します。
変更を行ったら上書き保存をしてください。
テストしてみる
前回のチャットに話しかけてみてください。
あいさつをするとちゃんと挨拶をし返してくれるはずです。かわいいですね。
公開してみる
せっかく作ったからには自分だけで使っておらず、社内全体に使ってもらいたいものです。
ただし、geminiに限らず生成系AIのAPIは従量課金制なので、使用者が増えると料金も上がっていきます。ご注意を。
Google Workspace Marketplace SDKを有効にする
GCPのコンソールに移動し、左上のナビゲーションメニューを開き、「APIとサービス」>「有効なAPIとサービス」をクリックします。
上部に「+ APIとサービスを有効にする」があるのでクリックし、検索バーで「
Google Workspace Marketplace SDK」を検索します。見つかったら
Google Workspace Marketplace SDKを開きAPIを有効にします。
アプリの構成の設定
APIを有効にしたら、「アプリの構成」タブを開き、必要な項目を入力していきます。
- アプリの公開設定
- 社内限定にするのであれば「限定公開」にチェックを付けます。
- 社内限定にするのであれば「限定公開」にチェックを付けます。
- インストールの設定
- 個別インストールと管理者によるインストールのままで大丈夫です。
- インストールを管理したい場合、管理者のみに変更してください。(GWSの設定でインストール者を限定することもできます)
- アプリの統合
- Chat向けアプリにチェックをつけておきます。
- ほかはチェックを外しておきます。
- OAuthスコープ
- emailとprofileが記入されてると思います。記載がない場合は下記画像を参考にしてください。
- emailとprofileが記入されてると思います。記載がない場合は下記画像を参考にしてください。
- デベロッパー情報
- 必須項目をすべて入力してください。おそらく、下図の3ヶ所。
すべて入力したらば保存を押してください。
- 必須項目をすべて入力してください。おそらく、下図の3ヶ所。
ストアの掲載情報の設定
- アプリの詳細
- 「言語1」を開き、「簡単な説明」の項目を埋めてください
- 「料金」を「無料」にしてください
- 「カテゴリ」は好きなものを選択してください。
- 画像および映像
- 32x32と128x128のアイコン、220x140のバナー画像を登録してください
- スクリーンショット
- チャット画面のサンプルを登録しておいてください
- サポートのリンク
- 準備できればそれぞれの情報を書いたもののURLを書いてください。
- 利用規約、プライバシーポリシー、サポートが必須項目です。
- 配布
- すべてのリージョンにチェックを付けてください
アプリの構成も正しく設定できていれば「公開」ボタンを押せるようになっているはずです。
これでマーケットプレイスでの公開が開始されます。
GWSの設定
組織管理のGWSを使っている場合、管理者によってインストールできるアプリが制限されている場合があります。
また、インストールさせたい部署、させたくない部署など、条件をわけることも出来ます。
詳細はこちらをご覧ください。
Discussion