AWS Lambda から Gemini APIを利用した呼出しハンズオン

はじめに

仕事の都合で最近は、Geminiばっかりの毎日です。
気になることもあるので、まずはAWS環境からGeminiを呼びだそうと思ったのでハンズオンをしてみます。

Geminiとは?

  • 2023年12月に発表されたGoogleの生成AIモデル。
  • 特徴として高度なマルチモーダル処理能力を持っており、テキスト、画像、音声、動画、コードなど、様々なデータ形式を処理することが可能です。

2種類のAPIについて

  • Geminiに関しては直接GeminiモデルにアクセスするAPIと、Vertex AIプラットフォーム経由でGemini機能にアクセスするためのAPIの2種類が存在します。
  • 今回のハンズオンではGemini APIを利用します。
API名 内容 認証
Gemini API 直接GeminiモデルにアクセスするAPI GoogleアカウントとAPIキーを使用して認証
Vertex AI API Vertex AIプラットフォーム経由でGemini機能にアクセスするためのAPI Google Cloudサービスアカウントを使用して認証

参照ドキュメント:Gemini API
参照ドキュメント:Vertex AI API

ハンズオン

1.Google Cloudの準備

1.1.アカウント作成(既にある場合は、既存アカウントを利用でも可)

  • 以下リンクを押下して、アカウントを作成します。

Goolgeアカウントを作成

1.2.Google Cloudプロジェクト作成

  • 以下リンクを押下して、遷移先のドキュメントの「 [リソースの管理]に移動」という青いボタンを押下して画面遷移します。

プロジェクトを作成する

  • 「リソースの管理」ページで、画面上部「プロジェクトを作成」押下します。
    file

  • 以下設定を入力して「作成」を押下します。

プロジェクト名 場所
${プロジェクト名} 組織なし

1.3.API有効可

  • 画面上部の検索バーより「有効なAPIとサービス」と入力して押下します。
    file

  • 画面上部の「+ APIとサービスを有効にする」を押下します。
    file

  • APIライブラリの検索バーより「Gemini API」と入力して押下します。
    file

  • Gemini API側を選択します。
    file

  • 有効にするを押下します。
    file

1.4.認証情報の取得

  • 左ペイン「認証情報」押下(または画面上部の検索バーより「認証情報」と入力して押下)して以下ページへ遷移し、「認証情報を作成」押下します。
    file

  • APIキー を選択します。
    file

  • キーの値 を保存します(後ほど 3.3.2.環境変数で利用します)。
    file
    ※APIキーが流出すると誰でもAPIの利用が可能となり、思わぬ事態にもつながりかねないため、取り扱いは十分に注意してください。

2.Lambdaレイヤーの準備

2.1.ライブラリのインストール

  • マネジメントコンソール右上 [>.] アイコンより、Cloudshellの起動します。
  • 以下コマンドを実行します。
# ディレクトリの作成
mkdir python

# 作成したディレクトリにライブラリをインストール
pip install  google-genai -t python

# ライブラリをZIP圧縮
zip -r layer.zip python
  • コマンド実行後、「アクション > ファイルのダウンロード」をクリックして「layer.zip」をローカルにダウンロードします。

2.2.Lambdaレイヤーの作成

  • 「マネジメントコンソール」画面から「Lambda」画面へ遷移します。
  • 左ペイン「レイヤー」を選択し「レイヤーの作成」を押下します。
  • 以下設定を入力して「作成」を押下します。
名前 .zipファイルをアップロード 互換性のあるアーキテクチャ 互換性のあるランタイム
${Lambdaレイヤー名} ダウンロードした「layer.zip」 x86_64 Python 3.9

3.Lambdaの構築

3.1.Lambda構築

  • 「マネジメントコンソール」画面から「Lambda」画面へ遷移します。
  • 「関数を作成」押下します。
  • 設定画面にて以下設定を入力して「関数の作成」押下します。
関数名 ランタイム アーキテクチャ
${Lambda関数名} Python 3.9 x86_64

3.2.コード

  • 以下コードソースを上書きして「Deploy」を押下します。
キー 選定理由
model gemini-2.0-flash 最新モデルのため選定
contents AIの仕事を50文字で教えて 簡単な質問及び文字数制限で、予想外のトークンを抑える意図
import os
from google import genai

def lambda_handler(event, context):
    api_key = os.environ.get("API_KEY")
    client = genai.Client(api_key=api_key)
    response = client.models.generate_content(
        model="gemini-2.0-flash", 
        contents="AIの仕事を50文字で教えて"
    )
    return {
        "statusCode": 200, 
        "body": response.text
    }

3.3.その他Lambdaの設定変更

3.3.1.レイヤー
  • 「レイヤーの追加」を押下して、以下設定を行う。
レイヤーソース レイヤー選択 バージョン
カスタムレイヤー ${Lambdaレイヤー名} 1
3.3.2.環境変数
  • 「設定」の左ペイン「環境変数」を押下して、以下設定を行う。
キー
API_KEY ${1.4.認証情報の取得した値}

※簡易検証のためAPIキーを環境変数に設定しています。ただし本番利用の際は、AWS Secrets Managerなどを利用してセキュアに運用ください。

3.3.3.一般設定
  • 「設定」の左ペイン「一般設定」を押下して、以下設定を行う。
タイムアウト
5分

※Geminiへの質問量により、各自適切な値に修正する。

4.実行結果

4.1.Lambdaでの画面

file

4.2.Googleでの画面

file

おわりに

得られた知見

  • Gemini API を利用するための一連のステップの理解。
  • Geminiを呼び出すAPIは2種類が存在すること。

今後の課題

  • LambdaでLangChainを利用して、Geminiを呼び出そうとしましたが「No module named ‘google.protobuf’」エラーでハマってしまたため解決をすること。
  • Lambdaレイヤーからだけでなく、コンテナイメージを利用したLambdaのデプロイが出来るようになること。
Last modified: 2025-02-23

Author