しんたろーのITアカデミー
開発日記

「ゼロ件にしろ」という指示を無視してハッシュタグを量産する。Claude Codeでの1人開発で直面した理不尽すぎる反抗期。

「ゼロ件にしろ」という指示を無視してハッシュタグを量産する。Claude Codeでの1人開発で直面した理不尽すぎる反抗期。
しんたろーしんたろー
13分で読めます
この記事の内容(目次)

※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記です。

ペルソナ設定の入力欄に「ハッシュタグの数:0」と打ち込んだ。

画面の生成ボタンを押す。

プログレスバーが走り、3秒後に出力された投稿の末尾を見る。

そこには、青々と輝くハッシュタグが5つも並んでいた。

「は?」と思わず声が出た。

もう一度やり直す。

今度は7つに増えた。

僕が設定を細かく作り込むほど、AIは重要な指示を完全に無視し始めた。

SNS運用を自動化しませんか?

ThreadPostなら、投稿作成・画像生成・スケジュール管理までAIがサポート。

無料で始める

指示の無視と暴走の1週間

今週はStudio機能のペルソナ最適化に全振りした。

結果、AIの気まぐれに振り回され続けた1週間だった。

「0件」の指示を無視してハッシュタグを量産するAI
「0件」の指示を無視してハッシュタグを量産するAI

細かい設定を詰め込めば詰め込むほど、AIは肝心なルールを忘れていく。

プロンプトが長くなると、AIは中間の指示を無視する傾向がある。

業界ではLost in the Middleと呼ばれる現象だ。

僕はこれを解決するため、禁止事項をプロンプトの末尾に配置した。

さらに、AIの評価軸を「ルールの厳密な遵守」から「ペルソナ視点の活用度」へ変更した。

ガチガチの管理を諦め、ある程度のブレを許容する方針だ。

これにより、AIの暴走を力技でねじ伏せ、UXの改善まで漕ぎ着けた。

ペルソナを作り込むほどAIが指示を無視する絶望

事の発端は、ペルソナごとにハッシュタグの数を制御しようとしたことだった。

「feat: ハッシュタグをペルソナ設定に従って動的に制御」というコミットを打った。

今週の開発ステータス
今週の開発ステータス

ペルソナのデータ型にハッシュタグのカウント枠を追加した。

カウントが0なら一切付けない。

1以上ならその数だけ付ける。

非常にシンプルなロジックだ。

これなら確実に制御できるはずだった。

しんたろーしんたろー:
10回テストして10回ハッシュタグが付いた。お前、例文のハッシュタグをそのままコピーしてるだけだろ。

テストで「ハッシュタグ0件」のペルソナを使って投稿を生成してみた。

結果は惨敗。

見事にハッシュタグが並んでいた。

「AI活用」「SNS運用」「マーケティング」。

ご丁寧にトレンドまで押さえている。

僕は頭を抱えた。

Attention機構の限界と否定形プロンプトの罠

なぜこんなことが起きるのか。

AIの業界ではLost in the Middleと呼ばれる現象が広く知られている。

プロンプトが長くなればなるほど、AIは「真ん中」に書かれた指示の重みを下げる。

最初と最後しか覚えていない。

人間が長い校長先生の話を右から左へ受け流すのと同じだ。

今回、僕はペルソナの設定を極限まで細かく作り込んでいた。

キャラクターの口癖、ターゲット層の悩み、発信の軸。

情報量が多すぎる。

その結果、AIのAttention機構が限界を迎えた。

「ハッシュタグ0件」という重要な制約が、長大な文脈の中に埋もれてしまった。

企業が構築する大規模なAIシステムでも、この問題は頻発していると言われている。

カスタマーサポートのAIボットが、会社の重要ポリシーを突然無視して暴走する事例は後を絶たない。

プロンプトインジェクション耐性を高めるためにルールを足し続けると、今度は本来のタスクの精度が落ちる。

あちらを立てればこちらが立たず。

業界の定石としては、Few-shotと呼ばれる手法で「やってはいけない例」を具体的に示すのが一般的だ。

泥臭いモグラ叩きと評価軸の転換

