💭 検証・気づきログ

GPTが言うこと聞かない?原因はプロンプトじゃなく“前処理ミス”だった話

GPTが言うこと聞かない?原因はプロンプトじゃなく“前処理ミス”だった話

🔰 はじめに

「ちゃんと指示したのに、GPTくん…なんでそうなるの!?」

今回もやってしまいました。

そう、“プロンプト迷子”からの沼落ちコースです。

やっていたのは、英語コーチングセッションの会話ログから、「発音に関するやりとり」だけをキレイに抽出して整理するという作業。

目的はシンプル。

でも、Colabで動かすと…毎回違う出力、精度ブレブレ、なぜか拾ってほしい部分がスルーされる。

「プロンプトが悪いのか?」
「GPTの気まぐれか?」

そう思って、プロンプトを何度も調整しては試すを繰り返していたのですが…

最終的にたどり着いたのは、“プロンプトじゃなかった”という真実。

そう、そもそもGPTに渡している“素材の整え方”に問題があったんです。

今回の気づきと沼脱出のプロセス、誰かの役に立つ気がするので記録しておきます✍️

🌀 沼1:プロンプトを調整しても精度が出ない

最初に疑ったのは、もちろんプロンプト。

  • 「指示があいまいだったかな?」
  • 「もう少し細かく条件を伝えれば改善するかも?」
  • そう思って、あれこれ手を加えながら試しました。

📌 試した工夫:

  1. 「この形式で出力してね!(Markdownで表形式)」
  2. 「“発音に関するやりとり”だけを抽出してね」
  3. 「コーチの補足にはカタカナ発音も入れてね」

…にもかかわらず。

💥 出力は毎回バラバラ。
💥 拾ってほしいやりとりが抜けてる。
💥 逆にいらない発言が混ざる。

「なんで?こんなに丁寧に頼んでるのに?」

と、もはやGPTくんに軽くキレながら(笑)何度もプロンプトを修正。

でも、根本原因は別のところにありました。

🧱 沼2:ブラウザ版だと上手くいくのに、Colabだとズレる

不思議なのがこれ。

ChatGPTのブラウザ版で試すと、同じプロンプトでもそれなりにいい感じの結果が返ってくる。

ところが

Colab経由でAPI実行すると、様子が一変。

📉 よくあるズレ:

  • 話題が唐突に切り替わる(途中から急に無関係な指導に…)
  • 抽出してほしい発音のやりとりがスルーされる
  • 文脈がブツ切れになり、指導の流れが追えない

「同じ指示でここまで違う!?」

と驚いたのですが、あとで冷静に振り返ると…

ChatGPTブラウザ版は、“文脈や空気を読む力”が強い

会話履歴や見えない補助要素がたくさんあるんです。

一方、APIでは「送ったテキストだけがすべて」。

文脈の前提や、話の流れは 明示しないと読み取ってくれません

つまり、“渡すテキストの整え方”が精度を左右するという、見えない落とし穴だったのです。

🔍 沼3:print()で中身を確認したら真犯人が見えた

「もしかして、渡してるデータそのものが怪しいのでは?」

そう思って、Colab上で print(dialogue_text[:300]) を実行してみたら…

💥 衝撃の事実:

  • 発話の区切りがガタガタ
  • ラベル([生徒][コーチ])があいまい or 欠落
  • そもそも誰が何を言ったのか、GPTにとっては判別不能

そりゃあ、GPTくんも混乱するよね…。

プロンプトを何度いじっても改善しなかった原因は、「前処理ミス(素材の整形不足)」だったわけです。

つまり、真犯人は プロンプトではなく前の段階

「渡す素材の状態で、すでに勝負は決まっていた」ことに気づかされました。

💡 気づき:「プロンプトじゃなく前処理の整形不足」が原因だった

「GPTが意図通りに動かないのは、命令の書き方が悪いからだ」と思い込みがちですが、実は “渡す素材の状態” がすべてを決めていた んです。

🧩 整形不足の例:

  • [コーチ][生徒] のラベルが曖昧で、誰の発言か分かりにくい
  • 会話の流れがぶつ切り or まとめられすぎていて文脈が途切れる
  • 発話が長すぎて、GPTの処理単位からこぼれ落ちてしまう

