【解決策】ChatGPTが文字数を守らない原因と劇的に改善するプロンプト術

実務・トラブル解決

ChatGPTを利用していて、「400文字以内で書いて」と指示したのに1000文字以上の長文が返ってきたり、逆に短すぎたりして困った経験は誰にでもあります。

結論から言うと、ChatGPTは「文字数を正確にカウントすること」が構造的に非常に苦手です。これはバグではなく、AIが言葉を処理する仕組み(トークン)に起因する仕様です。

本記事では、なぜChatGPTは文字数指定を守れないのかという技術的な理由を解明し、指定したボリュームに近い文章を出力させるための具体的なプロンプト技術と、文字数を「完全に守らせる」ための裏技を解説します。

なぜChatGPTは「文字数指定」を守れないのか

ChatGPTが文字数を無視しているように見えるのには、明確な技術的理由があります。AIは私たちが使っている「文字」という単位を理解していません。

「文字」ではなく「トークン」で思考している

ChatGPTは、テキストを「トークン」と呼ばれるデータの塊として処理しています。英語であれば「1単語≒1トークン」に近い感覚ですが、日本語は複雑です。

ひらがな、漢字、カタカナが入り混じる日本語は、AIにとってトークン化の処理が非常に非効率的です。

単位 人間の認識 AI(ChatGPT)の認識
文字 あ、い、う(1文字ずつ) 意味を持たないデータの断片
単語 私は、学校へ、行く 複数のトークンの組み合わせ
計算方法 1, 2, 3…と数える 確率的な推論で長さを調整する

例えば、「私は猫です」という文章は5文字ですが、AI内部では「私」「は」「猫」「です」のように分解され、それぞれのトークンIDで処理されます。AIに対して「400文字」と指示しても、AI内部では「およそこれくらいのトークン量」という曖昧な推測しかできず、結果として日本語では大幅なズレが生じます。

生成AIは「書きながら考えている」

ChatGPTは、文章全体の構成を事前に決めてから書き出すのではなく、「次に来る確率が高い単語」を予測して出力し続けています。

人間が作文をする時のように、「あと50文字だから、ここでまとめに入ろう」という逆算ができません。書き始めたら止まれず、気付いたら指定文字数を大幅にオーバーしてしまう、あるいは内容が薄くて届かないという現象は、この「確率的生成」の性質によるものです。

注意点

特にGPT-4などの高性能モデルほど、丁寧に説明しようとする傾向が強いため、「短くまとめて」という指示を無視して詳細な解説を加えてしまい、文字数が超過しやすくなります。

指定通りの長さに近づけるプロンプト技術

AIの仕組みを変えることはできませんが、指示の出し方(プロンプト)を工夫することで、文字数の誤差を最小限に抑えることは可能です。

1. 「文字数」ではなく「分量」で指示する

「〇〇文字以内で」という数値指定は、AIにとって最も難しい指示の一つです。代わりに、AIが理解しやすい「構造」や「物理的な量」で指示を出します。

  • 悪い例: 「このニュースを300文字で要約して。」
  • 良い例: 「このニュースを、1文あたり50文字程度の短文を使い、箇条書き3点で要約して。」

構成要素を指定することで、AIは文字数を計算する必要がなくなり、結果として指定したボリュームに収まりやすくなります。

2. 禁止事項(ネガティブプロンプト)を設定する

文字数が増えてしまう原因である「余計な言葉」を封じ込めます。

# 制約条件:
- 「〜と考えられます」「〜と言えるでしょう」といった冗長な表現は禁止。
- 挨拶や前置き(「はい、承知しました」など)は出力しない。
- 具体例は1つだけに絞る。

このように、文章が長くなる要因を具体的に排除する指示を加えることで、意図せず長文化するのを防ぎます。

3. 参考となる例文(Few-Shot)を与える

AIに「これくらいの長さで書いてほしい」というサンプルを見せるのが最も効果的です。

プロンプト例

以下の【例文】と同じくらいの長さ、文体、構成で、新しいテーマ「AIの未来」について書いてください。

【例文】

(ここに理想的な長さの文章を貼り付ける)

