OpenAIの自然言語処理モデルGPT-3のExamples/Explain codeを試してみました。
複雑なプログラミングコードの一部を自然言語で説明するExplain code。
このスクリプトが何をしているのか説明してもらおうとスクリプトを書いてみました。
が、残念ながら、4つしかないかと思いきや、いろいろバリエーションがありそうな処理エンジン、サンプル指定のdavinci-codexが見当たらないエラーに見舞われました。
他のサンプルでは、それでもいけていましたが、ダブルクォートだらけだからかと大外をシングルクォートにしてもダメ。
davinci-codexをdavinciに修正してみたら、ソース解析のような特殊ケースには対応していないようで2回ほど試しましたが応答がないというか、無回答でした。
あ、一通り終わってよく見たら、各Examplesの右上に[Open in Playground]というボタンがあり、(davinci-)codexを使うものは背景がグレーアウトでポイントは可、クリック不可、それ以外はグリーンでクリック可能でWebエディタ?に遷移するようになっていました。
でグレーアウトされた[Open in Playground]をマウスでポイントして文中の[join the waitlist]のリンクをクリックすると申請フォームに遷移、登録後、しばらく待って利用可能メールがくれば晴れてcodexエンジンを使えるようになるとのこと。
これは、現時点ではプライベートベータ版であるCodexモデルシリーズを使うサンプルで、やってみたいなら待機リストに登録してねってことのようです。
ソースはこんな感じ、環境変数OPENAI_API_KEYに自分のAPIキーが入っている前提です。
そのままでは想定通り機能しないので一部オリジナルソースから変更しています。
print()、もしくは、json出力しないと実行しても何も表示されないので何れかを追加する必要があり、後者用にimport jsonを追加。
が、応答内容によっては、何れか一方では表示できないことがあり、他方を使用せざるを得ないこともあります。
表示できないのが、print文なら、response配列を文字列にキャストすれば、たいていは凌げますが。
応答文だけだとチャット状態にならず、問いかけ文も表示したいところ。
が、サンプル通りだとprintやjson形式で出力しようにも問いかけ用の変数promptがスコープの範囲になく、スコープに入るようPythonの場合だとインデント階層を相応に上げたところで変数が登場(変数宣言)するようにする必要があります。
また、promptの中身によっては、文字列にキャストしないとエラーとなるケースもありました。