はじめに
こんにちは。
2024年4月に発表されたGemini for Google Cloudの中から、今回もNatural language chatの挙動を検証してみました。
事前説明
Google CloudのコンソールでNatural language chatについて以下の説明が記載されています。
Through a natural language chat interface, you can quickly chat with Gemini Code Assist to get answers to your coding questions, or receive guidance on cloud best practices. Chat is available in the Google Cloud Console, and IDEs such as Visual Studio Code and JetBrains IntelliJ, via the Cloud Code IDE extensions.
つまり、自然言語チャットを通じてコーディングの質問をして回答を得たり、べスプラに誘導して貰えるサービスをサポートしているようです。
なお、2024年5月20日時点では英語のみのサービス提供であると書いていたのだが、どうやら順次日本語サポートを開始している模様。
前提
Gemini for Google Cloud APIを有効にしてからBig Queryコンソールに移動。
右上のペインから鉛筆マークを押下、「自動生成」にチェックが入っていることを確認。
検証はBig Queryのパブリックデータ
(bigquery-public-data.chicago_taxi_trips.taxi_trips)を使用していく。
実機検証①
コンソール上でコード生成して貰うにはコメントの先頭に「#」を置く。
「bigquery-public-data.chicago_taxi_trips.taxi_tripsのテーブルのチップ金額のトップ10を出して」とコメントを書く。Enterを押下するとクエリが生成される。
日本語からtipsカラムを推測出来なかったように見える。
正しいクエリに微調整する。
SELECT
- tip_amount
+ tips
FROM
`bigquery-public-data`.chicago_taxi_trips.taxi_trips
ORDER BY
- tip_amount DESC
+ tips DESC
LIMIT 10
修正ver.のクエリ動作結果は期待値通り。
実機検証②
要求を少し増やす。
「# bigquery-public-data.chicago_taxi_trips.taxi_tripsテーブルのトータル走行距離上位25件のタクシーIDと会社、trip_milesの合計マイル数を表示、先頭のカラムとして走行距離が大きい順に一意の番号を付与して」
SELECT
ROW_NUMBER() OVER (ORDER BY SUM(trip_miles) DESC) AS rank,
taxi_id,
company,
SUM(trip_miles) AS total_miles
FROM
`bigquery-public-data.chicago_taxi_trips.taxi_trips`
GROUP BY
taxi_id,
company
ORDER BY
total_miles DESC
LIMIT
25;
結果、期待値と完全に一致するクエリが返された。
(所感)明示的な指示をしてあげれば期待通りのことをしてくれる。(人間の新卒と同じ)
後述
英語版の環境には公式に掲載された全6個のアシスタント機能のプレビューが提供されている。2024年5月現在は日本語版環境で試せるのはそのうち2個。
なお、英語環境でハンズオンさせて貰った感じExplanation(クエリの説明)機能が好みだった。「長文コード読めるけど読むの面倒くさいな~」と考えてしまう怠惰な私にぴったりだった。何十行にも渡るクエリをコンソール上でハイライトすると「In summary, this query identifies the top 10 users with the highest average~」など10秒以内に理解できる文章で説明してくれる。
自然言語の別の方法はこちらの記事で紹介。
[Gemini × Big Query] Natural language chat(自然言語)を使ってBig QueryでSQLを自動生成してもらう(プレビュー版)
参考
<公式>Gemini のアシスタント機能を使用してクエリを作成する
<公式>Gemini Code Assist を使用して、API、インテグレーション、自動化フローを構築する