こんな状態で「発音に関するやりとりを抽出して」と言われても、GPTにとっては “そもそも探せる形になってない”

つまり、プロンプトをいくら丁寧にしても、土台(前処理)が悪ければ精度は出ないんだと痛感しました。

🛠 解決策:3ステップで分けて処理する

やったことはシンプル。でも、これだけで劇的に改善しました。

1️⃣ 整形フェーズ(前処理)

Whisperなどで文字起こししたあとに、以下のように整形

  • [コーチ] 発話内容
  • [生徒] 発話内容

発話の区切りをはっきりさせ、誰が何を言ったかが即分かるようにする。

🛑 ここを怠ると、すべてがズレます。

プロンプトの工夫も無意味になります。

2️⃣ 抽出フェーズ(GPTで発音やりとりをピックアップ)

整形済みのテキストをGPTに渡して、発音に関するやりとりだけを抽出。

たとえば👇

  • 生徒が不安げに発音したシーン
  • コーチが具体的な指導を入れた箇所
  • 発音練習を何度か繰り返したやりとり

などを中心にピックアップ。

3️⃣ 整形フェーズ(GPTでMarkdown形式に整える)

抽出したやりとりを、Markdown形式のテーブルに整形。

🗣 発音ターゲット🧠 コーチの補足・指導
wanted(やや不安げに)
自信なさげだったが、繰り返し発音した
't'で終わると'ed'は/ɪd/になります。『ウォンティッド』のように発音します。

🎯 ポイントは、生徒の様子 + 発音ターゲット + カタカナ補足を含めること。

視覚的にも「どんなやりとりだったか」が一目で伝わります。

🧪 各ステップで print() するのが沼脱出のカギ

処理がうまくいかないとき、つい「GPTのせいかな?」と思ってしまいがち。

でも実際は、渡してるデータが原因なことがほとんど!

そこで超大事なのが、ステップごとの print() チェック

  • このテキスト、GPTが読める形になってる?
  • 抽出の出力、ズレてない?
  • Markdown整形で形式は崩れてない?

ひとつずつ print() で確認していけば、「どこでおかしくなってるか」がハッキリします。

🔁 GPTくんを疑う前に、まずは自分のデータ整備をチェック!

それだけで沼からスルッと抜け出せるかもしれません。

⚠️ 注意:ブラウザとAPIでは精度が違う

同じプロンプトでも、ChatGPTのブラウザ版とAPI経由では精度が全然違います。

ブラウザ版では、ちょっとくらい曖昧でも「空気を読んでそれっぽく整形」してくれます。

でもAPI経由だと…

  • 読めないものはスルー
  • ラベルが曖昧だと適当に解釈
  • 文脈の流れも無視されがち

つまり、整形はこっちでちゃんとやらないとダメ

「GPTが賢く補ってくれるでしょ」は通用しません。

Colabやスクリプトで使うときは、“渡す前処理”が命です。

🚀 まとめ

「なんか精度出ないな~」「出力ブレるな~」って時、ついついプロンプトのせいにしがちですが……実はその前に“素材の整形”が甘かった、なんてオチが多かったりします。

今回、私は 「整形 → 抽出 → 整形」 の3ステップに分けることで、一気に沼から脱出できました。

しかも、ステップごとに print() で確認するだけで、「あ、ここで壊れてる!」って気づけるんです。やみくもにプロンプトをいじる前に、まずはGPTくんが読みやすい形で渡してるか?のチェックが先。

そしてもうひとつ重要な事実 → ChatGPTのブラウザ版と、APIは別モノです。

ブラウザは気を利かせて整えてくれるけど、APIくんは「ん?読みにくい?じゃスルーしますね」って平気でやってきます。

GPTくんは優秀だけど、“雑な素材”には全力出してくれません。

要するに、GPTを信じるなら、まずは自分の下ごしらえを信じようって話でした🍳

  • この記事を書いた人

SHIRAN

「コードは知らない。でも作れる。」AIとツールで便利を生む非エンジニア。挫折も経験しながら、今は作る楽しさを発信中。詳しくはこちら

-💭 検証・気づきログ
-, ,