prompting has a reputation for being “vibes-based.” You type something, the model answers, you tweak a sentence, it gets. あなたは何かを入力し、モデルは答えます。 うまくやっていれば、うまくやっていても、うまくやっていても、うまくやっていても、 軽く それは重大なものにとって悪夢です:コンプライアンステキスト、データパイプライン、コード生成、または「チームの前で私を恥じないでください」出力。 以下はアップグレード: . Prompt Reverse Engineering それはまさにそれが聞こえるように: , then apply targeted fixes—like debugging, not guesswork. それから、デバッグなどのターゲット修正を適用します。 use the model’s wrong answer to backtrack into what your prompt failed to define 悪い出力をモデルの言い方として考えてください: 「何が大事か言わなかった」 「何が大事か言わなかった」 これを繰り返しのワークフローに変えましょう。 なぜ逆エンジニアリングはランダム・プロンプト・ツイッキングを打つのか あなたが「良い見た目」のプロンプト(明確な要求、礼儀正しいトーン、合理的な制約)を書くときでも、モデルはまだ欠けています: あなたが気にする時間の窓は、 あなたが期待する完璧さは、 あなたのダウンストリームコードが必要なフォーマット、 モデルが留まることを望む役割は、 「正しい」の定義 逆エンジニアリングは、欠けているスペックを特定する方法を提供します。 あなたのスピードを小説に吹き込むことなく。 fast 4つの失敗モード(そして彼らが本当にあなたに言っていること) ほとんどの迅速な失敗はこれらのバケットの1つに落ちます. バケットの名前が付くことができれば、通常、1 つのパスでプロンプトを修正できます。 (1)事実上の失敗 答えは確実に間違った事実を述べ、年を混ぜ、あるいは数字を発明する。 Symptom: 知識密集したタスク:市場レポート、学術的な書き方、政策概要。 Typical trigger: What your prompt likely missed: 明示的な時間帯(「2023年暦年」と「過去12カ月」) ソース要件(引用、名称データセット) モデルが知らないときのパフォーマンス あなたは尋ねる: モデルは2022の数字を使用して回答し、どこでそれらを得たかを決して言わない。 Example (UK-flavoured): 「2023年の世界販売でトップ3のEVブランドを分析する」 Prompt patch pattern: 「事実の境界線」を追加する:年、地理、単位。 引用や透明な「私は確信がない」バックバックが必要です。 正確な数字が利用できない場合にデータカットを指定するようにしてください。 2) 壊れた論理 / 欠けているステップ 出力は信じられないように見えますが、ステップを飛び越え、結論を跳ね落としたり、プロセスであるふりをする「アウトライン」を提供します。 Symptom: 手順、デバッグ、多段階推論、建築計画。 Typical trigger: What your prompt likely missed: 「Cover All Core Steps」 “Explain Dependency/オーダー” 「固定フレームワーク(チェックリスト/パイプライン/レシピ)を使う」 あなたは尋ねる: それは「欠けている値を処理する」と「外部を削除する」だけをリストし、それを1日と呼びます。 Example: 「Pythonの完全なデータクリーニングワークフローを説明する」 Prompt patch pattern: A → B → C → D (A → B → C → D) 注文の理由を教えてください。 意思決定テスト(「このステップが必要であることをどのように知ることができますか?」)が必要です。 (3)ドライブ形式 Markdown テーブル / JSON / YAML / コード ブロックを要求します...そしてそれはブログ投稿を書いているように友好的な段落を返します。 Symptom: 機械のためのすべての意味:構造化された出力、コンフィギュレーションファイル、パイロード、テーブル。 Typical trigger: What your prompt likely missed: 厳格性(「出力はJSONのみ」) スケジュール制限(キー、タイプ、必要なフィールド) a short example (few-shot) the model can mimic. モデルは模することができる。 あなたは尋ねる: It responds in prose and blends vendor + release date in one sentence. プロセスで回答し、ベンダー + リリース日を1つの文で混合します。 Example: 「3つの人気のあるLLMのマークダウンテーブルを教えてください」 Prompt patch pattern: スケジュールを追加し、「追加キーなし」を追加します。 「No Prose Outside the Block」を追加します。 小さなルートを例にします。 タイトル/Tone Drift あなたは小児科医の説明を求め、医学雑誌の抽象を取得します。 Symptom: ロールプレー、顧客サポート、コーチング、 stakeholder comms。 Typical trigger: What your prompt likely missed: 役割の話し方(読書レベル、温かさ、タブージャーガン) 役割の主な目的(安心、説得、緩和) 禁止されたコンテンツ(「医療ジャルゴを避け、避けられない場合に用語を定義する」) Prompt patch pattern: 視聴者を指定する(「心配する親」、「若手エンジニア」、「CTO」)。 トーンルールを指定する(「Friendly, Non-Judgemental, UK English」)。 「Do / Don't Vocabulary」 リバースエンジニアリングの5ステップワークフロー これは「止めて推測する」ループで、軽量に保ち、一度に1回ずつ変更してください。 Step 1: Pinpoint the deviation(正確なミスを表示) 予想された出力をチェックリストとして記録し、出力が異なる場所を強調します。 チェックリストの例: 2023年(平成26年) 市場シェアを含む。 情報源 ↓↓ トップ3ブランドを比較する。 ミスを正確に記述できないなら、正確に修正できない。 ステップ 2: Infer the missing spec (the prompt defect) それぞれの偏差に対して、次のように尋ねる。 どんな指示がこれを防ぐだろうか。 モデルが間違った方向に「解決」した曖昧さとは? 典型的な欠点: 欠けている境界線(時間、地域、単位) 完全性の欠如、 出力プログラムの欠落、 トーン/ロール制限の欠如 Step 3: Test the hypothesis with a minimal prompt edit. ステップ3:最低限のプロンプト編集で仮説をテストする 1つの欠陥をパッチして再起動しないでください。 出力が予想通りに改善した場合、あなたの仮説は正しかった。 STEP 4: Targeted Optimization Pattern を適用する 確認すると、最小の持続可能な修正を適用します。 境界線条項は、「2023年(1月~12月)のデータを使用し、不確実な場合はそう言う」です。 「このスケジュールに匹敵する有効な JSON を返します。 タイトルは「これら6つのステップを含む」です。 タイトルは「I'm new; avoid jargon」です。 Step 5: Record the change (build your prompt changelog) (変更を記録する) これは、ほとんどの人々が飛び越える部分であり、プロンプトをエンジニアリングの実践に変える部分です。 小さなログを保持する: 早速オリジナル 失敗した生産モデル 欠陥仮説 Patch 応用 結果 時間の経過とともに、「共通の失敗→標準のパッチ」の個人的なライブラリを構築します。 A full worked example: fixing a "data cleaning workflow" prompt 物事をきちんとやってみよう。 初期スピード 「Pythonを使用して、ステップとコードでデータの完全なクリーニングプロセスを書きます。 「Pythonを使用して、ステップとコードでデータの完全なクリーニングプロセスを書きます。 生産(悪い) 返すのは2つの項目のみです。 欠けている価値観 outliers を削除する そして、文脈もなく、秩序もなく、決断のチェックもなくコードを捨てます。 逆エンジニアリング診断 Deviation points 欠けているコアステップ(ダブルレート、タイプキャスト、標準化) 命令の正当化なし コード コメントと適用性のノートが欠けている Prompt defects No “core steps list” → モデルは部分的なサブセットを選択します No order constraint → 任意の順序でモデル出力 No “explain when to use” → コードがコピー/ペストバイトになる The patched prompt (minimal but specific) Pandas を使用すると、次の順序でデータの完全なクリーニングワークフローを説明します。 duplicates → 2) data types → 3) missing values → 4) outliers. For each step include: purpose, when it applies, and commented code. Also state how to detect whether the step is needed.” Pandas を使用すると、次の順序でデータの完全なクリーニングワークフローを説明します。 duplicates → 2) data types → 3) missing values → 4) outliers. For each step include: purpose, when it applies, and commented code. Also state how to detect whether the step is needed. それぞれのステップには、目的、それが適用されるとき、およびコメントされたコードが含まれます。 結果(何が良いか) 下はA ハードコードが使えませんから、ハードコードが使えませんように。 盲目的に、我々はDtypeに支配する。 slightly tweaked fillna(0) import pandas as pd def clean_frame(df: pd.DataFrame) -> pd.DataFrame: # 1) Duplicates: reduce noise before anything else dup_count = df.duplicated().sum() if dup_count: df = df.drop_duplicates().copy() # 2) Types: make sure comparisons and maths behave # Example: parse dates if you expect time-series logic later if "created_at" in df.columns: df["created_at"] = pd.to_datetime(df["created_at"], errors="coerce") # 3) Missing values: strategy depends on data type and meaning for col in df.columns: if df[col].isna().any(): if pd.api.types.is_numeric_dtype(df[col]): # Use median for robustness (less sensitive than mean) df[col] = df[col].fillna(df[col].median()) else: # For categorical/text, choose a clear placeholder df[col] = df[col].fillna("Unknown") # 4) Outliers: apply only to numeric columns where it makes sense num_cols = df.select_dtypes(include="number").columns for col in num_cols: q1 = df[col].quantile(0.25) q3 = df[col].quantile(0.75) iqr = q3 - q1 if iqr == 0: continue # no spread, no meaningful outliers lower = q1 - 1.5 * iqr upper = q3 + 1.5 * iqr df = df[(df[col] >= lower) & (df[col] <= upper)] return df これは「完璧なデータクリーニング」ではありません(ドメイン次第ですが)。 決定コントロールを含む一貫した、防御可能なパイプライン - 正確にあなたの最初のプロンプトが要求しなかったもの。 は 隠された:モデル能力の限界 反転エンジニアリングは魔法ではありません。時には、データがないため、モデルが間違っていることがあります。 境界線を厳しくし、情報源を求めて、同じ事実上の失敗を見た場合、ループを止めましょう。 Sane Fallback を追加する: 「知らないなら、知らないと言いなさい」 「あなたが自信を持っている最後の1年を教えてください」 「どの情報源に相談するべきか」を教えてください。 これは幻覚を有用な答えに変える。 一般的なミス(そしてそれらを避ける方法) ミス1:「Please be correct」を修正する それは制約ではなく、願望です。 代わりに、境界線 + 検証 + バックバックを介して正確性を定義します。 ミス2:過剰な制約 10つの無関係なルールを追加することで1つの欠陥を修正すると、すぐに膨らみ、順守が悪化します。 あなたの不安ではなく、欠点をパッチしてください。 ミス3:仮説を正当化しない 最小限のパッチで再起動し、予想される改善が見られない限り、修正が機能したと主張することはできません。 ユニットテストとして扱います。 このスティックを作る実践的な習慣 失敗タクソノミー(事実 / 論理 / 形式 / 役割)を保持します。 One-patch-per-run を使用してデバッグします。 早急にChangelogを作成します(本気で、これはクーデターコードです)。 構造が必要な場合は、スケジュール + 小さな例を使用します。 信頼性が必要なとき、不確実性の開示を要求する。 間違った答えは不快なだけでなく、彼らは あなたがそれらを読むことを学ぶなら、あなたは「促す」のをやめ、始めます。 . 情報 engineering