【要注意】Azure OpenAIのopenaiパッケージのバージョンが上がったことによりPythonの書き方が大きく変わりました
こちらの記事でもOpenAIのパッケージが変わったことに驚いたことを書いているのですが、
友人もコード書き直しだ〜と嘆いていたので、皆んな困ってると思い記事を書いています。
OpenAI Pythonの1系が出まして、普通にinstallすると以前の書き方と変わります。
公式はこちらがわかりやすいです。
コードを書き直す必要がでる割と破壊的変更なので、パッケージをアップデートして、動かなくなったという方がいたら以下のバージョンに戻すことで以前と同じように動くと思います。
pip install openai==0.28.1
変更前、変更後で以下のように書き方が変わっています。
- 変更前
import os
import openai
openai.api_key = os.getenv("AZURE_OPENAI_KEY")
openai.api_base = os.getenv("AZURE_OPENAI_ENDPOINT") # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
openai.api_type = 'azure'
openai.api_version = '2023-05-15' # this might change in the future
#モデルをデプロイしたときのカスタム名
deployment_name='REPLACE_WITH_YOUR_DEPLOYMENT_NAME'
# 回答を生成するために、Completion API呼び出しを実行
print('Sending a test completion job')
start_phrase = 'Write a tagline for an ice cream shop. '
response = openai.Completion.create(engine=deployment_name, prompt=start_phrase, max_tokens=10)
text = response['choices'][0]['text'].replace('\n', '').replace(' .', '.').strip()
print(start_phrase+text)
- 変更後
import os
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_KEY"),
api_version="2023-10-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
#モデルをデプロイしたときのカスタム名
deployment_name='REPLACE_WITH_YOUR_DEPLOYMENT_NAME'
# 回答を生成するために、Completion API呼び出しを実行
print('Sending a test completion job')
start_phrase = 'Write a tagline for an ice cream shop. '
response = client.completions.create(model=deployment_name, prompt=start_phrase, max_tokens=10)
print(response.choices[0].text)
変更前と変更後で以下の点が主に変わりました。
-
ライブラリの使用方法の変更:
- 変更前:
openai
モジュールを直接インポートし、その関数と属性を使用しています。 - 変更後:
openai
パッケージからAzureOpenAI
クラスをインポートします。
- 変更前:
-
APIクライアントの設定:
- 変更前:グローバルな設定(
api_key
,api_base
など)を使用していました。 - 変更後:
AzureOpenAI
クライアントインスタンスを作成し、そのインスタンスにAPIキー、APIバージョン、エンドポイントを設定します。
- 変更前:グローバルな設定(
-
API呼び出しの方法:
- 変更前:
openai.Completion.create
を使用してAPI呼び出しを行っていました。 - 変更後:
AzureOpenAI
クライアントのcompletions.create
メソッドを使用しています。
- 変更前:
-
レスポンスの処理:
- 変更前:レスポンスからテキストを取得し、改行や余計なスペースを削除していました。
- 変更後:レスポンスの処理が簡素化され、直接テキストを出力しています。
これらの変更によって、元のコードのままではプログラムが止まってしまいますが、コードのモジュール性、柔軟性、簡潔さを向上はしたと思います。
特にAzureサービスとの統合を強化し、APIクライアントの設定と管理をより効率的に行うことができるようになっています。
大変ですが、この分野は本当にどんどん変更されると思いますので、キャッチアップして参りましょう。
もちろん、株式会社piponでも技術でお困りのことがある方はオンライン相談が可能です。
こちらから会社概要資料をDLできます!
お問い合わせ内容に「オンライン相談希望」とご記載ください。
株式会社piponでは定期的に技術勉強会を開催しています。
ChatGPT・AI・データサイエンスについてご興味がある方は是非、ご参加ください。
株式会社piponではChatGPT・AI・データサイエンスについて業界ごとの事例を紹介しています。ご興味ある方はこちらのオウンドメディアをご覧ください。
株式会社piponのテックブログです。 ChatGPTやAzureをメインに情報発信していきます! お問い合わせはフォームへお願いします。 会社HP pipon.co.jp/ フォーム share.hsforms.com/19XNce4U5TZuPebGH_BB9Igegfgt
Discussion