最近、LLMサービスはGeminiを中心に利用しています。高い品質が求められる場合はClaude Sonnet 3.7やo3などを使い分けていますが、手軽な要約や翻訳といったタスクでは、Gemini flash 2.0が第一候補です。
YouTubeの字幕翻訳、Webページの翻訳、Discord常駐Botなど、これら全てにGemini flash 2.0を活用しています。
大量に利用しても1日の料金は数円程度とわずかですが、従量課金制のため、毎日の利用料金をDiscordに通知できると安心感が増します。
本記事では、Google Cloudの利用料金を日次でDiscordに投稿する方法を解説します。
Google Cloudの設定
まず、Google Cloudのプロジェクトを開きます。Google AI StudioからAPIキーを生成した場合、多くは「Generative Language Client」というプロジェクト名になっているはずです。
左側のサイドバーメニューから「課金」を選択し、課金ダッシュボードへ遷移します。
課金ダッシュボード内で「課金データのエクスポート」より、「標準の使用料金」の「設定を編集」をクリックします。
これまでBigQuery APIを利用したことがない場合は、「BigQuery APIを有効化」ボタンが表示されるので、クリックしてAPIを有効化してください。
API有効化後、BigQueryにデータをエクスポートするためのデータセットを作成します。データセットIDとリージョンは任意のものを選んでください。
暗号化方式も選択できますが、特にこだわりがなければ「Googleが管理する暗号鍵」で問題ありません。今回はこちらを選択しました。
作成したデータセットをエクスポート先に設定すると、画像のように支払い情報がBigQueryに保存されるようになります。
作成直後はデータが無いためここで1日〜2日寝かせます。
寝かせてからBigQueryのコンソールにデータが格納されていることを確認できれば準備完了です。
DiscordのWebhook URL発行
次に、通知先となるDiscordチャンネルのWebhook URLを発行します。Discordでは、チャンネル設定の「連携サービス」からWebhookを作成し、URLを取得できます。
Webhook作成時にアイコン画像も設定できます。お気に入りの画像を設定しておくと、通知が来た際の気分も上がりますのでおすすめです。
Google Apps Scriptの設定
Google Apps Script (GAS) を使って、Discordへ通知を送るBotを作成します。 (https://script.google.com/home)
こちらのコンソールから新しいプロジェクトを作成することで、スプレッドシートやドキュメントに紐付かない独立したGASプロジェクトとして開発できます。(Google検索でひ っかかり辛く毎回コンソールを開くのに悩むページです。)
任意のプロジェクト名でGASプロジェクトを作成してください。
実装するBotのコードは以下の通りです。このスクリプトにより、毎日の費用と月初から当日までの累計費用がDiscordに投稿されます。
変更する箇所は冒頭の定数部分です。
const PROJECT_ID = "プロジェクトID";
const BILLING_TABLE = "テーブルID";
const DISCORD_WEBHOOK_URL = 'DiscordのWebHook URL';
PROJECT_ID
は、BigQueryコンソールのBillingDataテーブル情報で確認できます。例えば、「gen-lang-client-00000000.BillingData
」と表示されている場合、.BillingData
を除いた「gen-lang-client-00000000
」がプロジェクトIDとなります。
BILLING_TABLE
も同様にBigQueryコンソールで確認します。先ほどのプロジェクトIDの下に、エクスポート設定で作成されたテーブルが表示されます。そのテーブルを選択すると詳細画面が開き、そこに記載されている「テーブルID」をコピーして貼り付けてください。
DISCORD_WEBHOOK_URL
には、先ほどDiscordで発行したWebhook URLを記載します。これらの値を正しく設定したら、GASエディタ上で main
関数を選択し、実行します。
スクリプトが正常に実行されれば、DiscordにGoogle Cloudのサービス毎の利用料金(日次と月次累計)が投稿されるはずです。
GASの日次実行
テスト実行で動作確認ができたら、スクリプトが毎日定時に自動実行されるようにトリガーを設定します。
GASエディタの左側にある時計アイコンの「トリガー」メニューを選択し、「トリガーを追加」ボタンをクリックします。
トリガー設定画面では、実行する関数(この場合は main
)と実行タイミングを指定します。イベントのソースを「時間主導型」、時間ベースのトリガーのタイプを「日付ベースのタイマー」や「日タイマー」に設定し、実行したい時刻(例: 午前9時〜10時)を選択します。GASの仕様上、正確な分単位での指定はできず、指定した時間帯のいずれかのタイミングで実行されます。(これはおそらく、負荷分散のための仕様でしょう。)
まとめ
以上で、Google Cloudの利用料金を毎日Discordへ自動的に投稿する仕組みが完成しました。
ちなみに、同様の機能をAWSで実現しようとすると、Cost Explorer APIの利用料金が発生し、毎日実行すると月に50円程度のコストがかかる場合があります。その点、BigQueryへのエクスポートとGASの組み合わせは、無料枠の範囲内で実現できる可能性が高く、Google Cloudの魅力の一つですね。