PythonのopenaiライブラリからAzure OpenAI Serviceのエンドポイントを呼び出すサンプルを実行してみた

ご存知でしょうか。PythonからAzure OpenAI Serviceも意外と簡単に利用できるんです。
2023.05.16

こんちには。

データアナリティクス事業本部 インテグレーション部 機械学習チームの中村です。

今回は、Pythonのopenaiライブラリを使ってAzure OpenAIのgpt-3.5を使う方法を紹介したいと思います。

公式サンプル

以下のopenaiライブラリの公式サンプルに従ってやっていきます。

Azure上の環境準備

以下を参考に構築します。

必要なのは以下の2点になります。

  • Azure OpenAI Serviceのリソース作成
    • キーおよびエンドポイントの情報が必要になります
  • gpt-35-turbo (version 0301)のデプロイ
    • モデルデプロイ名が必要になります

クライアント実行環境

Google Colaboratoryを使います。ハードウェアアクセラレータは無し、ラインタイム仕様も標準です。

ローカル環境で実行されても良いと思います。

Pythonのバージョンは以下です。

!python --version
Python 3.10.11

また、openaiは以下のようにインストールします。

!pip install openai

インストールされたライブラリのバージョンは以下です。

!pip freeze | grep -e "openai"
openai==0.27.6

環境変数の設定

お好きな方法でよいのですが、環境変数をpython-dotenvを使って読み込みます。

!pip install python-dotenv

以下を.envファイルに書き込みます。

!echo 'OPENAI_API_KEY="<トークン>"'             >.env
!echo 'OPENAI_API_BASE="<エンドポイント>"'      >>.env
!echo 'OPENAI_API_TYPE="azure"'                 >>.env
!echo 'OPENAI_API_VERSION="2023-03-15-preview"' >>.env

トークンはAzure OpenAI Serviceのキー1、エンドポイントはAzure OpenAI Serviceのエンドポイントを入力します。

その後、環境変数をロードします。

from dotenv import load_dotenv
load_dotenv()

実行

以下のコードでgpt-3.5を稼働させることができます。

response = openai.ChatCompletion.create(
    deployment_id="<デプロイメントID>",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Knock knock."},
        {"role": "assistant", "content": "Who's there?"},
        {"role": "user", "content": "Orange."},
    ],
)

print(response.choices[0].message)

ここで、デプロイメントIDは、モデルがgpt-35-turbo (version 0301)となっているモデル デプロイ名を入力します。

以下のような結果が得られました。

{
  "content": "Orange who?",
  "role": "assistant"
}

まとめ

いかがでしたでしょうか。

ほぼOpenAI側のAPIと同じ使用感でopenaiモジュールから使用可能でした。

OpenAI側との違いについては以下の記事にもまとめられていますので、参考にされてください。

本記事が、Azure OpenAI Serviceをお使いになられる方の参考になれば幸いです。