エンジニア視点でGoogle Geminiを使ってみた

こんにちは、トヨタコネクティッド株式会社 先行企画部 新技術開発GのエンジニアのShingo.Nです。

トヨタコネクティッド株式会社 先行企画部では「全体の20%を未来を先取りする集団として 責任をもって 味見(トライ)する」をパーパスとしています。

先行企画部の中でも、私の所属する新技術開発Gでは、「技術」という領域に特化して、日々試験研究をすすめています。

私が担当しているのは「生成AIをどのように業務に活用するか」がメインとなっています。「生成AIを活用する」という広い観点で、生成AIそのもの調査だけではなく、生成AIを活用した事業の検討といった活動にも取り組んでいます。

今回は生成AIとして話題になっているGoogle Geminiについての記事です。
主にエンジニアとしての観点から試してみたという内容です。

今回の記事の構成は以下の通りです。サービス自体は細かく説明してる感じではありません。


チャットボットとしてのGemini

ChatGPTの対抗馬として、どれくらい実力があるのか気になります。
以下のページにアクセスするとChromeなどのWebブラウザからGeminiとチャットができます。

https://gemini.google.com/

Googleアカウントにログインしていないと利用できないようです。
トップページが開きます。

TOPページ

それでは早速プログラムを書いてもらいましょう。

ちゃんとプログラムが出力されました。

それではソースコードをローカルで実行してみましょう。

import platform

# OSの名前
os_name = platform.system()

# OSのバージョン
os_version = platform.release()

# アーキテクチャ
os_architecture = platform.machine()

# カーネルバージョン
os_kernel_version = platform.version()

# ノード名
os_node_name = platform.node()

# プラットフォーム
os_platform = platform.platform()

# 詳細な情報
os_details = platform.uname()

# 情報の出力
print(f"OS名: {os_name}")
print(f"OSバージョン: {os_version}")
print(f"アーキテクチャ: {os_architecture}")
print(f"カーネルバージョン: {os_kernel_version}")
print(f"ノード名: {os_node_name}")
print(f"プラットフォーム: {os_platform}")
print(f"詳細: {os_details}")

ちゃんと標準出力されました。

それでは次にGemini Advancedを使ってみます。

Gemini Advanced

Gemini AdvancedはGoogle Oneのサブスクリプション登録している場合に、
利用できるようになるGeminiの上位サービスです。Google Oneなどの特定プランに加入すると使えるようになります。

‎Gemini Advanced - Google の最も高性能な AI モデル、1.0 Ultra を搭載
Google One AI Premium

画面はこんな感じです。Gemini Advancedと表示されているのが違いといえば違いですね。

Desktop Chrome
Android Chrome

それでは、通常のGeminiとはどこが違うのでしょうか?
先程と同じようにプログラムを作成してもらいましょう。

以下のように、プログラムが生成されるまでは同じです。

Gemini Advancedではその場でプログラムが実行できます!
意外とコピペして確認して失敗してというのは、精神上よろしくいなので、良い機能。


これで、GCPのGeminiとシームレスに繋げられると楽なんですけどね。

試しにstreamlitアプリを出力してみました。

さすがに動きませんでした。(Geminiでstreamlit runできると良いなぁ。)

AIにやってもらいたいのは、こういう作業なんですよね。

ローカルでも実行してみました。依存関係が不足している部分を除けばstreamlit appとして動きます。ある程度の土台はGeminiとのチャットでも作れそうですね。

ただしstreamlitのChat elementsを使ってはいないようでした。

stremlitアプリとして実行

Pythonコード実行については以下のページにも記載がありました。

https://gemini.google.com/updates

Google Cloud PlatformでのGemini

プログラムやコマンドラインから、GeminiのAPIを利用できます。
ユースケースとしてチャットボットアプリの構築などの用途などが考えられます。基本的な利用開始の流れは、以下のサイトをご覧ください。

Python SDKもあるのですが、今回は諸々の事情でREST APIを直接コールしています。

APIキーは以下のサイトから取得できます。
https://aistudio.google.com/

APIキー

REST APIを使った簡単なプログラムです。(対話的ではない。)
環境変数を使ってますが、APIキーの格納先は.env→load_envから呼び出しでもなんでもよいです。

import requests
import os

APIKEY = os.environ.get("GCP_API_KEY")

# URLとAPIキーを設定
url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={APIKEY}"
print(url)

# ヘッダーとリクエストボディを設定
headers = {
    "Content-Type": "application/json",
}
body = {
    "contents": [
        {
            "parts": [
                {
                    "text": "You are an assistant tasked with summarizing text for retrieval. \
    These summaries will be embedded and used to retrieve the raw text or table elements. \
    Give a concise summary of the text that is well optimized for retrieval. and speek japanese: 生成AIとアプリケーションの開発に関する情報を提供するためのAPIを提供しています。",
                },
            ],
        },
    ],
}

# リクエストを送信し、レスポンスを取得
response = requests.post(url, headers=headers, json=body)

# レスポンスコードを確認
if response.status_code == 200:
    # 成功
    data = response.json()  # Assuming the response is already JSON
    text = data["candidates"][0]["content"]["parts"][0]["text"]
    print(text)
else:
    # エラー
    print(f"エラーが発生しました: {response.status_code}")

実行結果です。対話できているみたい。

レスポンス

エンジニアの観点から、ざっくりと「Gemini」について使ってみました。

エンジニアが使うような用途だけではなく、Googleの各種サービスやプロダクトでも使えるようになるようです。今後の展開が楽しみですね。

来月は、Generative AI Summit Tokyo '24もあるので、最新の事例を吸収しようと思っています。

ではまた。