気の向くままに辿るIT/ICT
ソフトウェア

GPT-3のExamples/JavaScript to Pythonを試してみた

ホーム前へ次へ
フリーソフト・オープンソースを活用しよう。

GPT-3のExamples/JavaScript to Pythonを試してみた

GPT-3のExamples/JavaScript to Pythonを試してみた

2021/11/27

 OpenAIの自然言語処理モデルGPT-3のExamples/JavaScript to Pythonを試してみました。

JavaScript to Python

debian:~$ python openai_examples_js_to_py.py
Traceback (most recent call last):
 File "/path/to/openai_examples_explain_code.py", line 10, in
  response = openai.Completion.create(
 File "/home/xxx/.local/lib/python3.9/site-packages/openai/api_resources/completion.py", line 31, in create
  return super().create(*args, **kwargs)
 File "/home/xxx/.local/lib/python3.9/site-packages/openai/api_resources/abstract/engine_api_resource.py", line 65, in create
  response, _, api_key = requestor.request(
 File "/home/xxx/.local/lib/python3.9/site-packages/openai/api_requestor.py", line 107, in request
  resp, got_stream = self._interpret_response(result, stream)
 File "/home/xxx/.local/lib/python3.9/site-packages/openai/api_requestor.py", line 292, in _interpret_response
  self._interpret_response_line(
 File "/home/xxx/.local/lib/python3.9/site-packages/openai/api_requestor.py", line 318, in _interpret_response_line
  raise self.handle_error_response(
openai.error.InvalidRequestError: Engine not found
debian:~$

 (コメントなどそれぞれ何らかの方法で言語を特定しつつ、)JavaScriptのソースコードを渡すとPythonに書き換えるJavaScript to Python

 残念ながら、現時点では、Explain codePython bug fixerJavaScript helper chatbotJavaScript one line function等々と同様、後述のスクリプトで指定の処理エンジンdavinci-codexがないエラーが出ます。

OpenAI GPT-3 codex利用申請フォームリンクの場所
2021/12/04

 あ、一通り終わってよく見たら、各Examplesの右上に[Open in Playground]というボタンがあり、(davinci-)codexを使うものは背景がグレーアウトでポイントは可、クリック不可、それ以外はグリーンでクリック可能でWebエディタ?に遷移するようになっていました。

 でグレーアウトされた[Open in Playground]をマウスでポイントして文中の[join the waitlist]のリンクをクリックすると申請フォームに遷移、登録後、しばらく待って利用可能メールがくれば晴れてcodexエンジンを使えるようになるとのこと。

 これは、現時点ではプライベートベータ版であるCodexモデルシリーズを使うサンプルで、やってみたいなら待機リストに登録してねってことのようです。

debian:~$ cat openai_examples_js_to_py.py
import openai
import os
import json
 
openai.api_key = os.getenv("OPENAI_API_KEY")
prompt="#JavaScript to Python:\nJavaScript: \ndogs = [\"bill\", \"joe\", \"carl\"]\ncar = []\ndogs.forEach((dog) {\n car.push(dog);\n});\n\nPython:\n",
 
response = openai.Completion.create(
 engine="davinci-codex",
 prompt=prompt,
 temperature=0.0,
 max_tokens=64,
 top_p=1.0,
 frequency_penalty=0.0,
 presence_penalty=0.0
)
#print(prompt)
print(str(prompt))
print(" ")
print(response['choices'][0]['text'])
#print(str(response['choices'][0]['text']))
#print(json.dumps(response, ensure_ascii=False, indent=2))
debian:~$

 ソースはこんな感じ、環境変数OPENAI_API_KEYに自分のAPIキーが入っている前提です。

 そのままでは想定通り機能しないので一部オリジナルソースから変更しています。

 print()、もしくは、json出力しないと実行しても何も表示されないので何れかを追加する必要があり、後者用にimport jsonを追加。

 が、応答内容によっては、何れか一方では表示できないことがあり、他方を使用せざるを得ないこともあります。

 表示できないのが、print文なら、response配列を文字列にキャストすれば、たいていは凌げますが。

 応答文だけだとチャット状態にならず、問いかけ文も表示したいところ。

 が、サンプル通りだとprintやjson形式で出力しようにも問いかけ用の変数promptがスコープの範囲になく、スコープに入るようPythonの場合だとインデント階層を相応に上げたところで変数が登場(変数宣言)するようにする必要があります。

 また、promptの中身によっては、文字列にキャストしないとエラーとなるケースもありました。

Chat

 問いかけに相応に応答するChat

Grammar correction

 文章を標準的な英語に修正するGrammar correction

Natural language to OpenAI API

 自然言語をOpenAI API形式に変換するNatural language to OpenAI API

English to French

 英語をフランス語に翻訳するEnglish to French

SQL translate

 自然言語をSQLクエリに変換するSQL translate

Classification

 とあるカテゴリ分けを例示しつつ、質問すると相応に分類するClassification

Movie to Emoji

 複数の対応する名詞と絵文字のサンプルを投げつつ、サンプルにない名詞を問うと対の意味を類推して対応する絵文字を表示するMovie to Emoji

Translate programming languages

 コメントを使って、Python(あるプログラミング言語)からHaskell(他のプログラミング言語)に変換するTranslate programming languages

Explain code

 複雑なプログラミングコードの一部を自然言語で説明するExplain code

Factual answering

 学習モデルにないような質問もいくつかの応答方法を示して投げることで未知の応答を返すことができ、例示するにあたり、知らないフレーズへの応答に「?」を使うとより自然な応答を得ることができるFactual answering

Product name generator

 商品説明、関連深いフレーズ、商品名を例示しつつ、先の2者を提示すると商品名を提示するProduct name generator

Python bug fixer

 何らかの方法でバグがあることを示唆した(Python)ソースコードを投げるとバグを発見・解決して(書き直して)くれるPython bug fixer

JavaScript helper chatbot

 チャットボットとのやりとりのようにJavaScriptにおいて「○○ってどうやるの?」「xx関数を使ってこうするのさ!」と例示しつつ、「じゃ△△は?」と問うと方法を回答するJavaScript helper chatbot

Science fiction book list maker

 SFの本を例示すると続いて10件まで列挙してくれるScience fiction book list maker

Airport code extractor

 「ロスからマイアミに飛びたい」といった自然言語と利用可能な空港コードの対を示しつつ、「オーランドからボストンに飛びたい」のような自然言語を投げると対応する空港コードを返すAirport code extractor

Extract contact information

 文中に含まれる連絡先情報を抽出するExtract contact information

Friend chat

 やり取りを例示しつつ、問いかけると相応の応答を返すテキストメッセージによる会話エミュレーションFriend chat

Write a Python docstring

 Pythonのソースコードに対してPythonにおいてhelp関数からも参照・表示される関数の:(コロン)直後に3連などのシングルクォートやダブルクォートで挟んだ説明文docstringを書いてくれるWrite a Python docstring

JavaScript one line function

 JavaScriptのソースコードを投げるとワンライナー(一行の命令文)にしてくれるJavaScript one line function

Third-person converter

 いくつかの入出力となる文章を例示しつつ、他の入力となる文を渡すと一人称視点を三人称視点に変換するThird-person converter

VR fitness idea generator

 動画ゲームにおいてフィットネスと仮想現実(バーチャルリアリティ)のアイデアをいくつか例示しつつ、問いかけると他のアイデアを提案してくれるVR fitness idea generator

Essay outline

 「xxxとyyyのエッセイの概要を書く、1.概要」などと投げると1.だけでなく、場合によっては、2.や3.まで概要を書いてくれるEssay outline

Marv the sarcastic chat bot

 相応の応答例文を複数投げて問いかけると皮肉たっぷりに答えるMarvというチャットボット例Marv the sarcastic chat bot

Restaurant review creator

 とあるレストランのレビューを書くこと、店名、キーワードの後にReviewなどと書いて投げるとそれらしい文章のレビューを書いて返すRestaurant review creator

Interview questions

 「xxに関するインタビュー用の質問リストを作る、1.」などと投げると質問の例文を作ってくれるInterview questions

Q&A

 知らないことには、「Unknown」と答える既存の知識に基づく質疑応答Q&A

Summarize for a 2nd grader

 難しい文章でも要約してくれるSummarize for a 2nd grader

Text to command

 自然言語の文章をプログラム的に書き換えるような相応の例文を投げつつ、それに即した質問をすると文章をプログラムチックにして返すText to command

Natural language to Stripe API

 自然言語からクレジットカードなどの決算処理代行サービスStripeのAPIを呼ぶためのコードを生成するNatural language to Stripe API

Parse unstructured data

 ある程度の長文において一部を構造化して、そのあとのも構造化しと言わんばかりに投げると残りをそれに倣って構造化してくれるParse unstructured data

Python to natural language

 Pythonのソースコードとこれが何やってるか教えてと投げると自然言語で説明してくれるPython to natural language

Calculate Time Complexity

 関数自体とこの関数の時間計算量教えてと投げると時間とデータ量の関係について表したオーダー記法などを返すCalculate Time Complexity

Advanced tweet classifier

 いくつかの例文と感情のセットを交えて新たな一文を提供すると感情分析する進化したツイート分類器Advanced tweet classifier

Keywords

 文中からキーワードとなり得るフレーズを抽出するKeywords

Ad from product description

 商品の特徴、目的や条件を投げると広告に使える文章を返すAd from product description

TL;DR summarization

 テキストの文章の最後に「tl;dr:」を付けて、テキストを要約するTL;DR summarization

Spreadsheet generator

 任意の区切り文字を使ったいくつかの例示と「〜と〜の2列のスプレッドシート」などと投げると、その組み合わせと、区切り文字でCSV形式に変換するSpreadsheet generator

ML/AI language model tutor

 Q&A形式の言語モデルに関する質疑応答チャットボットML/AI language model tutor

Tweet classifier

 例文と問いを投げると、つぶやきの感情を分析・分類するTweet classifier

SQL request

 SQL文を構成するに十分な自然言語を投げ、例えば、SELECTと投げるとSELECT文を作成するSQL request

JavaScript to Python

 (コメントなどそれぞれ何らかの方法で言語を特定しつつ、)JavaScriptのソースコードを渡すとPythonに書き換えるJavaScript to Python

Mood to color

 自然言語による色とCSSプロパティbackground-color: #などを渡すとカラーコードを返すMood to color

Analogy maker

 投げたフレーズと似た類似性をもったフレーズを返すAnalogy maker

Micro horror story creator

 失敗談のテーマと具体例を例示し、違うテーマを渡すとそれに合致した例を示すMicro horror story creator

Notes to summary

 誰がなんと言ったと列挙した議事録から要約文に変換するNotes to summary

ESRB rating

 該当する自然言語の文章から難易度や低年齢者保護の観点からゲームや動画などのエンタメの年齢制限など等級管理を行なう米国の国家機関かつ勧告ESRB等級を分類するESRB rating

Recipe generator

 材料のリストからレシピを作成するRecipe generator

Turn by turn directions

 該当する自然言語の文章から目的地へのルートをたどるために進むべき方向を順次示すTurn by turn directions

Create study notes

 テーマを提供するとポイントとなる情報を返す(学習ノートを取得する)Create study notes

ホーム前へ次へ