BizRobo! からサクッと Gemini （Google の ChatGPT❓）を操作する方法

## はじめに

生成AIが依然として盛り上がってますが、革新のスピードは凄まじいですね。代表格として ChatGPT がデファクト的な位置にいますが、それを超える性能ともいわれる [Claude3](https://www.anthropic.com/news/claude-3-family) が出てきたり、Google の生成AIもいつの間にか Bard から Gemini に名前を変えて、なんかすごい感を出しています。

さらに、どれが一番いいのか？わからない人はとりあえず「[Perplexity AI](https://ja.wikipedia.org/wiki/Perplexity.ai)」使っとけば？みたいな製品もあり 楽しむ余裕が持てません。。 :dizzy_face:

それはさておき、無料で手軽にBizRobo!から生成AI試してみたいなぁ。と思い探していたところ、`Gemini 1.0 Pro` のAPIは無料枠があることが分かったので、ちょっとロボット経由で触ってみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/9caf65fc-98d9-cb77-0251-db33e7689078.png)

https://ai.google.dev/pricing?hl=ja

## Gemini 1.0 Pro の始め方

上記の料金表示ページから、右側の `ドキュメント` タブを選択すると、使い方に関する公式ドキュメントが見られます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/31492dda-097b-0234-8779-239fa9c2e3df.png)

詳細は公式ドキュメントに譲りますが、大きな流れとしては

1. [REST API のクイックスタート](https://ai.google.dev/tutorials/rest_quickstart) ページから `Get an API key` ボタンをクリックして `Google AI Studio` をオープン
1. 初回表示される `Terms of Service` ダイアログを `Continue` した後に表示されるページからAPIキーを発行（クリップボードにコピー）

その後、改めてページ右側の `Get API key` メニューをクリックしてみたら、以下の様な画面になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/87262f14-8856-2643-2f29-54f1f8502acf.png)

Google のアカウントを既に保持しており、そのアカウントで Google にログインしている必要はあると思いますが、その他クレジットカードの設定だったり、特定のサービスに登録している必要などは無いと思います。（自分も覚えがない）

以上で `Gemini` を使い始める準備は完了です。

## BizRobo! から Gemini を呼び出す方法

BizRobo! のコネクターを作成すれば様々なことができますが、今回は単純にBER[^1]の `Call REST Web Service` アクションを使って直接呼び出してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/e09354d1-a55d-2955-f560-053940cb66cf.png)

具体的な REST API 設定内容は以下のとおり。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/08f06802-6c11-0818-1647-c0958b75219f.png)

リクエストボディに含まれるプロンプトは `Prompt gallery`[^2] で提供されている [感情分析](https://aistudio.google.com/app/prompts/sentiment-analysis-chat?hl=ja) のサンプル[^3]を基に、以下のように編集しました。

```
>>{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "Analyze the sentiment of the following Tweets and classify them as POSITIVE, NEGATIVE, or NEUTRAL. And write the reason of the result in Japanses. \"とても使いやすい。\""
        }
      ]
    },
    {
      "role": "model",
      "parts": [
        {
          "text": "POSITIVE\n使いやすいという表現がポジティブな感情を表しているため。"
        }
      ]
    },
    {
      "role": "user",
      "parts": [
        {
          "text": "<< + replaceText(gemini.prompt,>>"<<,>>\"<<) + >>"
        }
      ]
    }
  ],
  "generationConfig": {
    "temperature": 0.9,
    "topK": 1,
    "topP": 1,
    "maxOutputTokens": 2048,
    "stopSequences": []
  }
}<<
```
構成としては、`contents` 部分で実際のプロンプトを例示も含めて3回分のやり取りをセットしています。
- 1つ目はやり取りの全体像、前提の設定
- 2つ目はGemini側の想定回答（回答例をもって形式を指定）
- そして3つ目が実際の質問

です。

`generationConfig` 部分の設定も重要ですが、一旦はデフォルト値のまま進めます。

## BizRobo! の実行と結果

以下が入力値に対するネガ・ポジの回答とその理由を聞いた結果です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/17d5b9d5-e5d5-cc26-ee82-f6b71bd35e91.png)


> **入力値**
> `悪くはないが、最初の学習に'"時間がかかかるため、何らかの補助資料が必要。やっぱそこそこに良いこともない。とも言えない。`
> 
> **回答**
> `NEUTRAL`
> 
> **理由**
>`「悪くはない」や「まあまあ良い」という表現は、必ずしもポジティブでもネガティブでもない中立的な感情を表しているため。`

何の役に立つのかはわかりませんが、面白いですね。

サンプルで作成したロボットは GitHubからダウンロードできます。

https://github.com/kiban-unyo/CallGeminiAPI

## まとめ

タイトルが微妙な感じですが、PlayStation を見て「Sonyのファミコン」と言っていた親にリスペクトを込めて。:nerd:

[^1]:Basic Engine Robot（青いロボット）
[^2]:`Google AI Studio` の左ペインメニューからアクセス可能です。
https://ai.google.dev/examples?keywords=prompt&hl=ja
[^3]:Modelを `Gemini 1.0 Pro` に変更すると、`Get code` のボタンがアクティブになるので、ここからサンプルのコードを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/7c78c359-29fa-a80c-9060-7b4102c816c0.png)