OpenAIの自然言語処理モデルGPT-3のExamples/JavaScript to Pythonを試してみました。
(コメントなどそれぞれ何らかの方法で言語を特定しつつ、)JavaScriptのソースコードを渡すとPythonに書き換えるJavaScript to Python。
残念ながら、現時点では、Explain codeやPython bug fixer、JavaScript helper chatbot、JavaScript one line function等々と同様、後述のスクリプトで指定の処理エンジンdavinci-codexがないエラーが出ます。
あ、一通り終わってよく見たら、各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の中身によっては、文字列にキャストしないとエラーとなるケースもありました。
問いかけに相応に応答するChat。
文章を標準的な英語に修正するGrammar correction。
自然言語をOpenAI API形式に変換するNatural language to OpenAI API。
英語をフランス語に翻訳するEnglish to French。
自然言語をSQLクエリに変換するSQL translate。
とあるカテゴリ分けを例示しつつ、質問すると相応に分類するClassification。
複数の対応する名詞と絵文字のサンプルを投げつつ、サンプルにない名詞を問うと対の意味を類推して対応する絵文字を表示するMovie to Emoji。
コメントを使って、Python(あるプログラミング言語)からHaskell(他のプログラミング言語)に変換するTranslate programming languages。
複雑なプログラミングコードの一部を自然言語で説明するExplain code。
学習モデルにないような質問もいくつかの応答方法を示して投げることで未知の応答を返すことができ、例示するにあたり、知らないフレーズへの応答に「?」を使うとより自然な応答を得ることができるFactual answering。
商品説明、関連深いフレーズ、商品名を例示しつつ、先の2者を提示すると商品名を提示するProduct name generator。
何らかの方法でバグがあることを示唆した(Python)ソースコードを投げるとバグを発見・解決して(書き直して)くれるPython bug fixer。
チャットボットとのやりとりのようにJavaScriptにおいて「○○ってどうやるの?」「xx関数を使ってこうするのさ!」と例示しつつ、「じゃ△△は?」と問うと方法を回答するJavaScript helper chatbot。
SFの本を例示すると続いて10件まで列挙してくれるScience fiction book list maker。
「ロスからマイアミに飛びたい」といった自然言語と利用可能な空港コードの対を示しつつ、「オーランドからボストンに飛びたい」のような自然言語を投げると対応する空港コードを返すAirport code extractor。
文中に含まれる連絡先情報を抽出するExtract contact information。
やり取りを例示しつつ、問いかけると相応の応答を返すテキストメッセージによる会話エミュレーションFriend chat。
Pythonのソースコードに対してPythonにおいてhelp関数からも参照・表示される関数の:(コロン)直後に3連などのシングルクォートやダブルクォートで挟んだ説明文docstringを書いてくれるWrite a Python docstring。
JavaScriptのソースコードを投げるとワンライナー(一行の命令文)にしてくれるJavaScript one line function。
いくつかの入出力となる文章を例示しつつ、他の入力となる文を渡すと一人称視点を三人称視点に変換するThird-person converter。
動画ゲームにおいてフィットネスと仮想現実(バーチャルリアリティ)のアイデアをいくつか例示しつつ、問いかけると他のアイデアを提案してくれるVR fitness idea generator。
「xxxとyyyのエッセイの概要を書く、1.概要」などと投げると1.だけでなく、場合によっては、2.や3.まで概要を書いてくれるEssay outline。
相応の応答例文を複数投げて問いかけると皮肉たっぷりに答えるMarvというチャットボット例Marv the sarcastic chat bot。
とあるレストランのレビューを書くこと、店名、キーワードの後にReviewなどと書いて投げるとそれらしい文章のレビューを書いて返すRestaurant review creator。
「xxに関するインタビュー用の質問リストを作る、1.」などと投げると質問の例文を作ってくれるInterview questions。
知らないことには、「Unknown」と答える既存の知識に基づく質疑応答Q&A。
難しい文章でも要約してくれるSummarize for a 2nd grader。
自然言語の文章をプログラム的に書き換えるような相応の例文を投げつつ、それに即した質問をすると文章をプログラムチックにして返すText to command。
自然言語からクレジットカードなどの決算処理代行サービスStripeのAPIを呼ぶためのコードを生成するNatural language to Stripe API。
ある程度の長文において一部を構造化して、そのあとのも構造化しと言わんばかりに投げると残りをそれに倣って構造化してくれるParse unstructured data。
Pythonのソースコードとこれが何やってるか教えてと投げると自然言語で説明してくれるPython to natural language。
関数自体とこの関数の時間計算量教えてと投げると時間とデータ量の関係について表したオーダー記法などを返すCalculate Time Complexity。
いくつかの例文と感情のセットを交えて新たな一文を提供すると感情分析する進化したツイート分類器Advanced tweet classifier。
文中からキーワードとなり得るフレーズを抽出するKeywords。
商品の特徴、目的や条件を投げると広告に使える文章を返すAd from product description。
テキストの文章の最後に「tl;dr:」を付けて、テキストを要約するTL;DR summarization。
任意の区切り文字を使ったいくつかの例示と「〜と〜の2列のスプレッドシート」などと投げると、その組み合わせと、区切り文字でCSV形式に変換するSpreadsheet generator。
Q&A形式の言語モデルに関する質疑応答チャットボットML/AI language model tutor。
例文と問いを投げると、つぶやきの感情を分析・分類するTweet classifier。
SQL文を構成するに十分な自然言語を投げ、例えば、SELECTと投げるとSELECT文を作成するSQL request。
(コメントなどそれぞれ何らかの方法で言語を特定しつつ、)JavaScriptのソースコードを渡すとPythonに書き換えるJavaScript to Python。
自然言語による色とCSSプロパティbackground-color: #などを渡すとカラーコードを返すMood to color。
投げたフレーズと似た類似性をもったフレーズを返すAnalogy maker。
失敗談のテーマと具体例を例示し、違うテーマを渡すとそれに合致した例を示すMicro horror story creator。
誰がなんと言ったと列挙した議事録から要約文に変換するNotes to summary。
該当する自然言語の文章から難易度や低年齢者保護の観点からゲームや動画などのエンタメの年齢制限など等級管理を行なう米国の国家機関かつ勧告ESRB等級を分類するESRB rating。
材料のリストからレシピを作成するRecipe generator。
該当する自然言語の文章から目的地へのルートをたどるために進むべき方向を順次示すTurn by turn directions。
テーマを提供するとポイントとなる情報を返す(学習ノートを取得する)Create study notes。