これまでの文章生成AIでも、ある程度の文章を書くことができましたが、GPT-4は、ワンランク上の高品質で一貫性のある文章を生成することができます。このことから、GPT-4を利用して、自費出版できるレベルの書籍を作成できるのではないかと考え、実際に試してみました。
GPT-4は、BingChatの創造性モードなどと比べると、文章やストーリーが真面目なので、今回は、その特性に合わせて、ビジネス書を書かせてみることにしました。
なお、自費出版自体も、AmazonのKindle ダイレクト・パブリッシング(KDP)ができて、簡単な操作で、無料で電子書籍やペーパーバックを出版できるようになり、ハードルが著しく下がっています。無料なので、自費出版ではなく、セルフ出版と呼ぶべきですね。
(参考)KDPによるセルフ出版の手順
1.タイトルの決定
ビジネス書は、まず読者の目を引くタイトルが重要です。したがって、最初にタイトルを決定し、それからタイトルに合わせた内容を書いていくことにします。
(1) タイトルの提案と評価
最初にGPT-4にタイトルを考えさせて、評価してもらいます。
GPT-4の提案だと、評価95点の「AIと未来のビジネス」が一番良いということになりますが、少しタイトルが平凡で、あまり読者の目を引かないような気がします。評価基準とさらに良いタイトルが作成できないか、続けて聞いてみます。
100点満点のタイトルとして、「AIビジネス革命: 人工知能とデータが創造する未来の経済」を挙げてくれました。確かに、これまで提案してくれたものより良くなったと感じます。
(2) 進化プログラムの活用
さらに、もっと良いタイトルができないか、進化プログラムにかけて、他のタイトルを提案させてみました。
新たに5つのタイトルを提案してくれました。仕組みとしては、後の方が良いタイトルのはずですが、今一つピンと来ないので、続けて、GPT-4にもう一度評価してもらいました。
理由に少し納得がいかないところもありますが、「次世代の産業革命」という言葉が気に入ったので、GPT-4が最高評価を付けた4番を採用することにしました。
このようにして、タイトルは「AIエコノミクス: 人工知能が織りなす次世代の産業革命」に決定しました。
2.アウトラインの作成
次は、タイトルに合わせて、アウトラインを作成します。
(1) 最初のアウトラインの作成
なかなかよいアウトラインを提案してくれたと思います。
(2) 丁寧な言葉での作成依頼
ここでChatGPT研究所さんが発見した、丁寧な言葉でChatGPTに接した方が良い出力が得られるというアイデアを利用させてもらいます。
どちらの提案が上かは一概に言えないですが、節の数も多く、前回以上にしっかりとした提案をしてくれました。
(3) 2つのアウトラインの比較
ここで、2つのアウトラインを比較するために、GPT-4に比較表を作成してもらいました。
なお、筆者の都合で、後に提案してもらった方が最初のアウトライン、先に提案してもらった方が追加のアウトラインと、順番が逆になっています。
次に、どちらのアウトラインを採用した方がよいか、GPT-4にアドバイスをもらいました。
今回は、ビジネスマン目線でAIを企業に導入する場合に活用できる内容が相応しいと考えたため、アウトライン2(先に提案してもらった方)を採用します。
ただし、アウトライン1の3.5節「AIを活用した企業の事例紹介」は入れるべきだと思うので、アウトライン2のどこかに追加してもらうことにしました。
最終的なアウトラインは、以下のAIの回答のとおりです。
3.アウトラインから原稿を作成
アウトラインを基に、節ごとに原稿を書いてもらいます。
(1) 1節ごとに原稿を作成
以下も同様に、アウトラインを基にして、節ごとの原稿を書いてもらいます。
しかし、全部で22節もあり、また、節の途中で文章が切れて、続きを書くように指示することが多いため、計50回近くも指示を繰り返すことになります。しかも、GPT-4には、3時間で25回までという使用制限があるため、非常に時間がかかります。
最終的には、合計3万字近い長文の原稿が出来上がりました。
(2) 原稿のブラッシュアップ
しかし、書きあがった原稿を見ると、内容が重複していたり、まとまりが悪く読みにくかったりして、修正した方がいい点が沢山あります。
そのため、GPT-4に原稿の修正を依頼しました。本当は、章単位で全文を修正したかったのですが、文章が長すぎてGPT-4が対応できなかったため、特に修正したい節だけを選んで、節単位の修正にとどめています。
以下は、6.1節の修正の例です。
このように、GPT-4に修正点を指摘させてから修正を行うと、適切に最初の原稿を改善してくれます。ただし、節のタイトルは、勝手に修正されると、全体のバランスが崩れるので、元に戻しました。
こうして、必要な部分をGPT-4に修正してもらうことにより、全体の原稿が完成しました。
4.まえがきとあとがきの作成
最後に、まえがきとあとがきを作成します。
(1) まえがきの作成
まず、GPT-4にまえがきを書いてもらいます。
(2) あとがきの作成
続けて、あとがきを書いてもらいます。
これらを全部つなげ合わせると、ビジネス書「AIエコノミクス: 人工知能が織りなす次世代の産業革命」の完成です。完成版は、以下のnote記事をご覧ください。
原稿全文を一般公開していることもあり、買う人はいないと思いますが、今度、時間があれば、Kindle ダイレクト・パブリッシングを利用して、セルフ出版してみようかと思っています。
5.原稿作成作業の自動化の検討
さて、ここまでGPT-4を使ったビジネス書の原稿作成に取り組んできましたが、読んでいただいた方は分かるとおり、思ったより大変です。
したがって、作業を自動化して、何とか楽に原稿作成作業ができないか検討してみました。
(1) アウトラインの簡単な作成方法
まず、アウトラインを作成します。今回は、質を上げるために、だいぶ手間をかけましたが、実は、もっと簡単にアウトラインを作成することができます。
例えば、「ビジネス書のアウトラインを作成してください。」という簡単なプロンプトでも、以下のようなしっかりとしたアウトラインを提案してくれます。また、アウトラインの作成を頼めば、タイトルも決めてくれます。
筆者がお勧めするアウトライン作成のためのプロンプトは以下のとおりです。
テーマとジャンル(ビジネス書、SF、ホラー小説など)を決めて、○章構成というところで、文章全体の長さを調整します。また、若いサラリーマン向けなど対象を明確にするのも効果があります。
他のジャンルの例を試してみます。
今回は、文章で細かくアウトラインを書いてくれました。このようにシンプルなプロンプトでも、相当レベルの高いアウトラインを作成してくれます。
このアウトラインが実際にストーリーを書いていくための土台になりますので、必要に応じて、内容を修正してください。自分で修正してもよいし、修正点をGPT-4に伝えて修正してもらうこともできます。
また、全体的に気に入らない場合は、「Regenerate response」ボタンを押して、自分の気に入るアウトラインが出るまで何度でも書き直させることができます。
(2) アウトラインから原稿を作成
アウトラインが完成したら、これを使ってGPT-4に原稿を書かせることができます。
第2章以降は、同じ対話セッション内であれば、GPT-4がアウトラインの内容を記憶していて、毎回、アウトラインを付けなくても、「第2章の原稿を書いてください。」のように指示するだけで、原稿を書いてくれます。
また、もっと長く書いて欲しい場合は、「1.1節の原稿を書いてください。」のように節単位で指示するとよいようです。
逆に、1章ずつ書いてもらうのは大変だからと言って、まとめて沢山書いてもらおうとすると、1章当たりの文章が非常に短くなったり、概要だけしか書いてくれなかったりします。
出力された文章を改善したい場合は、「3.(2) 原稿のブラッシュアップ」で示したように、GPT-4に修正点を指摘させて、「指摘した修正点を踏まえて文章を修正してください。」と指示すると、上手く修正してくれます。
(3) ChatGPTによる原稿作成の自動化
これらの作業を自動化しようと考えて、以下のようなプロンプトを考えたのですが、途中で止まってしまったり、概要のような短い文章しか書いてくれなかったりで、あまり上手くいきませんでした。
やはり、1章ずつ、あるいは1節ずつ書くように個別に指示していった方がよいようです。
ChatGPTでは、新たに入力せずに何度も出力させることはできず、予め全部の出力を指示しておくと、GPT-4が制限文字数(トークン数)を考慮して、短い文章で回答しようとするので、完全自動化はなかなか上手くいかないようです。
(4) GPT-4のAPIによるアウトライン作成の自動化
ChatGPTでは、なかなか自動化が上手く進まないので、GPT-4のAPIを使って、原稿作成作業の自動化を検討してみました。
なお、GPT-4のAPIは、OpenAIのウェイトリストに登録して、APIの利用を許可してもらう必要がありますので、まだ許可の下りていない人は、GPT-3.5のAPI(gpt-3.5-turbo)を利用してください。
以下は、ユーザーが指定したジャンル(ビジネス書、ホラー小説、SFなど)、テーマ、形式(○章構造など)に従って、自動的にアウトラインを作成するプログラムです。
ジャンル、テーマ、形式を書き換えれば、様々なアウトラインを提案してくれます。
使い方は、以下のコードをGoogle Colaboratoryのノートブックにコピーし、自分のAPIキーを入力して、セルを実行してください。
!pip install openai
import openai
openai.api_key = "自分のAPIキー"
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "あなたはプロのライターです。ユーザーが指示したジャンル、テーマ、形式でアウトラインを作成してください。"},
{"role": "user", "content": "ジャンル:ビジネス書 テーマ:AI 形式:3章構成"}])
print(response['choices'][0]['message']['content'])
出力結果は以下のとおりです。
次に、ジャンル:サイバーパンク、テーマ:日本の未来、形式:4章構成でアウトラインを作成してもらいました。
(5) アウトラインからの原稿作成の自動化
(4)で作成したアウトラインを作成するプログラムに、アウトラインから原稿作成する機能を追加しました。
以下のコードをColabノートブックにコピーし、自分のAPIキーを入力して実行すると作動します。
!pip install openai
import openai
openai.api_key = "自分のAPIキー"
messages = []
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "あなたはプロのライターです。userが指定したジャンル、テーマ、形式でアウトラインを作成してください。"},
{"role": "user", "content": "ジャンル: ビジネス書 テーマ: AI 形式: 3章構成"}])
outline = response['choices'][0]['message']['content']
print(outline)
n = 3
for i in range(1, n+1):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "あなたはプロのライターです。userの指示に従って原稿を作成してください。"},
{"role": "user", "content": outline + f"を基に、第{i}章の原稿を書いてください。"}])
print(response['choices'][0]['message']['content'])
出力結果は以下のとおりです。
きちんとアウトラインを踏まえた原稿になっていますね。これで、原稿作成の完全自動化が完成しました。
ただし、GPT-4のAPIは、入出力の文字数(トークン数)に応じて従量課金ですので、沢山の文章を出力すると料金がかさむので気を付けてください。
6.まとめ
結論として、原稿作成のおすすめの方法は以下のとおりです。
(1) ChatGPTのGPT-4モデルを使用する場合
1.ジャンル(ビジネス書、ホラー小説、SFなど)とテーマとストーリーの長さ(章の数)を決めて、アウトラインを作成。
プロンプト:「○○をテーマとした○章構成の(ジャンル名)のアウトラインを作成してください。」
2.1章(節)ずつ原稿を作成。※長く書きたい場合は節単位にする。
プロンプト:「アウトラインを基に、○章(節)の原稿を書いてください。」
3.必要に応じて、修正点を指摘させ、指摘を踏まえて原稿を修正。
プロンプト:「原稿の修正点を指摘してください。」「指摘された修正点を踏まえて原稿を修正してください。」
このプロンプトは、ビジネス書だけではなく、どんな分野の文章でも使えますので、是非試してみてください。
長い文章を完成するためには、何度も入力する必要があるので、少し手間がかかりますが、すべてGPT-4に書かせてセルフ出版も夢ではありません。
(2) GPT-4のAPIをPythonのプログラムで使用する場合
以下のコードをColabノートブックにコピーし、ジャンル(ビジネス書、ホラー小説、SFなど)、テーマ、形式(〇章構成など)を指定し、自分のAPIキーを入力してセルを実行してください。
なお、APIは従量課金なので、使い過ぎに注意してください。
!pip install openai
import openai
openai.api_key = "自分のAPIキー"
messages = []
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "あなたはプロのライターです。userが指定したジャンル、テーマ、形式でアウトラインを作成してください。"},
{"role": "user", "content": "ジャンル: 〇〇 テーマ: 〇〇 形式: 〇章構成"}])
outline = response['choices'][0]['message']['content']
print(outline)
n = 〇
for i in range(1, n+1):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "あなたはプロのライターです。userの指示に従って原稿を作成してください。"},
{"role": "user", "content": outline + f"を基に、第{i}章の原稿を書いてください。"}])
print(response['choices'][0]['message']['content'])
これだけで、アウトラインと原稿全体の作成が自動化できます。
是非、このプログラムで色々な文章や小説の原稿を作成してみてください。