Google AI Studio × Gemini × NotebookLMを使ってみた

# それぞれサービスの概要

## Google AI Studio

Googleが提供しているAI開発プラットフォームです。
プログラミングやAIの開発の経験がある人だけじゃなく、開発者じゃない人でも利用することができます。

プロンプトの作成や、モデルの出力調整などがAI Studioではできます。
また動画や画像ファイルにも適応できます。

Google AI StudioではGeminiを基本的に無料で利用できますが
下記で実施する Gemini APIを使うと料金体系が変わります。
無料枠で実行すると、枠の制限を超えた場合制限エラーで拒否されますが
有料ティアに移行した場合は利用したトークン数によって課金が発生してしまうのでご注意ください。

## Gemini

Googleが開発した生成AIモデルになります。
テキストはもちろん、画像や動画、音声などの形式のデータも処理できます。
またGoogleドライブとも連携できます。

また費用は上位モデルを使おうとすると月額費用がかかりますが無料枠でも十分使うことができます。
今回は無料枠を想定しています。

## NotebookLM

Googleが開発したAIノートブックになります。
Geminiはインターネット上の情報を活用して幅広い質問に対応しますが
NotebookLMはユーザが提供した資料を元にAIが解析し、要約・質疑応答を行うものになります。

Gemini同様、有料版もありますが無料でも使うことができ、今回は無料枠を想定しています。
有料版になると、読み込むソースの数が増えたり質問できる制限が大きくなったりします。

# やってみる
## Google AI Studio でAPIキーを発行

- Googleアカウントにログイン

自身のGoogleアカウントにログインしてください

- Google AI Studio にアクセス

下記のGoogle AI Studioにアクセスします。
https://aistudio.google.com/


- APIキーを発行

「Get API key」 をクリック

![Google AI Studio1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/5fb7733a-da53-410d-a0be-cfcb0c97951f.png)


「APIキーを作成」 をクリック

![Google AI Studio2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/0302ed59-3661-46ed-9e2e-d3804e982ad3.png)


以下のようにプロジェクトが出た場合は選択してください

![Google AI Studio3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/7450dec0-ebe5-4a22-a0ce-3e26106dc3fc.png)


「既存のプロジェクトでAPIキーを作成」で作成してください

![Google AI Studio4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/71f9121e-844b-42e3-8df0-b147eea3d15a.png)


APIキーが発行されるので保存しておいてください ※1

![Google AI Studio5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/2a85c5af-6f76-41f1-aeea-5885cf25a500.png)


## スプレッドシートでGASを設定

- スプレッドシートを作成

自身のGoogleアカウントでスプレッドシートを作ってください

- GASへ移動

拡張機能 > AppsScript からGASの編集画面に移動してください

![Google AI Studio6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/52c4b2ab-9c8b-4e4a-be9d-43425b410ffc.png)


- コードを編集

以下を貼り付けてください
`GEMINI_API = 'XXX';` の部分の XXX には※1で発行されたAPIを貼り付けてください。

```
function gemini(prompt) {
  // APIキーを設定
  const GEMINI_API = 'XXX';

  // リクエストURLを設定
  const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=${GEMINI_API}`
        , payload = {
            'contents': [
              {
                'parts': [{
                  'text':prompt
                }]
              }
            ]
          }
        , options = {
            'method': 'post',
            'contentType': 'application/json',
            'payload': JSON.stringify(payload)
          };
  const res = UrlFetchApp.fetch(url, options)
        , resJson = JSON.parse(res.getContentText());
  result = resJson['candidates'][0]['content']['parts'][0]['text']
  return result
}
```

こんな感じでになります。
![Google AI Studio7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/544cbaa1-06f9-4282-8a30-a8772c826a65.png)


- コードを保存する

以下のフロッピーマークをクリックしてコードを保存してください
![Google AI Studio8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/c6ccd79b-ffcd-461a-9f7a-18be66786be7.png)



## GASでスプレッドシートを使用

- スプレッドシートに戻ってください

- プロンプトを使ってみよう

`=gemini("[聞きたいことをここに書く]")` の形で
例えば =gemini("2の10乗は？") と打つと以下のようになります。

![Google AI Studioi9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/fa8e68ed-b2e1-48ce-b914-d0605677dafe.png)


直接関数の中に書かなくても、以下のように
質問を別のセルに書いておいて、その質問を参照することで答えることができます。

![Google AI Studioi10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/c5f3bb88-09d2-42a2-97d8-04877d563fa4.png)


上記を応用して、こんな事もできます。
質問したい要素をC列に書いておいて、それをD列で回答させることも可能です。
![Google AI Studioi11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/36e980f9-5f9e-4983-823f-e312432f1ff1.png)



## そのスプレッドシートをnotebooklmで使用する

- ↑で使ったスプレッドシートをPDFにする

ファイル > ダウンロード > PDF でエクスポートをしてください
それをローカルにダウンロードお願いします

![Google AI Studioi13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/d04dc998-27d3-45d7-a8b1-d8cc3dca33f0.png)


![Google AI Studioi14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/2dec6d84-d7ce-4ded-b533-9f94a39f3372.png)


- NotebookLMにアクセスをする

先ほど同様にGoogleアカウントでアクセスをしてください
https://notebooklm.google.com/

- NotebookLMを新規作成する

新規作成を行います。

![Google AI Studioi12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/8d358a38-a291-4b1c-9eb2-5af341784148.png)


- NotebookLMにソースをアップロードする

ドラッグアンドドロップでアップロードできます

![Google AI Studioi15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/4e8dd2c3-abb6-480c-a20b-ab23711993b6.png)


アップロードすると、ソースのところにファイル名が追加されるのと
タイトルが自動で設定されます。

![Google AI Studioi16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/8adcf0eb-c4e9-4e3e-a1d1-85c96ed56612.png)


- 使ってみよう！

アップロードしたスプレッドシートの情報を元に質問をしてみました。
すぐ回答が返ってき、またどこを見て判断したか記載してくれます。

![Google AI Studioi17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/c898453d-84f3-4f2c-88ae-de7daa581bc1.png)


ここでアップロードしたデータに入っていない質問をしましょう。
江戸時代末期の 「鳥羽・伏見の戦いは何年ですか？」 と聞いてみました。
するとソースに情報が入っていないことが記載されました。

![Google AI Studioi18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/ff5ad977-a046-4816-8d33-53c1d9f648b8.png)


データソースを外すこともできます。
データソースのチェックを外すことで認識させないことも可能です。

![Google AI Studioi19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/bb039464-53e9-4525-b24c-1afeb037f9c9.png)