スポンサーリンク

【ChatGPT】PythonからAPI実行でエラー unable to get local issuer certificate

記事内に広告が含まれています。

OpenAIのAPIを利用して開発をしている方が増えているのではないかと思います。

APIを使い始めた頃に遭遇したエラーについて記載しておきます。

スポンサーリンク

エラー内容と解決策

VPN環境から以下のコード(Python 3.9)を実行しようとするとエラーが発生しました。

import openai

# APIキーの設定
openai.api_key = os.environ["OPENAI_API_KEY"]

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user",
         "content": "〇〇〇〇〇〇〇〇〇〇〇〇〇〇〇"
         },
    ],
)

print(response.choices[0]["message"]["content"].strip())

エラーメッセージはこちら。

MaxRetryError: HTTPSConnectionPool(host=‘api.openai.com’, port=443): 
Max retries exceeded with url: /v1/engines/gpt-3.5-turbo/completions 
(Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] 
certificate verify failed: unable to get local issuer certificate (_ssl.c:xxxx)’)))

ローカル発行者証明書を取得できないと言われています。WEB上では、VPN接続を切ったらエラーが出なくなったという方もいましたが、VPNを切っても同じエラーが出ました。

結局、以下のページで、hardkothari1988さんが2023/3/9に投稿されている内容を参考にしたところ解消できました。大変助かりました。ありがとうございます。

SSL: certificate_verify_failed
I tried to open www.api.openai.com by using chrome, but I got " This site can’t be reached". What can I do next?

以下の手順でプライベート認証局の証明書をダウンロードします。上記ページからの引用です。

ダウンロードしたファイル内の証明書の内容を、\Python39\Lib\site-packages\certifi\cacert.pemの最下部にコピーするとエラーが解消しました。

スポンサーリンク

Certifi

certifiパッケージはPythonプログラムがHTTPS通信を行う際に、サーバーのSSL/TLS証明書を検証するために信頼できる認証局(CA)のリストを提供します。このリストは、信頼されたルート証明書のコレクションから取得されており、インターネット上で安全な通信を確保するための基盤となります。

certifiパッケージに含まれるcacert.pemファイルは、信頼できる認証局(CA)によって発行されたルート証明書のリストを含むPEM(Privacy Enhanced Mail)形式のファイルです。

このファイルには、インターネット上で安全な通信を行うためにクライアントがサーバーのSSL/TLS証明書を検証する際に必要な、信頼できる認証局の公開鍵が含まれています。

PythonのHTTPクライアントライブラリ(例えばrequests)は、このファイルを参照して、HTTPS接続を確立する際のサーバー証明書の検証を行います。証明書検証プロセスでは、サーバーから提供された証明書がこのリストに含まれる認証局によって署名されていることを確認し、信頼できる接続を確立します。

今回のエラーは、cacert.pemファイルにプライベート認証局のルート証明書が確認できなかったため、エラーが出ていたということになります。

certifiはPythonでHTTPS通信を行う際に必要なセキュリティ基準を提供し、通信の信頼性と安全性を高めるために不可欠な役割を果たします。また、セキュリティ環境の変化に対応するため、certifiパッケージは定期的に更新され、最新の信頼できる認証局のリストが保持されます。

スポンサーリンク
スポンサーリンク
スポンサーリンク
ChatGPTGenerative AIPython
著者SNS
タイトルとURLをコピーしました