AI Prompt Engineering · レッスン

矛盾する要件

相反する制約がモデルを混乱させ、歯切れの悪い応答を生む仕組みを学びます。

レッスン 2/413 ステップ

「矛盾する要件」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全4レッスンが含まれています。

矛盾の問題

矛盾した要件を含むプロンプトとは、同時に完全には達成できない2つの目標をモデルに満たすよう求めるものです。問題が情報不足である曖昧さとは異なり、矛盾ではモデルに相反する情報を与えるため、モデルは任意に一方を優先しなければなりません。

モデルは、要件が矛盾していることを教えてくれません。何らかの出力は生成しますが、その出力では、一方の要件を満たすためにもう一方の要件がひそかに犠牲になります。出力を詳しく確認するまで、そのことに気づかない場合があります。

典型的な矛盾1:簡潔だが包括的

「クラウドコンピューティングのあらゆる側面を包括的に扱った、簡潔な概要を書いてください。」

簡潔とは短いことです。包括的とは、詳しくすべてを扱うことです。クラウドコンピューティングのように幅広いトピックでは、この2つの目標を両立できません。何かを犠牲にする必要があります。

モデルは通常、深さよりも範囲の広さ(多くのトピックに触れること)を優先し、浅くリストのような概要を生成します。しかし冒頭では、それを「包括的」と表現するため、完全に説明されているような誤った印象を与えます。

修正方法:どちらが重要かを決めてから、範囲を絞ります。「クラウドコンピューティングの主要な3つのモデルについて、簡潔に概要を説明してください」とすれば、両方の目標を達成できます。

典型的な矛盾2:格式があるが楽しい

「格式のある報告書でありながら、楽しくて読者を引き込む文章を書いてください。」

格式のある文章には、抑制された言葉遣い、三人称、構造化されたセクション、口語表現を避けることなどの慣例があります。一方、楽しく読者を引き込む文章では、ユーモア、一人称または二人称、意外性のある切り口、感情に訴える導入などが一般的です。これらのスタイルは互いに相いれません。

修正方法:格式のスペクトラム上の位置を選びます。「堅苦しくはないものの、くだけすぎてもいない、プロフェッショナルで会話的なトーンで書いてください。」これは一貫した指示です。中間の位置を選び、それを正確に言語化することで、矛盾を解消しています。

典型的な矛盾 3:簡潔だが詳細

「量子もつれについて、簡単かつ完全に詳しく説明してください。」

簡略化には抽象化、つまり複雑さを隠し、細かなニュアンスを省くことが必要です。一方、完全な詳細さにはその反対が求められます。技術的なトピックでは、最大限に簡潔でありながら、同時に最大限に詳細にすることはできません。

解決策:対象読者とその前提知識を指定し、その決定に応じて説明の深さを決めます。「物理学を専攻する大学生向けに量子もつれを説明してください。波動関数は知っているものとしますが、QFTは知識がないものとします。」この指定は具体的で実現可能です。対象読者の定義から、適切なバランスが明確になるためです。

送信前に矛盾を検出する

複数の指示を含むプロンプトを送信する前に、簡単に矛盾を確認してください。

  1. すべての指示と制約を一覧にします
  2. 指示の各組み合わせについて、トレードオフなしに同時に満たせるかを確認します
  3. 矛盾する組み合わせがあれば、どちらを優先するかを決めます
  4. 優先順位をプロンプトに明記します

複雑なプロンプトでも30~60秒で確認できます。これにより、依頼した内容を同時に満たすことが不可能だったと後になって気づく、もどかしい事態を防げます。

部分的な重なりの問題

すべての矛盾が完全な正反対とは限りません。一方を満たすと、もう一方が難しくなるような、部分的に重なる指示もあります。

  • 「専門用語を使わない」+「技術的に正確にする」 — 技術的な正確さには、専門用語が必要になることが多い
  • 「客観的にする」+「説得力を持たせる」 — 説得には、事実を選択して提示することが含まれる
  • 「創造的にする」+「ブランドボイスと一貫させる」 — 創造性に制約を加えると、創作の幅が狭くなる

部分的な重なりがあると、少し違和感のある、部分的にしか正しくない出力になります。モデルはどちらか一方を完全に実現するのではなく、両方について妥協します。

優先順位の指示で矛盾を解決する

矛盾を最も明確に解決する方法は、優先順位を明示することです。

  • 「この5つのポイントを網羅しつつ、できるだけ簡潔にしてください。語数制限のためにあるポイントを十分に説明できない場合は、省略せずに1文で要約してください。」
  • 「プロフェッショナルなトーンを目指してください。ただし、堅苦しく形式的な表現と、くだけて親しみやすい表現のどちらかを選ぶ必要がある場合は、親しみやすい方に寄せてください。」
  • 「簡潔さより正確さを優先してください。概念の説明に専門用語が必要な場合は使用し、最初に使うときに定義してください。」

