AWS CloudShell から Gemini APIを利用してみた

2024.01.19

はじめに

AWS CloudShellから Gemini APIを利用してみました。

昨年の12月にGeminiのAPIが公開され、API経由でGemini Proが使えるようになりました。

現時点では、試用期間として無料利用できます。

Googleアカウントがあれば、ブラウザからPythonを実行できるサービスであるGoogle Colabが利用でき、基本無料でGemini APIを試すことができます。

AWSサービスを使い試したい場合、AWS Cloud9などのサービスもありますが、無料のAWS CloudShellがおすすめです。

AWS CloudShellは、ブラウザ上でシェルを実行できるサービスであり、AWSマネジメントコンソールから無料で利用できます。

今回は、AWS CloudShellからGeminiのAPIを利用手順について説明します。

Gemini API

Gemini APIを利用するには、事前にGemini APIキーを作成する必要があります

Google アカウントにログインした状態でGoogle AI Studioにアクセスします。

利用規約に同意後、「Get API key」から、「Create API key in new project」をクリックすると、APIキーを取得できます。

CloudShell

今回は、プログラミング言語はPythonを使用します。

現時点でのCloudShellのPythonとパッケージを管理するためのツールpipのバージョンをそれぞれ確認します

$ python --version
Python 3.9.16

$ pip --version
pip 21.3.1 from /usr/lib/python3.9/site-packages/pip (python 3.9)

ドキュメント通り、pipでgoogle-generativeaiパッケージをインストールします。

$ pip install -q -U google-generativeai
$ pip list
google-generativeai          0.3.2

インストール後、「東京について教えて」というプロンプトで、API経由でGemini Proを利用してみます。

APIキーの値は、先程作成した実際の値にしてください。

$ $ cat > gemini_example.py <<EOF
import google.generativeai as genai

# APIキーを設定
genai.configure(api_key='APIキーの値')

model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat()

# テキスト入力からレスポンスを生成
response = chat.send_message('東京について教えて')
 
# レスポンスを表示
print(response.text)
EOF

$ python gemini_example.py 
* **概要:**
    * 東京は日本の首都であり、世界で最も人口の多い都市圏のひとつです。
    * 東京都は日本の47都道府県のひとつで、東京23区と多磨地域、島嶼部で構成されています。
    * 東京23区は東京の主要部で、千代田区、中央区、港区、新宿区、渋谷区、豊島区、北区、荒川区、板橋区、練馬区、足立区、葛飾区、江戸川区、品川区、目黒区、世田谷区、杉並区、中野区、杉並区、立川市、武蔵野市、三鷹市、調布市、狛江市、府中市、国分寺市、国立市、清瀬市、東久留米市、西東京市、保谷市、東大和市、武蔵村山市、多摩市、稲城市、日野市、八王子市、町田市、相模原市、川崎市、横浜市などがあります。
    * 東京の総面積は2,194平方キロメートルです。
    * 東京の人口は約1,396万人です。
    * 東京の公用語は日本語です。
    * 東京の通貨は円です。
    * 東京のタイムゾーンはUTC+9です。


* **歴史:**
    * 東京の歴史は古く、縄文時代にまでさかのぼります。
    * 1590年、江戸幕府が成立し、江戸が日本の首都となりました。
    * 1868年、明治維新が起こり、東京が日本の首都になりました。
    * 1923年、関東大震災が発生し、東京は大きな被害を受けました。
    * 1945年、第二次世界大戦が終結し、東京は連合国軍によって占領されました。
    * 1952年、日本国との平和条約が発効し、東京は日本の首都に復帰しました。
    * 1964年、東京オリンピックが開催されました。
    * 1990年代、東京はバブル経済の崩壊の影響を受けました。
    * 2011年、東日本大震災が発生し、東京の一部地域が被害を受けました。
    * 2020年、東京オリンピック・パラリンピックが開催されました。


* **観光:**
    * 東京には、皇居、東京タワー、東京スカイツリー、浅草寺、渋谷、銀座など、数多くの観光スポットがあります。
    * 東京はまた、世界有数のアートとカルチャーの街でもあります。
    * 東京には、国立新美術館、東京都美術館、国立西洋美術館など、数多くの美術館があります。
    * 東京には、歌舞伎座、新国立劇場、東京芸術劇場など、数多くの劇場があります。
    * 東京はまた、世界有数のグルメの街でもあります。
    * 東京には、日本料理、中華料理、韓国料理、イタリア料理、フランス料理など、世界各国の料理を楽しむことができます。


