OpenAIの自然言語処理モデルGPT-3のExamples/Classificationを試してみました。
とあるカテゴリ分けを例示しつつ、質問すると相応に分類するClassification。
果物についての応答は、途中で欠落していますが、後述のようにスクリプト側でmax_tokens値を相応に設定すれば、後の文字列も表示されます。
が、この瞬間は、日本語だから、こういうこともあるのかな?程度で、気づかず、動物の鳴き声のサンプルを試すことに。
動物の鳴き声は提示したサンプル数が少なかったのか、牛がヒヒーンと鳴く羽目に。
一方、パソコン周辺機器の例は、見事に答えてますね。
また、応答が英語になるものもある中、このサンプルも応答は日本語でした。
ソースはこんな感じ、環境変数OPENAI_API_KEYに自分のAPIキーが入っている前提です。
そのままでは想定通り機能しないので一部オリジナルソースから変更しています。
元の英語オリジナルのサンプルでは、max_tokens=6でしたが、今回は、日本語で、このサンプルの応答には不足するのでmax_tokens=16としました。
果物の例では、max_tokens=6のままだったので「冬の果」で終わっており、続きもあったとは思うものの、メロンは冬の果物ではないこともあり、修正後の再確認はしませんでした。
print()、もしくは、json出力しないと実行しても何も表示されないので何れかを追加する必要があり、後者用にimport jsonを追加。
が、応答内容によっては、何れか一方では表示できないことがあり、他方を使用せざるを得ないこともあります。
表示できないのが、print文なら、response配列を文字列にキャストすれば、たいていは凌げますが。
応答文だけだとチャット状態にならず、問いかけ文も表示したいところ。
が、サンプル通りだとprintやjson形式で出力しようにも問いかけ用の変数promptがスコープの範囲になく、スコープに入るようPythonの場合だとインデント階層を相応に上げたところで変数が登場(変数宣言)するようにする必要があります。
また、promptの中身によっては、文字列にキャストしないとエラーとなるケースもありました。