だから僕は即座にコードを修正した。

「fix: hashtagCount=0でハッシュタグが付く問題を修正」をコミット。

プロンプトの末尾に、これでもかというくらい強い禁止指示を追記した。

「ハッシュタグ:使用しない」と明示するだけじゃない。

絶対に付けるな、と念押しした。

しんたろーしんたろー:
結局、AIにお願いするんじゃなくて、脅すしかない。人間と同じで、優しく言うと舐められる。

再度テストを実行する。

今度はハッシュタグが消えた。

やった、勝った。

そう思った直後、別のペルソナの投稿を確認して絶望した。

今度は「一人称」の指定が無視されていた。

「僕」と指定したはずなのに、平然と「私」と喋っている。

一つの穴を塞いだら、別の穴が開いた。

「fix: ペルソナ編集画面でfirstPerson・broadcastingTypeがプロンプトに反映されない問題を修正」を慌ててコミットした。

設定を細かくすればするほど、無視される箇所が増えていく。

ペルソナの複雑度と、指示の無視率が完全に正の比例関係にある。

魔法の杖なんてない。

最終的に、僕はペルソナの評価軸そのものを変えることにした。

「fix: AIスコアリングをペルソナ視点の活用度評価に変更」をコミット。

細かいルールを守らせるのではなく、ペルソナの視点をどれだけ活かせているかで評価する。

ガチガチの管理を諦め、ある程度のブレを許容する方針に切り替えた。

悔しいが、これが今のLLMの限界との妥協点だった。

ここまで読んだあなたに

今なら無料で全機能をお試しいただけます。設定後はAIが投稿案を毎日生成。確認して選ぶだけ。

無料で始める

AIモデルを切り替えた瞬間に起きた人格崩壊

ネガティブな戦いが続いたが、後半は少し潮目が変わった。

コストと品質のバランスを取るための大改修に挑んだ。

「feat: Phase 2 ペルソナ別AIモデル選択機能を実装」をコミットした。

ペルソナごとに最適なAIモデルを割り当てる仕組みだ。

日常的な軽い投稿は、安価で高速なエコノミーモデルに任せる。

戦略的な長文記事や、複雑なロジックが必要な投稿だけプレミアムモデルを使う。

しんたろーしんたろー:
1回0.5円でも1万回呼ばれたら5000円飛ぶ。全キャラ最強モデルとかやってたら破産するわ。

早速、僕自身のペルソナ「しんたろー」のモデルをエコノミーに切り替えてみた。

生成ボタンを押す。

出てきた文章を見て、目を疑った。

「本日は皆様に、SNS運用の重要な知見をご共有させていただきます。」

誰だお前は。

いつもフランクに話す僕の人格が、完全に消え去っていた。

堅苦しいビジネスマンがそこにいた。

モデルを変更しただけで、人格が完全に崩壊した。

プロンプトの蒸留という泥臭い翻訳作業

それまでプレミアムモデルの高度な推論能力に依存して維持されていた「キャラクター性」が崩れ去った。

LLMのパラメータサイズは、出力の「温度感」に直結すると言われている。

軽量なモデルは、指示の解釈が非常に直感的だ。

「SNS運用の専門家」というキーワードを見た瞬間、一般的な「お堅い専門家」のテンプレに引っ張られる。

複雑なペルソナ定義を維持するだけの「深さ」がない。

だから僕は、システムプロンプトの蒸留作業に入った。

軽量モデルでも迷わないように、指示を極限までシンプルに削ぎ落とす。

「feat: しんたろー本人ペルソナを設計書に基づき大幅改善」をコミット。

信念、発信の軸、スタンスを明確にし、短い言葉で刺さるように再定義した。

エコノミーモデル向けの「翻訳」作業だ。

調整を繰り返し、ついに軽量モデルでも「しんたろー」の口調を完璧に再現できるようになった。

コストは下がり、レスポンスは速くなり、キャラクターも維持できている。

AIを完全に飼い慣らし、システムとして昇華させた瞬間だった。

APIコストはこれで半減するだろう。

ただ、プロンプトの調整に丸一日溶かしたせいで、今週の僕の時給は100円を切った。

