1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

はじめに

仕事の都合で最近は、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プロジェクト作成

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

プロジェクトを作成する

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

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

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

1.3.API有効可

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

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

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

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

  • 有効にするを押下します。
    image.png

1.4.認証情報の取得

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

  • APIキー を選択します。
    image.png

  • キーの値 を保存します(後ほど 3.3.2.環境変数で利用します)。
    image.png

※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での画面

image.png

4.2.Googleでの画面

image.png

おわりに

得られた知見

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

今後の課題

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?