具体的な手本がある場合、AIはそのトークン量を模倣しようとするため、数値で指定するよりも遥かに高い精度で長さを制御できます。

【裏技】Pythonを使って文字数を完全に守らせる方法

これまでの方法はあくまで「調整」ですが、業務などで「絶対に400文字以内でなければならない」という厳密な要件がある場合は、ChatGPTのAdvanced Data Analysis(旧Code Interpreter)機能を使用します。

この機能を使えば、AIが感覚で書くのではなく、プログラミングコード(Python)を実行して文字数を物理的にカウント・調整させることができます。

Pythonによる文字数調整プロンプト

以下のプロンプトをそのままChatGPT(GPT-4モデル)に入力してください。

# 命令:
以下のテキストを要約し、Pythonコードを使って「必ず200文字以下」になるように調整してください。

1. まずドラフトを作成する。
2. Pythonの `len()` 関数を使って文字数をカウントする。
3. 200文字を超えている場合は、200文字以下になるまで自動的に要約・削除を繰り返すループ処理を行う。
4. 最終的に文字数要件を満たしたテキストのみを出力する。

# 対象テキスト:
(ここに要約したい文章を入れる)

なぜこれがうまくいくのか

通常のチャットモードでは、AIは「感覚」で文字数を判断します。しかし、このプロンプトではAIに「文章を書く → プログラムで文字数を数える → 多ければ削る」という校正プロセスを実行させています。

AI自身に自己添削を行わせることで、指定した文字数制限を厳密にクリアした成果物を得ることができます。

長文を執筆させる場合の分割テクニック

逆に、「5000文字以上の記事を書いてほしいのに、すぐに終わってしまう」という悩みも多いです。ChatGPTには1回の出力に限界(トークン制限)があるため、長文を一発で出力させることは不可能です。

この場合は、「構成作成」と「執筆」を分ける必要があります。

1. 構成案の作成:

「このテーマで記事構成案(目次)を作ってください。H2見出しを5つ、H3見出しをそれぞれ2つ入れてください。」

2. 分割執筆:

「構成案の『第1章』について、1000文字程度で詳しく執筆してください。」

(出力が終わったら)

「続けて『第2章』について執筆してください。」

このようにパートごとに生成させることで、合計数万文字の長編コンテンツを作成することも可能です。

ChatGPTの文字数制限に関するよくある質問

「文字数稼ぎ」のような薄い文章になるのはなぜ?

無理に文字数を指定(例:中身がないのに「2000文字で書いて」)すると、AIは指定を守ろうとして、同じ意味の言葉を繰り返したり、無意味な修飾語を増やしたりして「水増し」を行います。文字数指定よりも、「具体的なトピックを5つ盛り込んで」といった「内容の密度」を指定する方が、結果的に適切な長さの良い文章になります。

英語なら文字数指定を守れますか?

日本語よりは精度が高いですが、完璧ではありません。英語でもWord count(単語数)とToken count(トークン数)は完全には一致しないため、±10〜20%程度の誤差は生じます。厳密な制限が必要な場合は、やはりPythonコードによる制御が必要です。

無料版(GPT-4o mini)でも文字数調整はできますか?

可能ですが、有料版(GPT-4o)に比べて指示の追従能力が低いため、誤差は大きくなります。また、無料版ではAdvanced Data Analysis(Python実行)の使用回数に制限があるため、何度も試行錯誤するのには向きません。

まとめ

ChatGPTに文字数を守らせるためには、AIの「トークン思考」を理解し、適切な指示を出す必要があります。

  • 原因: AIは文字ではなくトークンで計算しており、書きながら考えているため逆算ができない。
  • 対策: 「文字数」ではなく「構成(箇条書き、文の数)」で指示する。
  • 確実な方法: Advanced Data Analysisを使い、Pythonで文字数をカウント・調整させる。
  • 長文対策: 一括出力を諦め、章ごとに分割して生成する。

「400文字で書いて」と祈るように指示するのではなく、「Pythonで400文字に収めて」と命令することで、AIはあなたの頼れる編集者へと進化します。

タイトルとURLをコピーしました