0
0

久々にopenaiパッケージを用いたコードをいじったら「but this is no longer supported in openai>=1.0.0」が発生したので備忘録

Posted at

Pythonのopenaiパッケージの話です。

バージョンは「openai==1.47.0」で指定していた時の話です。

発生したエラー

You tried to access openai.Embedding, but this is no longer supported in openai>=1.0.0 - see the README at https://github.com/openai/openai-python for the API.

You can run `openai migrate` to automatically upgrade your codebase to use the 1.0.0 interface. 
 
Alternatively, you can pin your installation to the old version, e.g. `pip install openai==0.28`

A detailed migration guide is available here: https://github.com/openai/openai-python/discussions/742 

つまりは「あなたはopenai.Embeddingを呼び出そうとしましたが、openaiの1.0.0以降ではそれはもうサポートしていません。バージョン1.0.0移行のインターフェース(=規格)に合わせるか、もしくは旧版を指定してopenaiパッケージを利用してください」というエラーです。

解決策は二つあります。

  1. openai migrateを行う
  2. pip install openai==0.28を実行する

①番の方法は現状のopenAIのバージョンを維持できたり、今後OpenAIのバージョンを新しいもので更新していけるメリットがあります。

一方で、①番では新たにOpenAIの仕様(openaiパッケージの使い方)に現状のコードを合わせていく必要があるのでそのデグレが怖かったり、めんどくさいといった事情がある場合は②番の方法を用いることになるかと思います。

今回は①番を行なったのでその備忘録を記します。

やり方はシンプルです。

エラーに記載のある通り、openai migrateを実行しました。

すると現状のコードで「どこがopenaiパッケージの規格と一致していないか」が一覧で以下のように出力されました。

(一部抜粋)

    -            response = openai.ChatCompletion.create(
    -                model="gpt-3.5-turbo-0613",
    -                messages=[
    -                    {"role": "system", "content": system_prompt},
    -                    {"role": "user", "content": question},
    -                ],
    -                functions=functions,
    -                function_call="auto",
    -            )
    
    +            response = client.chat.completions.create(model="gpt-3.5-turbo-0613",
    +            messages=[
    +                {"role": "system", "content": system_prompt},
    +                {"role": "user", "content": question},
    +            ],
    +            functions=functions,
    +            function_call="auto")

上記の例で行くと旧版ではopenai.ChatCompletion.createとしていればよかったところを移行するとclient.chat.completions.createとしてください、と教えてくれているので該当する箇所をそのように修正します。

早い話が「-」が出ているところを消して、「+」が出ているもので書き換えたということです。

自分はこれで新しい規格に対応させたコードを動かせました。

久々にいじったコードで「流石にopenaiパッケージの仕様も変わっていそうだなぁ、めんどくさいな」と感じていましたが、どこを変更するべきか、どのように変更するべきかを教えてくれたので思ったよりもスムーズに移行できました。

openai migrate、便利です。

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