[PR]
本サイトはアフィリエイト広告を利用しています。
$user_prompt .= "カテゴリから関連キーワードを10個生成して、その中からランダムにテーマを決めてください( bodyの最後の段落の直後に、関連キーワードの10個を表示してください)。\n";
下記のプロンプトが最初に実行していたプロンプトだ。このプロンプトでは、関連キーワードはうまく生成されていてもランダムに選択する指示をしても偏りが発生した。下記の画像がスポーツカテゴリで起きたテーマ(タイトル)の偏りだ。OpenAIの日本語解析方法に疑問を感じた出来事であった。

ChatGPTにまとめ記事を書いてもらった。
Pinpoint 開発メモ
自動投稿のプロンプトで「ランダムに選んでるはずなのに偏る」「最初の文章が飛ぶ」現象が出たので、 原因を“日本語の指示構造”として整理し、安定させた手順をまとめます。
日本語で「Aして、その中からBして…」のように句読点で繋ぐと、BがAに掛かるのか別工程なのかが曖昧になります。 人間は文脈で補完できますが、モデルは「自然に読める解釈」を選びやすく、結果として工程が入れ替わったり、 注意事項が想定外の工程に掛かったりします。
句読点そのものが悪いのではなく、指示の“適用範囲”が句読点でズレることが問題。 このズレが、偏りや分断の起点になりました。
複数の指示が同時にあると、モデルは破綻しない出力を優先して、後ろの強い制約(出力形式・末尾表示・禁止事項など)を守るために、 導入や前段の説明を省略することがあります。結果として「最初の文章が飛ぶ」現象が起きます。
分断を止めるには、自然文で“つなぐ”のをやめて、工程を番号で固定し、各工程の入力・禁止事項・選択対象を明示します。 特に効いたのは「どの集合から選ぶか」を確定させる書き方でした。
「注意事項のタイトル一覧を読んで、最初に生成した10個の中から重複しないテーマを選択する」 と明記したことで、注意事項がキーワード生成に誤って掛かる解釈を減らし、分断を抑えられました。
$user_prompt .= "カテゴリから関連キーワードを最初に10個生成します。その中から下記の注意事項に従ってランダムにテーマを決めてください( bodyの最後の段落の直後に、関連キーワードの10個を表示してください)。\n";
$user_prompt .= "※注意事項\n";
$user_prompt .= "下記の10個のタイトル一覧を読込んで最初に生成した10個の中から重複しないテーマを選択してください。\n";
$user_prompt .= "直近タイトル一覧:\n{$recent_titles_text}\n";
重要なのは「最初に生成した10個」が候補集合として固定されること。これにより、選択工程が暴れにくくなります。
“ランダムが偏る”問題は、乱数そのものよりも、前段の候補集合が偏る・指示が分断される・強い制約が前文を上書きする、 という日本語プロンプト設計の問題として発生しやすいことが分かりました。 工程の番号化と、参照範囲・選択対象の固定で、挙動はかなり安定します。
上の記事にもあるが、最終的に下記のプロンプトに落ち着いて様子を見ている。これでうまくいってほしい。
$user_prompt .= "カテゴリから関連キーワードを最初に10個生成します。その中から下記の注意事項に従ってランダムにテーマを決めてください( bodyの最後の段落の直後に、関連キーワードの10個を表示してください)。\n";
$user_prompt .= "※注意事項\n";
$user_prompt .= "下記の10個のタイトル一覧を読込んで最初に生成した10個の中から重複しないテーマを選択してください。\n";
$user_prompt .= "直近タイトル一覧:\n{$recent_titles_text}\n";