見出し画像

ChatGPTの文字数制限を克服する。文字数の限界はどのくらいか、その限界を突破するにはどうすればいいか。【3月13日更新】

ChatGPT研究所

※ChatGPT のサイレントアップデートに合わせて、3月13日に記事を更新しました。

はじめに

インターネット上で話題沸騰中のチャット型AI ChatGPT をご存知ですか?OpenAIが開発したこのモデルは、人間と自然な会話ができるだけでなく、ポエムやジョーク、コード(プログラミング言語)なども生成できます 。しかし、ChatGPTも完璧ではない部分があります。実はChatGPT は長文入力に弱くて一定以上文字数が多くなると返答しなくなってしまいます。では一体何文字まで対応可能なのか?そしてその制限を回避する方法はあるのか?この記事ではその謎に迫ります。

そもそも扱える限界の長さはどれくらい?

まず起こる疑問として、ChatGPT にはどのくらいの文字数を扱えるんでしょうか? そうだ!ChatGTP に聞いてみましょう!

あなたが入力として受け付けることができる限界の長さはどのくらいですか?

4096字との回答です。
英語でも聞いてみましょう。

なぜか同じ質問だと、数字を出し渋ったので、数字を出して、と追加でお願いすると教えてくれました。2048字とのことです。

しかし、ChatGPT の言葉をそのまま鵜呑みすることはできません。

実際に長い文章を入れてやってみます。4096字ぐらいから実験しました。

どうやらだめそうです。段々と文字数を下げていったところ、2700文字付近に境があるようです。
反対に、英語でやったところ、なんと13185字付近まで扱うことができました。やはり ChatGPT は英語で使った方が何かと便利そうです。

ChatGPT API では、どのくらいの文字を扱えるかが明確にされています。文字ではなく、トークンと呼ばれる単位で計算されますが、ChatGPT API では、限界で4096トークン使用できます。日本語では1文字が1トークン、英語では、1ワードが1トークンとしてカウントされます。このように、英語の方がトークン計算の仕組み上、有利になっています。OpenAI が提供する以下のURLから、実際のトークン数を計算することができます。
https://platform.openai.com/tokenizer

さて、本題ですが、それではこの限界を突破するにはどうするのかについて、検討していきます。

ここでは例として、AI が書いた小説「ルテティアの歌姫エレーヌ」を ChatGPTにまとめてもらいます。

文字数制限を超える入力に対応するプロンプト

長すぎる入力を扱ってもらうには、テキストを分割して入力することです。
ただし、ただテキストを分割入力するだけでは意図を理解してもらえないため、適切なプロンプト(ChatGPTへの指示文章)を与える必要があります。

例えば以下のプロンプトを入れてみます。

これからテキストを複数に分割して渡しますので、その内容をまとめてください。わかりましたか?

しかしこれでは、以下のように勝手に要約を始めてしまい、うまくいきません。

私たちはこの問題に対して何度もChatGPTへ入力する実験を行うことで、どれほど長い入力でも簡潔に要約してくれるプロンプト命令手法(英語、日本語どちらでも使えます)を発見することができました。👉

テキストを分割して入力することを理解してもらう

この方法では以下の二種類のプロンプト(指示文)が必要です。

  1. 最初だけ入力するプロンプト:これからテキスト入力する旨をChatGPTに伝えます。👉

これからテキストを複数に分割して渡しますので、その内容をまとめてください。
私が「まとめて」というまでは、作業を始めないでください。
代わりに「次の入力を待っています」とだけ出力してください。
わかりましたか?

2 . 分割されたテキストごと入力するプロンプト:分割されたテキストが全体の一部であることをChatGPTに伝えます。また、まだまとめないでほしいことも伝えます。👉

${入力文章}

上記の文章は全体のテキストの一部です。まだまとめないでください

テキストを複数に分割する旨を伝えるのと、特定の指示文を指定します。
ポイントは、以下の通りです。

  • 大切な指示は一番下の行に書いてあげる(最重要)

  • まとめて」というこちらからの指示文を与えておくところ

  • ChatGPT が返答に困らないように、代わりの「次の入力を待っています」というレスポンスを用意してあげること

これにより、何度でも入力を分割することができるようになります。以下がその様子です。

なお、今回の内容に関しては、英語でも全く同じようなプロンプトが使えます。以下が英語用のプロンプトです。

一番最初に入力する英語プロンプト 👉

I will now give you the text in multiple parts, and you are to summarize the contents.
Do not start working on it until I say "summarize".
Instead, just output "Waiting for next input.
Understood?

文章の一部用の英語プロンプト 👉

${入力文章}

The texts above are part of the overall text. Do not summarize yet:

最後に

いかがだったでしょうか? ぜひご自身のChatGPTで試してみてください!これからも継続的に ChatGPT/AI 関連の情報について発信していきますので、フォロー (@ctgptlb)よろしくお願いします。この革命的なテクノロジーの最前線に立つ機会をお見逃しなく!


みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!