見出し画像

【Pythonコード】gpt-3のAPI申請通ったので試してみたら気持ち悪いほど正確なボットができた話

みなさんはgpt-3というアルゴリズムをご存知でしょうか?

これはOpenAIという人工知能研究所が作った超高性能のAIアルゴリズムです。どんな風にすごいのかというと。

こんな風にコーディングせずにただのテキストからWebデザインを生成したり。

このアルゴリズムで自動生成した記事が人気掲示板で1週間もの間見破られず、しかも悩みを抱えたユーザーの相談を聞いていたりなんかも勝手にしてたそうな。

昔からしりとりLINEボット作ってたり対話ボットと話せるSlackグループ作ったりで、ボットがどこまでリアルな対話を再現できるかには興味があったので、僕もこのgpt-3というものをいじってみたくなりました。

なので今回のnoteでは、gpt-3を実際に動かしてみた感想を書いてみようと思います。

調べてみるとどうやらこのgpt-3、APIは存在するもののパワーが未知数すぎて使用するためには個人でも申請を通す必要があるとのこと。普通に個人情報とかAPIの利用理由書いて送るだけ。

他の人のツイートとかみてると通るのに時間がかかったりするようで、どうなるかなと思ってましたが。

普通に3日で通りました。ブームが来てたのは去年の話なので、今は申請し時なのかもです。

こんな感じの専用ページにアクセスできるようになっていて、API利用に必要なキーやリファレンスがみられます。

画像1

あとはサポートが受けられたりボットの面白い反応をシェアしたりするSlackグループにも招待されます(こちらは一応中身は伏せておきます)。

専用ページにはPlaygroundというエディタが付いていて、gpt-3をすぐに試すことができます。例えば以下は英語からフランス語への翻訳処理です。右側で色々なパラメータをいじくれます。

スクリーンショット 2021-02-03 19.08.22

これは長文の自動要約処理。大学時代だったら論文読むのに重宝してたろうな。

スクリーンショット 2021-02-03 19.18.11


これは質問の自動返答です。これがチャットボット に使えそう。ジョージルーカスは誰? という質問にちゃんと映画監督だと答えていますね。

スクリーンショット 2021-02-03 19.21.50


次にやってみたのが以下。あるPythonコードの序文(import文)をデータとして与え、それに続く実行部分を生成させてみました。

結果がツイートの動画ですが、Djangoのviewファイルで試したら、viewクラスをちゃんと生成できていました。フレームワークのテンプレを自動生成するみたいな使い方もできるかも。


という訳で、これだけみてもまだよくわからないと思うので、自分でも実際にコードを書いてテストしてみることにしました。

試してみたのはスティーブ・ジョブズのスタンフォード大学のスピーチの序文だけをアルゴリズムに与えて、その先の文章を予測できるかというものです。

Pythonコードは以下の通りです。アルゴリズムを呼び出して結果を返すだけなので非常にシンプル。

import openai

openai.api_key = "<APIキー>"
text = "I am honored to be with you today at your commencement from one of the finest universities in the world. I never graduated from college. Truth be told, this is the closest I've ever gotten to a college graduation."

response = openai.Completion.create(
   engine="davinci",
   prompt=text,
   temperature=0.9,
   max_tokens=1000,
   top_p=1,
   presence_penalty=0,
)

print(response['choices'][0]['text'])

openaiというライブラリが必要なのでpipでいれます。

pip install openai

パラメータがいくつかありますが、とりあえずここで重要なのは以下の2つ。

・prompt:文章生成の元となる文章を入れる。これでアルゴリズムが文脈を判断する

・max_tokens:生成する文章の単語数

今回はジョブズのスピーチの原文から、序文を取ってきてpromptにいれました。もっとも優れた大学の1つの卒業式でみなさんとお会いできて光栄です、みたいなやつです。

I am honored to be with you today at your commencement from one of the finest universities in the world. I never graduated from college. Truth be told, this is the closest I've ever gotten to a college graduation.

そして今回はmax_tokensを1000にしてみました。わずか数十単語の材料から、gpt-3は果たして1000を軽く超えるスピーチの原文を再現できるのか?

ターミナルに吐き出された結果が以下になります。

スクリーンショット 2021-02-10 10.32.46

原文と比較するとぱっと見は一致していそうです。復元成功か。

スクリーンショット 2021-02-10 10.35.06

前半部分はほぼ完璧にスタンフォード大学でのスピーチを再現してくれました。gpt-3おそるべし。

スクリーンショット 2021-02-10 10.48.24

ただし1000単語生成となると誤差も出てきました。ジョブズのスピーチといえば3つのセンテンスで構成されていることで有名ですが、2つ目の愛と敗北の話の内容が間違ってます。

ジョブズが大学を中退した後に親友のバンドがツアーをしていたバンの運転手をやり、ラーメンばかり食べているみたいな奴になってます(急に話がしょぼくなった)。むしろこの後も読みたくなってきた。

結果としては、1000単語のうち約9割は正しいもとの原文を再生成することができました。これだけでも、gpt-3の文章補完性能の凄まじさをわかってもらえるのではないかと思います。

今後で試したいこととしては、上の方でも書いたように記事コンテンツの自動生成。自然対話ボットの作成。コーディングの一部自動化。文章コンテンツの要約自動生成サイトなどでしょうか。

勝手に日本語非対応だと思ってましたが、試しに日本語テキストをpromptに入れても日本語の結果が返ってきました。

面白そうな使い道をnoteのコメント・Twitterで募集します。引用RTで感想もらえると喜びます。


2021/3/17追記

ソフトバンクイノベンチャーさんからお話をいただき、AxrossというAI系オンライン学習プラットフォームにGPT-3の教材を掲載させていただきました!

このnoteよりも詳細にAPI申請の通し方や、実際に記事のコンテンツになるような長文を自動生成させるための方法についてまとめましたので、よろしければこちらもどうぞ!

現在ほとんどの教材が無料で閲覧できますのでぜひどうぞ!

追記:2023/3/1
最近何かと話題のChatGPT系のモデルと自然対話ができるアプリが誰でも開発できる記事を書きましたのでそちらも良かったらどうぞ!

リンク先で「学習を始める」ボタンを押すとPythonコード付きの解説記事が読めます! 公開一ヵ月限定で無料なのでお早めにどうぞ!!

サポートは料理好きなのでの食材費にさせていただきます。