🧱

OpenAI APIのmockサービス part1: サービス紹介

2023/06/27に公開

OpenAI APIのmockサービスを作った話

mockサービス openai-mock をローンチしました。
image.png

開発の経緯と、mockサービスがどういったサービスなのかをご紹介します。

開発の経緯

2022年末、ChatGPTがAPIとして利用できるようになったと聞き、その面白さに魅了されてすぐに飛びつきました。最初に手がけたプロジェクトは、ChatCompletion APIを活用した日本語入力システム、Sumibiです。
Sumibiの開発にはEmacs Lispを使用しましたが、この言語はPythonなどの整備された言語と違い、APIクライアントを自分で作成する必要がありました。それにはHTTPクライアントを用いてAPI呼び出しを行う必要があります。その過程で時々難題に遭遇しました。
例えば、呼び出し回数制限などのエラーが返されることがあります。しかしこのエラーはランダムに発生します。さらに、API呼び出しの結果の文章にもランダム性があり、常に同じ文章が返されるわけではありません。
これらの要素をより自由にコントロールしたいのは、自分だけでなく他の開発者も同様だろうと思い、モックサーバーの開発に取り組むことに決めました。

利用しやすいサービスとは

作るならば簡単に利用できるものにすべきだと考えました。自身でモックサーバーを作成する場合、サーバーの構築や維持といった作業が必要になるのですが、これらは非常に面倒な作業です。開発者は自身がアプリケーション開発に専念したいものです。
そこで、誰もがいつでも利用でき、かつ停止しないサービスをインターネット上に構築することを考えました。

openai-mockサービスできること

OpenAI本家のchat/completion APIと同じインターフェースで呼び出すことができます。
開発済みのアプリなら、APIのエンドポイントをapi.openai-mock.comに変更するだけです。
(OpenAI APIキーは不要なので、無意味な文字列に置き換えておくことをおすすめします)

このmockのユニークな点は、プロンプトのコンテンツに特定のキーワードを含めることで応答を制御することができる点です。
例えば、リクエストのcontentの中に「<<httpstatus 429>>」を含めると、429 Too Many Requestsを発生させることができます。
ほかにも「<<echo>>」を含めると、リクエストに使った文章をそっくりそのまま返してくれるなど、いろいろな制御ができます。

体験してみる

BetterChatGPTというOSSがあります。
これを使って、モックサービスを体験してみます。

  1. https://bettergpt.chat/ を開きます。なんだか本家のChatGPTのUIそっくりです。
    image.png
  2. 設定画面から、OpenAI APIのエンドポイントの接続先を変更します。
    image.png
  3. mockサービスのURLとAPIキー「sk-0」を入力して保存します。
    image.png
  4. <<echo>> キーワードを含めて質問してみます。このように質問した文章がそのまま返ってくることがわかります。
    image.png
  5. エラーコードの返却を試してみます。疑似的にrate limitを超えたケースのエラーが返却されました。
    image.png

こんな感じのサービスです。
オウム返しをする<<echo>>を使うと、どんな応答のコンテンツでも生成できるため、あなたのアプリのUIがmarkdownを正しくレンダリングできるかなどの確認に使えます。
また、GitHub Actionsに組み込むことで、ユニットテストを自動実行するのにも使うこともできるでしょう。

次回は、サービスの舞台裏であるアーキテクチャを紹介します。

Discussion