* **交通:**
    * 東京には、羽田空港と成田空港、2つの国際空港があります。
    * 東京はまた、新幹線、在来線、地下鉄、バスなど、充実した鉄道網を持っています。
    * 東京はまた、タクシーも普及しています。


* **食文化:**
    * 東京は、日本料理の聖地です。
    * 東京には、寿司、天ぷら、そば、うどん、ラーメンなど、日本料理のあらゆるジャンルのお店があります。
    * 東京はまた、中華料理、韓国料理、イタリア料理、フランス料理など、世界各国の料理を楽しむことができます。


* **ナイトライフ:**
    * 東京は、世界有数のナイトライフの街でもあります。
    * 東京には、クラブ、バー、パブなど、数多くのナイトスポットがあります。
    * 東京はまた、カラオケやボーリングなどのアミューズメント施設も充実しています。

レスポンスが返ってきました。

続いて、チャット履歴を参照して回答してもらいます。

ChatGPTのようにチャット履歴を保存して、会話履歴を含めて再度APIを呼び出す必要はありません。

start_chatメソッドを使用してチャットが開始後、チャット履歴も保持されます。

$ cat > gemini_example.py <<EOF
import google.generativeai as genai

# APIキーを設定
genai.configure(api_key='APIキーの値')

model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat()

# テキスト入力からレスポンスを生成
response = chat.send_message('東京について教えて')
 
# レスポンスを表示
print(response.text)
response = chat.send_message('若者におすすめスポットを2つ教えて')
print("-----")
print(response.text)
EOF


$ python gemini_example.py 
* 東京は、人口約1,390万人、面積約2,190平方キロメートルで、日本最大の都市圏である。
* 東京は、日本の首都であり、政治、経済、文化の中心地である。
* 東京は、世界有数の観光都市であり、毎年多くの観光客が訪れる。
* 東京には、世界遺産に登録されている浅草寺や明治神宮などの歴史的建造物が数多くある。
* 東京には、東京スカイツリーや東京タワーなど、世界有数の高さの建造物が数多くある。
* 東京は、銀座や新宿などの繁華街が数多くあり、ショッピングやグルメを楽しむことができる。
* 東京は、大学や研究機関が数多くあり、教育や研究の中心地である。
* 東京は、国際空港である成田国際空港や羽田空港があり、世界各国とつながっている。
* 東京は、世界有数の経済都市であり、多くの企業の本社が集まっている。
* 東京は、世界有数のファッションの街であり、多くのファッションブランドが店舗を構えている。
* 東京は、世界有数の美食の街であり、多くのレストランやカフェがある。
-----
**1. 渋谷スクランブル交差点**

渋谷スクランブル交差点は、世界で最も混雑する交差点のひとつとして知られています。若者の街として知られる渋谷の中心部に位置し、常に多くの人で賑わっています。交差点の真ん中に立って、行き交う人々を眺めるのは、まさに東京ならではの体験です。

**2. 原宿竹下通り**

原宿竹下通りは、若者のファッションやカルチャーの発信地として知られるスポットです。通り沿いには、個性的なアパレルショップや雑貨店、カフェなどが軒を連ねています。また、原宿竹下通りは、クレープやタピオカドリンクなどのグルメスポットとしても人気があります。

この2つのスポットは、どちらも東京の若者のトレンドを肌で感じることができる場所です。ショッピングやグルメを楽しむだけでなく、東京の街の雰囲気を満喫することができま す。

**番外編:お台場**

お台場は、東京湾に浮かぶ人工島です。フジテレビ本社や、パレットタウン、チームラボボーダレス東京など、多くの観光スポットがあります。また、お台場からは、東京タワーやレインボーブリッジなどの東京の景色を一望することができます。

お台場は、若者だけでなく、家族連れやカップルにも人気のスポットです。一日中楽しめる場所なので

1つ目のチャット履歴を反映して、2つ目の質問に答えてくれていますね。

作成したgemini_example.pyは、APIキーが記載されていますので、不要であれば削除しておきましょう。

最後に

今回は、AWS CloudShellから Gemini APIを利用する手順について解説しました。

容易に利用できることが分かりますね。

ちなみに、Gemini Proは、1分あたり 60 回のリクエストの上限がありますので、使用する際は注意しましょう。

参考記事

gemi