AIエージェントとの協働にも実作業前の認識合わせが大事

先日、ある集計のタスクを、細かい設計を詰めないままエージェントに任せました。「いい感じにやっておいて」に近い渡し方です。戻ってきた成果物は形としてはそれっぽく出来上がっていたのですが、数値検証をしたら整合性が全く取れませんでした。

データを扱う仕事では出てきた数字が正しいかを必ず検証するので、合わなければどこで狂ったのかを突き止める作業が発生します。この調査にかなり時間がかかってしまって、時短のつもりで任せたのに結局あまり時短になりませんでした。

自分の頭の中にしかない前提条件

調べてみると、大きな設計の誤りがあったわけではなく、細かい前提条件が抜けているせいでした。

たとえば、ある条件を満たすユーザーはこの集計から除外しないといけない。同じ重複レコードでも、指標によって残し方が変わる。データを扱うタスクには、この手の約束事がいくつも積み重なっています。

しかもこれらは、テーブルの定義にもコードにも書かれていないことが多いです。これまでの経緯と一緒に自分の頭の中にだけ入っているので、渡さなければ相手には分かりません。

では必要な情報を先に全部渡せばいいかというと、これも難しいです。何が必要かは、実際にタスクを始めて具体を考えはじめてから「これも渡す必要があったな」と気づくことがほとんどです。

1問1答で聞き出してもらう

そこで、作業に入ってもらう前に、まず計画を立てる工程を挟みます。そのとき自分で前提を書き出すのではなく、必要な情報をAIの側から1問1答形式で聞き出してもらうようにしています。質問には推奨案も添えてもらいます。

コーディングエージェントでは /grill-me というスキルがよく効きます。チャット型のAIを使うときも、いきなり作業をお願いせず、まず計画を立てることをゴールに置いて、自分へのヒアリングから始めてもらっています。

推奨案を添えてもらうのは、認知負荷を下げるためです。細かいところまで自分の頭で考え尽くすのはかなり労力がかかりますが、「これとこれ、どちらがいいですか」と聞かれるなら、答えるのは相対的にずっと楽です。

これはデータ系のタスクに限った話ではありません。例えばアプリ開発においても、新しい機能を追加しようとするとき、自分が考えているのはたいていメインのユースケースだけです。AIに聞かれてはじめて、想定していなかったエッジケースが出てきます。そこでの処理をどうするか決めたうえで、ようやく作業を任せられる状態になります。聞かれてはじめて自分が何を考えていなかったかに気づくという点では、これに限らずどのタスクでも変わりません。

タスクの粒度で使い分ける

とはいえ、あらゆるタスクでここまでやるべきだとは思っていません。

目安にしているのは、AIが自由に動ける余地の大きさです。任せるタスクの粒度や複雑さが大きいほど、AIが自分の裁量で進める部分が増えるので、期待する振る舞いとのズレも生じやすくなります。そういうタスクでは事前の設計・計画が効きます。逆に軽いタスクにいちいち計画を詰めるのは、時間も自分の認知リソースも無駄遣いになると思っています。

数年前と比べると、AIは目に見えて賢くなって、任せられる範囲もかなり広がりました。ただその分、AIが自分の裁量で進める部分も大きくなっていて、こちらが期待していたアウトプットとの乖離が生まれる余地も大きくなっていると感じます。なので実作業に入ってもらう前に、自分の頭の中にしかない情報をきちんと共有して、細かいところで認識がずれていないか確かめる時間を取るようにしています。

ただ、この付き合い方も今後また変わっていくのかもしれません。ヒアリングを受けていると、AIの出してくる推奨案のほうが自分の考えより筋が良くて、yes と答えるばかりで設計が固まっていくこともあります。これからは、自分の仕事はAIが把握していない現実の事情を伝えることのほうに寄っていくことになるのでしょうか。