HitokotoGPT は私が思いつきで作ったシンプルなスクリプトで、ChatGPT に基づく「一言」インターフェースを提供します。
このオリジナルの「一言」インターフェースは、プロジェクトであり、API をリクエストするたびに一言を返し、ウェブサイトの文芸的な雰囲気を飾るためのものです。HitokotoGPT はさらに進んで、ChatGPT を使用してこの一言を動的に生成し、ウェブサイト上の文学的な装飾をより新鮮に見せます。
HitokotoGPT は ChatGPT の上に構築されており、簡単にデプロイできる Python プログラムです。このプログラムを通じて、ChatGPT によって生成された「名言」を簡単に取得できます。あなた自身でこのプログラムをデプロイすることも、公開されているインターフェースを使用することもできます。本プロジェクトに付属する公開インターフェースはテスト用のみであり、その安定性については責任を負いません。
デプロイガイド#
システム要件を満たす#
本プロジェクトは非常に軽量で、一般的に Python を実行できるマシンであれば問題なく動作します。ただし、このプログラムを実行するマシンが OpenAI の API インターフェースにアクセスできることを確認する必要があります。
本プロジェクトは uvicorn や fastapi などのライブラリに依存しています。そのため、CLI で以下のコマンドを実行して、必要なすべての依存関係を自動的にインストールしてください。
pip install -r requirements.txt
このインストールプロセスはすぐに終了します。完了したら、ファイアウォールのポート状態を確認し、65530
ポートが開いているかどうかを確認してください。本プログラムは65530
ポートでリッスンしています。高位ポートの使用が不便だと感じる場合は、config.json
でport
変数を希望するポート番号に変更してください。
必要な設定を行う#
本プロジェクトのすべての設定はconfig.json
ファイルに保存されています。デフォルトのディレクトリにある config.json ファイルを開き、以下の指示に従って設定を行ってください。
{
"api_key" : "your openai api key", //OpenAI API認証キー
"access_token" : "access token to access the web server", //HitokotoGPTインターフェースの認証に使用するキー
"port" : 65530, //APIサービスがリッスンするポート。必要がない限り変更しないでください
"database" : "testdebug", //SQLiteデータベースの名前。必要がない限り変更しないでください
"rate" : "1/min", //各ソースIPのリクエストレート制限
"rate_cached" : "3/min" //即時生成されないコンテンツのリクエストレート制限
}
インターフェースの呼び出し#
重要:本プロジェクトはレート制限を設定できますが、必ず OpenAI の頻度制限と一致させるように注意してください。そうしないと、予期しない結果を引き起こす可能性があります。
リクエストボディは JSON で統一して送信してください。インターフェースは JSON コンテンツタイプの POST リクエストのみを処理し、他のリクエストはすべてエラーを返します。
認証#
本プロジェクトはシンプルな認証を使用しています。すべてのインターフェースにアクセスする際は、gptauth
パラメータを使用し、その値は json で設定されたapi_key
です。
即時生成の一言#
このモードでは、本プログラムは OpenAI のインターフェースにリクエストを送り、デフォルトのプロンプトを使用して一言を生成し、返します。注意が必要なのは、このリクエストは OpenAI のレートの問題により、長時間遅延する可能性があり、タイムアウトして失敗することもあります。即時生成の一言をページの目立つ位置に使用しないでください。なぜなら、長時間読み込まれない可能性があるからです。
インターフェースアドレス:/hitokoto
(POST)
リクエストパラメータ:
gptauth
文字列、認証に使用するキー(必須)encycle
ブール値、今回生成された一言が重複キャッシュ生成に供給されることを許可するかどうかを設定します。つまり、/hitokoto-cached
インターフェースを呼び出し、「重複なし」モードを選択した場合に、この生成を使用するかどうかです。(オプション、デフォルトは否、すなわちfalse
)
予生成 / キャッシュされた一言#
「即時生成の一言」ポートを呼び出すと、すべての生成が SQLite データベースに記録されます。これは、このインターフェースがすでに事前に提出された生成を呼び出すためのものです。また、./batch.py
を使用して、ピーク時を避けて大量に一言を生成し、データベースに保存することもできます。「重複」または「重複なし」モードを選択できますが、このインターフェースで「重複なし」モードを選択しても、同じ一言が表示される可能性があることに注意してください。これは、「即時生成の一言」インターフェースでその一言が使用されたかどうかの状態が「未使用」に設定されているためです。当然、もう一度見ることはありません。なぜなら、現在その使用状態は「使用済み」に設定されているからです。
ただし、「重複なし」モードで未使用の一言が見つからない場合、インターフェースは直接使用済みの一言を返し、何の提示もありませんので、十分に注意してください。
インターフェースアドレス /hitokoto-cached
(POST)
リクエストパラメータ:
gptauth
既に紹介済みrecycle
ブール値、真に設定すると「重複」を使用し、否に設定すると「重複なし」を使用します(オプション、デフォルトは否、すなわちFalse
)
ピーク時のバッチ生成#
batch.py
を使用することで、大量に一言を生成し、それらをデータベースに保存して後で呼び出すことができます。
具体的な操作は、batch.py
内でsentence_num
変数の値を設定して生成する数を決定します。また、他のプログラムを使用してbatch.py
を深夜のピーク時に実行させたり、1、2 時間ごとに定期的に実行させたりして、成功率を高め、常に一言を呼び出せるようにすることができます。