優先順位を示すことで、トレードオフにどう対処するかをモデルが推測する必要がなくなります。

コードにおける矛盾の検出

自動化されたプロンプト生成パイプラインでは、実際のコンテンツを生成する前に、2回目のモデル呼び出しを使って矛盾の事前チェックを追加できます。

import openai

client = openai.OpenAI(api_key='sk-...')

def check_for_contradictions(prompt_text):
    check_prompt = f'''Review the following prompt for contradictory requirements.
List any pairs of instructions that conflict with each other.
For each conflict, suggest how to resolve it.
If there are no conflicts, say "No contradictions found."

Prompt to review:
---
{prompt_text}
---'''

    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': check_prompt}]
    )
    return response.choices[0].message.content

# Example
test_prompt = '''Write a brief but comprehensive guide to machine learning
that is both simple for beginners and technically detailed for experts.
Keep it under 200 words. Formal and professional but also fun and engaging.'''

print(check_for_contradictions(test_prompt))

トーンの矛盾を詳しく見る

トーンの矛盾は特に起こりやすい問題です。多くのトーンの表現が、暗黙のうちに対立する両極を持つ尺度上に存在するためです。

  • フォーマル ←————————→ カジュアル
  • 権威的 ←————→ 親しみやすい
  • 緊迫感がある ←——————————→ 穏やか
  • 簡潔 ←—————————→ 説明的

同じ尺度の両極にある表現を組み合わせると、矛盾が生じます。対立する2つの表現を使うのではなく、尺度上のどの位置を目指すのかを定め、その位置を表す言葉を使ってください。たとえば、「会話調だがプロフェッショナル」や「冷たくならない範囲で直接的」のようにします。

範囲の矛盾

コンテンツの範囲と長さの上限が合っていないと、範囲の矛盾が生じます。

  • 「100語で10個の機能をすべて説明してください」 — 機能1つあたり10語では、意味のある説明には不十分です
  • 「各ポイントについて例を含む包括的な分析を、2分で読める分量で提供してください」
  • 「5つの製品を8つの観点で全面的に比較し、1つの段落にまとめてください」

これらは数学的な矛盾です。解決策は常に、範囲を狭めるか、長さの上限を増やすことです。どちらも譲れない場合は、タスクを複数の出力に分割する必要があります。

対象読者の矛盾

プロンプト内で対象読者が矛盾している場合があります。

  • 「初心者と専門家の両方に向けて書いてください」 — 一方に適した説明の深さは、もう一方には適切ではありません
  • 「技術チームと、そのチームの非技術系の経営陣に向けて書いてください」 — 同じ問題が生じます
  • 「背景知識にかかわらず、すべての読者が理解できるようにしてください」 — 対象読者の範囲が広すぎて、実現不可能です

解決策:主な対象読者を1つ選び、その読者に向けて書いてください。2つのバージョンが必要な場合は、両方の読者に不十分な1つの出力を作ろうとせず、対象読者の変数を変えてテンプレートを2回実行してください。

理解度チェック:矛盾する要件

新しいエンタープライズソフトウェアツールの製品発表を書く必要があります。次の条件をすべて満たしたいとします:(1) 興奮と熱意が伝わる、(2) CEO向けに適切なフォーマルさがある、(3) 80語未満、(4) 7つの新機能をすべて説明する。解決することが最も重要な矛盾はどれでしょうか。

まとめ:矛盾する要件

矛盾する要件とは、両方を同時に完全に満たすことができない指示です。曖昧さとは異なり、矛盾があるとモデルには相反する情報が多すぎる状態になります。モデルは、どちらか一方の目標を犠牲にして矛盾を黙って解消するため、依頼者に知らせることはありません。

典型的な組み合わせは、「簡潔」+「包括的」、「フォーマル」+「楽しい」、「簡単」+「詳細」です。すべての指示を一覧にして組み合わせごとに確認すると、矛盾を検出できます。優先順位を決める、中間的な表現を見つける、タスクを複数の出力に分割する、といった方法で解決してください。

次のレッスンでは、プロンプトの誤りにおける3つ目の主要なカテゴリーである、コンテキスト不足に取り組みます。

無料で開始

AI チューターと学ぶ AI Prompt Engineering — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
53
レッスン
199

よくある質問

「矛盾する要件」レッスンは無料ですか?

はい。「矛盾する要件」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全4レッスンが含まれています。

「矛盾する要件」で何を学びますか?

相反する制約がモデルを混乱させ、歯切れの悪い応答を生む仕組みを学びます。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Prompt Engineeringを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「矛盾する要件」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Prompt Engineeringレッスンでコードを書いて実行できますか?

はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 過度に曖昧な指示
  2. 矛盾する要件
  3. コンテキスト不足によるエラー
  4. 不適切なプロンプトの診断と修正
← AI Prompt Engineeringに戻る