LoginSignup
0
0

Lambda で OpenAI APIを実行する

Last updated at Posted at 2024-02-11

Lambdaを使用しChatGPTで知られるOpenAIを実行してみました

Lambdaの作成

1. Lambda > 関数にアクセス。関数の作成ボタンから作成を始めます

スクリーンショット 2024-01-12 11.43.42.png

2. OpenAI API キーを環境変数に登録

環境変数をして使えるようにするための設定です

設定>環境変数 の編集、環境変数の追加から追加します

CHAT_GPT_KEYという名前で登録しました

3.レイヤーを作成

OpenAIのモジュールを読ませるためにモジュールをzip化しレイヤーに登録するのが一番良さそうです

Pythonをインストールしている環境で以下のコマンドで実行し、zipを作成します

$ python3 -m pip install -t ./python openai
$ zip -r openai.zip ./python #ここはお使いのPCの右メニューからzipでも可

Lambdaの画面で、その他のリリース > レイヤー レイヤーの作成からレイヤー作成します

レイヤー登録画面にて

.zipファイルをアップロードを選択し、作成したzipをアップロード
互換性のあるランタイムをLambdaで使用する予定の言語のバージョンを選択ください
今回は、Python3.12にしました、ついでに複数設定できます

またアーキテクチャもLambdaで使用する予定を設定ください(両方にチェックでも問題ありません)

スクリーンショット 2024-01-12 19.08.17.png

保存しレイヤーを登録します

4.レイヤーを追加

作成中のLambda関数の画面に戻り作成したレイヤーを設定します
コードタブないのレイヤー 編集ボタンから設定します

カスタムレイヤーを選択
カスタムレイヤーを、先ほど作成したレイヤー名を選択
バージョンは、同様な名前で作った場合勝手増えるため、一番大きい数字で問題ないかと思います

スクリーンショット 2024-01-12 19.35.24.png

5.Lambda実行

OpenAIを実行するためのサンプルコードです

実行し問題なければOpenAIの設定はOKです。

import os
from openai import OpenAI


def lambda_handler(event, context):
    
    # OpenAI実行
    client = OpenAI(
        api_key=os.environ['CHAT_GPT_KEY'],
    )


    messages = [
        {"role": "system", "content": "あなたは優秀なAIアシスタントです。"},
        {"role": "user", "content": "一人旅したい、長崎県でおすすめの場所1つ教えて"}
    ]

    #  OpenAI 実行コード↓
    completion = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages,
        temperature=0.7
    )
    
    response = completion.choices[0].message.content

    return response

補足)
Lambda実行時以下のエラーでました

"Unable to import module 'lambda_function': No module named 'pydantic_core'

同様のエラーが出た場合,pydantic-coreのサイトからダウンロードし、加えzipを作りなし3.4.の手順で同様の対応で、登録し直すことで、解決しました

pydantic-core
https://pypi.org/project/pydantic-core/#files

0
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
0
0