AIに作業を頼んだのに、できませんと返ってきます。指示を分解して、前提を書き足して、出力の形も指定しました。会話が長くなったせいかと思って、新しく開き直してもみました。それでも、同じところで止まります。
よく言われる答えは、だいたい一つです。うまくいかない原因はAIの性能ではなく、指示の書き方のほうにある。曖昧さを減らし、目的を一つに絞り、前提を省略しない。実際そのとおりで、これで直ることは多いと思います。
この記事が立てる問いは違います。指示の書き方を全部直しても止まるとき、そこには何が残っているのでしょうか。
指示は届いている。届いた先から、そこへ行く道が出ていない
AIに何かを頼むとき、話は2段階に分かれています。何をすべきかをAIが理解する段階と、その作業をAIが実際に行う段階です。
指示の書き方を直すというのは、このうち前半だけを直しているということになります。後半で止まっているなら、前半をいくら磨いても結果は変わりません。理解のほうは最初から済んでいるからです。
よく紹介される直し方は、どれも前半のための道具です。役割を決める、制約を並べる、出力の形を指定する、一度に一つだけ頼む。これらは理解のずれを消すのによく効きますし、実際に効いた場面も何度もありました。
私の場合、止まっていたのは自分のサイトへ原稿を送る作業でした。上に挙げた直し方は、ひととおり全部やっています。それでも結果が1ミリも動かなかったので、途中で見ている場所が違うと気づきました。
効かなかったのは、ずれていなかったからです。AIは何をすべきか分かっていて、ただ、そこへ行けませんでした。
相手の名前は引けるのに、繋がらない
見分ける手がかりの1つ目です。
インターネットで相手にたどり着くには、2つの段階があります。名前から住所を調べる段階と、調べた住所へ実際に繋ぐ段階です。この2つは別の仕組みで動いています。
私の環境では、名前を調べるところまでは通っていました。自分のサイトの住所は、きちんと返ってきます。ところが、その住所へ繋ごうとすると、何も返ってきませんでした。
これは、相手側が落ちているのとは違う状態です。相手が落ちているなら、繋いだ先から何らかの応答が返るか、そもそも住所も引けないかのどちらかになることが多い。名前だけ引けて繋がらないときは、こちら側で止められている形を疑います。
関係のない相手も同じように落ちるなら、拒まれているのではない
2つ目の手がかりで、これがいちばん決定的でした。
最初は、自分のサイトが拒まれていると思っていました。何か設定を間違えたのだろう、と考えていたのです。
そこで、まったく関係のない相手を試しました。説明用に用意された、誰でも見られるページです。これも同じように落ちました。一方で、開発でよく使われるサービスのほうは、問題なく繋がります。
ここで判定がつきました。自分のサイトが拒まれているのではありません。あらかじめ名簿に載っている相手だけが通り、載っていない相手は一律で落ちる、という形でした。誰かに嫌われているのではなく、名簿があるという話です。
自分に関係のあるものだけを試していると、この判定にはたどり着けません。関係のないものを1つ試したことが、答えを決めました。
同じAIでも、動いている場所が変われば届く範囲が変わる
この形には設計としての名前がついていて、広く使われています。外へ出る通信を既定で全部止めておき、必要な宛先だけを名簿に載せる。AIエージェントを動かす環境では、標準的な組み方です。
名簿に無いところへのHTTPとHTTPSは、すべて落ちます。実装によっては、生の通信や名前の解決まで落とすものもあります。私の環境では名前の解決だけは通っていたので、ここは環境によって差が出ます。
そしてもう一つ、この設計には共通して入っている項目があります。利用者の手元の機械や、社内のネットワークへ戻る通信も塞ぐ、という項目です。
私がスケジュール実行のセッションから手元の機械へ届かなかったのは、設定の漏れではありませんでした。届かないように作られていたのです。
ここからは私の解釈です。学説として確立された議論ではありませんので、そのつもりで読んでください。実測したのも1つの環境だけなので、どこでも同じとは言えません。
同じAIでも、置かれている場所によって、できることが変わります。変わるのは賢さではなく、そこから届く範囲のほうです。
この2つが混ざりやすいのは、症状が同じに見えるからだと思います。できませんという返事が来るところは、どちらも変わりません。賢さが足りなくてできないのか、そこへ行けなくてできないのかは、返ってきた文面からは区別がつかないのです。だから人は、まず賢さのほうを疑います。
同じ相手に、読めるのに書けないことがある
もう少し細かいところも書いておきます。
同じ環境の中でも、通り道は1本ではありません。読み取りのために用意された仕組みのほうは、名簿の外側にも届きます。私の場合、自分のサイトの記事を読むことは、最初からできていました。
ただ、その仕組みは認証を通せません。だから読むことはできても、書き込むことはできない。同じ相手に対して、片方だけができる状態です。
この状態は、能力の話としては説明がつきません。読めるのだから届いているはずだ、と考えると、そこで行き止まりになります。届いているのは一方の経路だけで、もう一方は塞がっている。それだけのことでした。
だから、一部だけができるという症状を見たときに、AIの気まぐれだと思わないほうがいいと思います。たいてい、通っている経路と塞がっている経路が別々にあります。
場所を移すことのコストを、正直に書いておく
公平を期すために、逆側も書きます。
手元の機械で動かせば、名簿も、戻れないという制約も、まとめて消えます。ただし、消えるのは制約だけではありません。
一つは、機械が起きていないと何も起きなくなることです。クラウドで動かしていたあいだは、こちらの機械の状態と無関係に走っていました。手元へ移すと、フタを閉じただけで止まります。
もう一つは、名簿が守っていたものが無くなることです。名簿は不便ですが、間違えて外へ出してしまう事故も同時に止めています。手元では、その歯止めが自分の判断だけになります。
そして、環境が自分専用になるぶん、うまく動かないときに同じ状態を再現できる人がいません。調べても、同じ症状の記録が見つかりにくくなります。
判断基準は、同じ指示を別の場所で走らせたら通るかどうかである
明日から使える形にすると、確かめ方は1つです。
指示を一文字も変えずに、別の場所で同じことを走らせてみる。手元の機械でも、別のサービスでも構いません。
通ったなら、指示は最初から正しかったことになります。直すべきなのは書き方ではなく、走らせる場所のほうです。
通らないなら、そのときに指示の側を見ます。順番としてこちらが後になるだけで、世の中に並んでいる助言はどれも正しいものです。曖昧さを減らす、目的を一つに絞る、前提を省略しない、長くなった会話を仕切り直す。場所の問題を先に外しておけば、これらはそのまま効きます。
困るのは、ずれていない場合にも同じ作業を続けてしまうことです。効かない原因が別の場所にあるので、何時間やっても手応えが出ません。そして手応えが出ないぶん、まだ書き方が足りないのだと思ってしまう。実際には、最初から書き方の話ではありませんでした。
Q:AIに頼んだ作業が、指示をどう直してもできません。何を見ればいいでしょうか。
A:指示を変えずに、別の場所で同じことを走らせてみてください。手元の機械で通るなら、原因は指示ではなく実行される場所にあります。判断の手がかりは3つあって、相手の名前は引けるのに繋がらない、自分と関係のない相手も同じように落ちる、そして場所を変えると通る。このどれかに当てはまるなら、書き方を直す作業はいったん止めて構いません。
直す対象は、指示ではなく場所である
この記事の答えをまとめます。
プロンプトを直しても効かないとき、原因が指示の中にあるとは限りません。指示は届いていて、届いた先から、そこへ行く道が出ていないことがあります。
見分ける手がかりは3つありました。名前は引けるのに繋がらない。関係のない相手も同じように落ちる。そして、場所を変えると通る。3つ目がいちばん確実です。同じ指示が別の場所で通ったなら、それは指示の問題ではありませんでした。
この見立てが役に立つのは、直す先が変わるからです。書き方を直し続けるあいだ、実際には何も動いていません。動くのは、走らせる場所を変えたときです。
いま、どうしてもうまくいかない作業が一つあるとします。それを頼んでいるAIは、どこにいるでしょうか。


