母語ではない言語でプロンプトを書く
中国語で Agent にプロンプトを書くとき、私はいつも無意識のうちに言い方を婉曲にしてしまうことに気づいた。
「まず、これらのファイルに目を通してもらえますか。」
「よければ、あわせてテストも実行してもらえると助かります。」
「ここは別の実装も検討してみてはどうでしょうか。」
こうした言い方は、人と人とのコミュニケーションでは自然だ。相手に直接命令せず、判断したり断ったりする余地を残している。だが、仕事を依頼するために使うと、本当の要求まで弱くなってしまう。必ず読むべきなのか、読まなくてもよいのか。テストは成果物の一部なのか。「検討する」というのは、最終的に実際の修正まで必要なのか。
英語にすると、私はかえって直接的に書く。
Read these files first. Use the existing implementation pattern. Run the tests before you finish.
英語が本質的に中国語より直接的だからではない。実際の英語圏の職場でのコミュニケーションも同じように婉曲で、要求を疑問文で表すことさえある。“Can you take a look when you have time?” という一言は、表面上は選択肢を与えているが、具体的な文脈では「これを対応してください。しかも、もう一度催促させないでください」という意味かもしれない。
私が英語ではプロンプトをより直接的に書けるのは、単に英語が私の母語ではないからだ。
母語を使うとき、私たちは意味を伝えるだけでなく、相手との関係も自動的に調整している。どの言い方が命令のように聞こえるか。どの言い方が相手を困らせるか。どう異論を述べれば高圧的に見えないか。こうした判断はすでに語感に組み込まれていて、意識して考える必要がない。要求を書き出す前に、まず礼儀にかなうよう整えられてしまう。
母語ではない言語を使うとき、この反応はそれほど敏感ではない。使える表現が少ないため、まず最も基本的な構造を捉えるしかない。何をするのか。何に対してするのか。どこまでやるのか。何をしてはいけないのか。
言語能力が足りないことで、かえって人間関係への気遣いの一部が一時的に取り払われる。
だからといって、母語がプロンプトを書くのに向いていないわけでも、Agent にわざと無礼に接するべきだというわけでもない。母語ではない言語が本当に役立つのは、わずかな距離を生み出す点だ。その距離によって、慣れ親しんだ話し方からひとまず離れ、タスクの説明に動作、境界、完了条件が本当に含まれているかを改めて確かめられるようになる。
人に話すとき、婉曲な表現には明確な役割がある。
大人同士では、互いを自立した対等な存在とみなし、相手を一方的にしつけたり従わせたりしてよいとは考えない。成熟した断り方なら、ただ “No” の一言を投げつけるのではなく、現実的な制約を説明し、必要なら代替案を示す。上司が要求を伝えるときも、相手の尊厳と返答の余地を残すために疑問文を使うことがある。
こうしたコミュニケーションは、本当の意図を隠すためのものではない。境界を明確にすることと、関係を壊さないことの両方に配慮するものだ。言葉は柔らかくてもよいが、結論は曖昧にしてはならない。
しかし、プロンプトが向き合うのは別の関係だ。
Agent は “Read these files first” と言われても気分を害さないし、“Would you mind” の一言によって、自分が今も対等に扱われていると確かめる必要もない。それよりも、何が要求で、何が参考にすぎないのか、何を必ず終えるべきで、何を自分で判断してよいのか、どのような状況なら立ち止まって人に尋ねるべきなのかを知る必要がある。
人と人との間で使う婉曲な表現をそのまま使い、その背後にある本当の意図を明記しなければ、礼儀正しさが曖昧さに変わってしまう。
たとえば、次のように書いたとする。
可能であれば、あわせてモバイル版も確認してください。
話し手が本当に考えているのは、「モバイル版の検証は必須だ」ということかもしれない。ただ、命令のような言い方を習慣的に避けているだけだ。しかし Agent は、これを優先度の低い選択肢として読むかもしれない。より明確に書くなら、こうなる。
完了する前に、デスクトップ版とモバイル版を確認してください。通常の細部は既存のデザインに沿って処理し、インタラクションの変更が必要な場合は、改めて私に確認してください。
これでも Agent には自律的に判断する余地がある。ただ、その自律性を正しい場所に置いている。モバイル版を確認するかどうかは選択肢ではない。通常の細部をどう処理するかが選択肢なのだ。
これが「直接的」と「粗暴」の違いでもある。
粗暴とは、背景も境界も伝えず、命令だけを並べることだ。あるいは、結果が期待と違ったとき、フィードバックの代わりに皮肉や問い返しを使うことだ。直接的であるとは、目標、制約、検証方法を明確に伝え、その境界の内側では実行者に道筋を判断させることである。
良いプロンプトとは、「命令―服従」をより強硬に書くことではない。「自律―協議」の境界をより明確に書くことだ。
だが、ほどなくして別の問題にぶつかった。
今回明確に書けたからといって、次回もそれが有効とは限らない。タスクが変われば、あるいはセッションが変わるだけでも、同じ境界をもう一度説明しなければならないかもしれない。完了前にテストを実行すること、モバイル版も検証範囲に含まれること、一つの問題を直すついでに無関係なファイルまで変更しないこと。
プロンプトの書き方をさらに磨き、修正のたびに得た教訓を次のタスク説明へ加え続けることはできる。それは確かに役立つが、タスクの説明はどんどん長くなり、人間は境界を運ぶ役になってしまう。一つでも持ってくるのを忘れれば、一度解決した問題がまた起きるかもしれない。
やがて私は、ずっと文を直しているだけで、境界を保存し、効かせる仕組みは変えていなかったのだと気づいた。
母語ではない言語が解決してくれたのは、表現の問題だった。語調や暗黙の了解に隠れていた要求を、初めて表に出さざるを得なくなった。しかし、ある要求を異なるタスクで繰り返し説明しなければならないなら、問題は今回どれだけ直接的に言えたかではない。長期にわたって有効であるべき境界が、今回のタスクにしか使えない場所に置かれていることだ。
そこで必要なのは、さらに長いプロンプトではなく、Harness だ。
Harness とは、モデルの周囲で働くシステムの層である。必要なコンテキストをあらためて与え、ルールを読み込み、ツールを開放し、状態を保存し、結果を検査する。前回私が修正を求めたからといって、モデルが次の呼び出しでその修正を自動的に引き継ぐわけではない。対話が連続しているように見えるのは、周辺のシステムが関連する内容をモデルへもう一度渡しているからだ。
だから境界も、その寿命と強さに応じて異なる場所に置くべきだ。
今回のタスクにしか影響しない目標や局所的な制約は、引き続きプロンプトに書く。タスクをまたいで守るべきプロジェクトの境界は、AGENTS.md に置ける。繰り返し使う方法は、Skill として蓄積できる。観察して実行できる検証条件は、テストに任せる。本当に越えてはならない権限は、モデルが「そうしないで」という一文をいつまでも覚えていることに期待するのではなく、システムで制限すべきだ。
これらが出力を絶対に安定させるわけではない。同じコンテキストを受け取っても、推論の不確実性、指示の衝突、コンテキストの負荷によって、モデルは異なる結果を返すことがある。Harness の役割は変化をなくすことではない。重要な背景を継続的に提示し、検査できる結果を検査にかけ、引き受けられないリスクをモデルが毎回正しく判断することだけに依存させないことだ。
このことから、「母語ではない言語でプロンプトを書く」という行為も、私は捉え直すようになった。
母語ではない言語は Harness ではない。状態を保存せず、ルールを読み込まず、結果を検証することもない。それは、境界を明示するためのごく軽い練習にすぎない。慣れ親しんだ語調や人間関係の暗黙の了解がひとまず通用しなくなると、どの結果を必ず納品するのか、どの判断を委ねられるのか、どのような場合に戻って確認する必要があるのかを明確に言わざるを得なくなる。
だからといって、逆に母語ではない言語を過信してもいけない。
語彙が単純なら文は直接的になるが、判断まで粗くなることもある。“This is wrong” としか書けなければ、中国語で遠回しに言う手間は省けても、どこが間違っているのかは説明できていない。母語ではない言語は、偽りの客観性を生むこともある。文が簡潔で断固として見えても、それだけで目標そのものが明確になっているとは限らない。
より確かな方法は、母語ではない言語をルールではなく、一度の確認として使うことだ。
中国語のプロンプトが長くなり、「可以(してもよい)」「最好(できれば)」「方便的话(都合がよければ)」「要不(〜してはどうか)」といった表現がいたるところに現れたら、自分が使える最も簡単な外国語に頭の中で置き換えてみればよい。慣れ親しんだ語調から離れると、本当に伝えたいことが見えやすくなる。
- どの結果を必ず納品しなければならないのか。
- 何が参考情報にすぎないのか。
- どの判断を Agent に任せられるのか。
- どのような状況では人が決めなければならないのか。
それが見えたあとで、もう一度中国語で書き直してもかまわない。
ある境界が今回のタスクでしか重要でないなら、明確に書く。次回も重要なら、システムに保存させる。本当に越えてはならないものなら、モデルが一言だけで覚えていることに期待し続けてはならない。
私は別の言語でプロンプトを書く練習をしているつもりだった。だが実際に練習していたのは、暗黙の判断を明示的な契約として書くことだった。
母語ではない言語は、境界を見えるようにしてくれた。その境界を残すのは、Harness だ。