【GPT-3 × streamlit】ブログの”タイトル・本文を自動生成するサイトを作った話
はじめに
こんにちは、Wantedlyでデータサイエンティストをしている21新卒の樋口です。
本記事はWantedly 21新卒 Advent Calendar 2021の7日目の記事です!
今日、この記事では.....................!
.....
.....
.....
何を書こう....
アドベントカレンダーを5人で制覇するぞ!と言っておきながら、2記事目でネタがなくなってしまいました。ブログ書くぞ!と意気込んだものの、なかなかネタが降りてこない時ってありますよね🥲
そんな問題に解決できるように、ブログの”タイトル・本文を自動生成するサイトを作りました!
その名もブログネタだし君です!!
ブログネタだし君はブログのタイトルと本文を生成してくれるWebアプリです。 "プロンプト"と呼ばれるお題と例示を与えると、その情報から何を答えるべきかを理解して、回答してくれます。
デモ
タイトルの生成
まずはアドカレの"タイトル"のアイディアを授かりましょう。 自分のブログのタイトルを例示し、"データサイエンティストのブログのタイトル”を出力させます。
そして待つこと数秒....タイトル案を出してくれます!
何だか良さそうなタイトルを出してくれました! (二つ目のタイトルはかなりディープラーニングディープラーニングしていますが。)
動画だとこんな感じです。(確率的に結果を返すので上の例と出力が違います) youtu.be
記事本文の生成
次は先ほど生成してくれたタイトル「【最新情報】TensorFlow Liteが正式リリースされました! 」の中身を書いてもらいましょう。 自分のブログのタイトルと書き出しを例示して、生成してみます。
そして待つこと数秒....本文を生成してくれます!
タイトル: 【最新情報】TensorFlow Liteが正式リリースされました! 本文: こんにちは、21新卒の樋口です。本日はWantedly Advent Calendarの2日目です! 先日Google I/OでTensorFlow Liteが正式にリリースされました! TensorFlow Liteはモバイル向けの深層学習ライブラリで、ソフトウェアの実行時間を短縮してメモリ使用量を削減することができます。 TensorFlow Liteの使い方については以下の記事が参考になります。https://www.tensorflow.org/lite/tutorials また、TensorFlow Liteを使用したモバイルアプリケーションを作成するためのガイドが公開されて
AIが生成した文章とは思えないです。生成結果をさらに例示として与え、続きを書いてもらいましょう!
こんにちは、21新卒の樋口です。本日はWantedly Advent Calendarの2日目です! 先日Google I/OでTensorFlow Liteが正式にリリースされました!TensorFlow Liteはモバイル向けの深層学習ライブラリで、ソフトウェアの実行時間を短縮してメモリ使用量を削減することができます。TensorFlow Liteの使い方については以下の記事が参考になります。https://www.tensorflow.org/lite/tutorialsまた、TensorFlow Liteを使用したモバイルアプリケーションを作成するためのガイドが公開されています。https://developers.google.com/machine-learning/tensorflow/lite/getting-starte レポジトリには、モデルのトレーニングと実行を行うための2つのファイルがあります。tf_lite_model.pyはトレーニングを行うモデルファイルで、モデルの出力を表示するためにprint()メソッドが追加されています。tf_lite_exec.pyは実行するファイルで、モデルを使用して画像の特徴量を計算します。
続きも上手に書いてくれました!これで何記事も量産できそうです😎
ブログネタだし君の作り方
せっかくなのでブログネタだし君の作り方を紹介します。たった70行+αで書けます。
実装はこちら↓ github.com
文章生成エンジンには”OpenAI API", Webアプリのインターフェースは"streamlit"を利用しています。開発に必要な作業は以下の通りです。
- OpenAI APIにユーザ登録する
- API keyを取得する
- API keyを環境変数にセットし、コードを書く
- streamlit runでlocalhostでアプリを起動する or デプロイする
以降、実装に利用したOpneAI APIとstreamlitについて紹介します。
OpenAI API
OpneAI APIとは自然言語・コードの生成と理解を伴うほぼ全てのタスクに適用できるAPIです。タスクに沿ってさまざまなモデルをパラメータを調整して、利用することができます。
The completions endpoint is at the center of our API. It provides a simple text-in, text-out interface to our models that is extremely flexible and powerful. You input some text as a prompt, and the model will generate a text completion that attempts to match whatever context or pattern you gave it. For example, if you give the API the prompt, “As Descartes said, I think, therefore”, it will return the completion “ I am” with high probability.
最近、強力な言語モデル、GPT-3がwaitlistなしで利用できるようになりました。
どんなタスクを解けるのか
大きく分けて、以下のタスクを解くことができます。
- お題と例示を与えると、 続きを補完してくれる
Completion
(ブログネタ出し君はこれ) - 文章内の検索をする
Search
- 質問回答してくれる
Question ansering
また与えるプロンプトやモデルパラメータを調節することで、さまざまなタスクを解くことができるようになります。
- チャットボット
- SQL生成
- 文書要約
- etc.
利用できるタスクリスト↓
https://beta.openai.com/examples
うまく生成させるには
上手に文章を生成させるには、タスクの複雑さとプロンプトの質にかかっています。目安としては、中学生でも理解できる文章題のように書くといいでしょう。
以下の3つを守ると高品質な生成結果が得られるとのことです。
- 指示、例の二つを組み合わせて何を求めているか明確にする
- 質の高いデータを提供する
- 設定を見直す
- 答えが一意になるものなら、
temperature
、top_p
を高く、そうでないなら低く設定する
- 答えが一意になるものなら、
また、高品質な例示が多いほど、APIの出力は洗練されていきます。 APIの生成結果で気に入ったものがあれば、例示に加えることでより高品質な生成結果を得られるようになるでしょう。
詳しいtipsはOpenAI APIのdocsに載っています。
streamlit
stereamlitはPython製のWebアプリフレームワークです。フロントエンドの経験を必要とせず、数分で共有可能なアプリを作ることができます。
こちらも最近 version1.0がリリースされました🎉
streamlitの使い方
streamlitは構文が平易かつ、docmentが充実しているので、tutorialとapi referenceを読めば簡単に使いこなせると思います。 自分もブログネタだし君のUIは1時間くらいで作成できました。
おわりに
今回は、正式リリースとなったstreamlit, GPT-3の一般利用が可能になったOpenAI APIの紹介を兼ねて、簡単なアプリを作ってみました。世の中便利なAPI、フレームワークが出てきて、パッとデモを作るのは本当に簡単になったと思います。
また、生成される文章が本当に人間が書いたようなクオリティで驚きました。プロンプトで丁寧に情報を与える必要はありますが、アイディア次第では十分実用可能なものが作れると思います。
ではまた5日後〜、ブログネタだし君を使わなくて済むよう、早めに用意したいです😇
ブログネタだし君の公開について
OpenAI APIは無料で利用枠が限られているため、ブログネタだし君は現在公開していません🙏
openai.com
ただし、GitHubのInstallation通りに実行すればすぐにローカルで立ち上がるようになっています。よければこちらから使ってみてください! github.com
参考記事
せっかくなので言語モデルを使った有名アプリを紹介します。頑張って作り込めばこれくらいのクオリティ・人気のアプリができるかもです...!