見出し画像

OpenAIの障害情報を確認する

こんにちはmakokonです。
毎日CHATGPT使っていますか?
makokonも使用時間はそんなに長くはないのですが、毎日使っています。
毎日使っていると、「あれ、回答が返ってこない」ということがたまにあります。
もちろん、大体はインターネット接続のトラブルだとか、ブラウザの調子が悪いとか、リクエスト回数が多すぎるとかなんですけど、たまにはopenaiのサービスに障害があることがあります。
趣味で使っているなら、そのうち普及するだろうでもいいのですが、仕事で使うとなると、状況を確認し、必要なら代替サービスに切り替えたり、最悪サービスを停止し(そしてお客さんに謝る)なくてはいけません。
昨年のサービスの全面停止トラブルも記憶に新しいのですが、それからも短期的に限定されたサービス障害は発生しているようなので、今更ですが、状況を確認する方法を覚えてきましょう。



公式ページ OpenAI Status(英語)

openaiには、各種ステータスを提供するページがあります。それがこちら。


スクリーンショット2024/01/18取得

このように、全体の状況と各サービスの状況を示してくれます。"Operational"が操作可能な状態と言うことですね。
また、この画面の下の方には、Past Incidents として、過去の状況が書かれています。
最近だと、2024/1/17.2024/1/16にも、なんかあったようですね。

このページを見れば、全体の状況はわかるのですが、特定の地方だとか障害の範囲だとか、回避方法があるのかなど、少しでも詳しいことを知りたいときは、SNSなどの情報が役に立つこともあります。

SNS Twitter(X)

非公式ながらOpenAI障害情報 )@OpenAI_statusJP)が、おすすめです。日本語ですしね。
公式ページを監視して、なにか変化があったら知らせてくれますし、関連情報を寄せてくれる人も多いので、お役立ち情報が手に入ることもあります。 

残念ながら、TwitterAPIの仕様変更があったために、最近は速報性が少し損なわれているようです。Twitterの改悪は困ったものですね。

公式ページの情報を自動で取得する

自分で開発したWEBアプリなどでOpenAIのサービスを利用している場合に状況を自動で確認したいですね。
なにか便利な方法があるのかもしれませんが、よくわからなかったので、公式ページの情報を吸い出して判定することにしました。
公式ページの情報を見ると、全体の状況、4つのサービス(API,ChatGPT,Labs,Playground)の情報を提供しているようなので、全体の情報と希望するサービスの状況を取得できるようにすれば使えそうです。

準備

WIBベージ"https://status.openai.com/"の情報を入手するので、それ用のライブラリを使います。

pip install bs4
pip install requests

コード

すべての情報を一気に取得してもいいのですが、利用者の状況に合わせて使いたいし、新しいサービスが急に増えるかもしれないので、全体取得と個別サービス取得を別々に定義しましょう。

import requests
from bs4 import BeautifulSoup

def get_openai_status():
    url = "https://status.openai.com/"
    response = requests.get(url)

    soup = BeautifulSoup(response.text, "html.parser")

    status = soup.find("span", {"class": "component-status"}).text.strip()

    return status

def get_openai_service_status(service_name):
    url = "https://status.openai.com/"
    response = requests.get(url)

    soup = BeautifulSoup(response.text, "html.parser")
    services = soup.find_all("span", {"class": "name"})

    for service in services:
        if service.text.strip() == service_name:
            status = service.find_next("span", {"class": "component-status"}).text.strip()
            return status

    return "Service not found"

print("All Systems Status",get_openai_status())


print("API status: ", get_openai_service_status("API"))
print("ChatGPT status: ", get_openai_service_status("ChatGPT"))
print("Labs status: ", get_openai_service_status("Labs"))
print("Playground status: ", get_openai_service_status("Plyagrounde"))

print("Other status: ", get_openai_service_status("Other"))

All Systemu Operational: Operational
API status: Operational
ChatGPT status: Operational
Labs status: Operational
Playground status: Operational
Other status: Service not found

実行結果2024/1/18

def get_openai_status(): が全体の状況を取得、
def get_openai_service_status(service_name): がサービスごとの取得です。
service_nameの状況を返しますが、存在しないサービスだと"not found"を返します。これで新しいサービス情報が増えても、多分対応できると思います。makokonは、APIサービスの状態を確認して、問題があればその他のサービスに切り替えるのに使っています。(その他の生成AIとか、ルールベースの会話データベースですね)

まとめ

この記事ではOpenAIのサービス障害を確認する方法を3つ示しました。
一つはOpenAIの公式ページの確認であり、もう一つはSNSを通じての確認です。
また、公式ページの情報をpythonプログラムから抽出するプログラムを作成しました。サービスの状況をプログラム中で確認することによって自作アプリケーションでのより適切な対応が実現できるようになるでしょう。
今回の記事は、多分今更なんですが、皆さんのお役に立てば嬉しいですね。

#python #program #OpenAI #障害情報 #SNS #bs4 #requests



おまけ タイトル画の説明 by GPT-4V

この画像では、冥想している人物が中心に描かれています。彼の頭部は開いており、内部からは光と共に歯車や星などが放射状に広がっている様子が表現されています。このイメージは何らかの内省や啓蒙を象徴している可能性があります。また、人物の周囲には「CONFIRMATION(確認)」、「SERVICE(奉仕)」、「DISTURATION」(正しいスペルはおそらく"DISTURBATION"で、混乱や動揺を意味するかもしれません)、「TROUBLE(問題)」、「ENLIGHTENMENT(啓発)」といった単語が配置されています。これらは精神的な進化や発展に関連する概念を暗示していると考えられます。全体的には、個人の成長や自己認識のプロセスを表しているグラフィカルなイラストレーションのようです。

この記事が気に入ったらサポートをしてみませんか?