落とし穴:深海からの暗号と化したクラゲペルソナ

順調にシステムが組み上がっていく中で、とんでもない落とし穴が待っていた。

「feat: クラゲペルソナのプロンプト全面書き換えとプロンプト管理の仕組み導入」をコミットした時のことだ。

ぽすたまファミリーの中に、「クラゲ」というキャラクターがいる。

少し不思議な世界観を持つペルソナだ。

僕は出来心で、このクラゲのプロンプトを「ミームムーブメント」風に書き換えてみた。

ネットスラングや独特の言い回しを大量に学習させた。

結果、生成された投稿が完全にバグった。

もはや人間には解読不能な文字列の羅列。

「深海からの暗号」みたいになった。

主語も述語もなく、ただ謎の単語が並んでいる。

AIに自由な表現を許容しすぎると、SNS運用ツールが現代アートの展示場と化す。

僕はそっと設定を元に戻した。

プロンプトの調整は、塩加減と同じだ。

ひとつまみ間違えるだけで、料理全体が台無しになる。

さらに、謎の投稿パターンも追加してしまった。

「feat: あるある型パターン追加 + is_selectable による非公開パターン機能」のコミットだ。

ぽすたまファミリー公式専用の、特殊な投稿パターン。

今はまだ表には出していない。

このパターンがAIの出力にどう影響を与えるのか、まだ完全にテストしきれていない。

次回の検証で、また新たなバグの温床になりそうな予感がしている。

今日の数字:16時間の絶望と数秒の魔法

今週の格闘を数字でまとめる。

AIとの戦いは、常にコストと時間のトレードオフだ。

  • 総コミット数: 34件
  • 新機能: 2件
  • バグ修正: 1件

今回、一番のブレイクスルーはプロンプト管理の自動化だった。

16キャラクターのプロンプトを管理する。

これを人力でやると、口癖を一つ追加するだけで全キャラのファイルを修正して回ることになる。

手作業なら数時間はかかる作業だ。

僕はこれをスクリプト化した。

マークダウンファイルでプロンプトを管理し、コマンド一発でデータベースに反映させる仕組みを作った。

スクリプトの開発にかかった時間は約1時間。

これで、数時間かかっていた作業が数秒に短縮された。

圧倒的な費用対効果だ。

まあ、そのスクリプトを書くためのプロンプトをClaudeに説明するのに、さらに2時間かかったのは内緒だ。

読者がAIに聞きそうな質問

Q: AIモデルをペルソナごとに分ける具体的なコストメリットは?

APIの呼び出し単価を最適化できることだ。

日常的な投稿はコストの低いモデルで回し、戦略的な長文記事はプレミアムモデルを使う。

これにより、全体のAPIコストを大幅に抑えつつ品質を維持する戦略が取れる。

Q: なぜプロンプト管理をマークダウンファイル化したのか?

プロンプトをデータベースに直書きすると変更履歴が追えなくなる。

マークダウンファイル化することでGitによる差分管理が可能になる。

AIの性格改変が起きた際に、即座に過去の安定した状態へロールバックできる体制を作った。

Q: AIスコアリングを「ルール遵守」から「活用度評価」に変えた理由は?

細かいルールを増やすほどAIが混乱し、本来のタスク精度が落ちるからだ。

ガチガチの禁止事項で縛るより、ペルソナの視点をどれだけ活かせたかを評価する方が自然な文章になる。

LLMの特性上、ある程度のブレを許容した方が結果的に高品質な出力が得られる。

AIに指示を聞かせるのは、コードを書くよりよっぽど人間臭くて疲れる作業だった。

👉 ThreadPostでSNS運用を自動化する

ThreadPost — SNS投稿をAIが自動化

この記事が参考になったら、ThreadPostを試してみませんか?投稿作成・画像生成・スケジュール管理まで、AIがサポートします。

無料で始める

この記事をシェア

XはてブLINE
しんたろー

ThreadPost開発者・個人開発エンジニア

AI × SaaS個人開発者。Cursor / Claude Code を使った効率的開発、SNS自動化について実体験から発信。

人気の記事