2つのAIタスクが同じマウスを奪い合っていた話
並列化されたエージェントのデモは、2つのタスクが同じマウスを奪い合うまでは素晴らしく見える。
あるタスクはウェブサイトにログインし、別のタスクはブラウザを開き、3つ目のタスクは単純な質問に答えようとする。すると突然、システムが間違った場所をクリックしたり、誤った実行をキャンセルしたりする。これはプロンプトの問題ではない。リソースの問題なのだ。
これを学んだのは、CliGateを構築している時だった。コードのタスクは並列実行できるが、デスクトップはそれとは異なることに気づいた。キーボード、マウス、画面はそれぞれ1つずつしかない。もし2つのエージェントがその操作領域を奪い合おうとすれば、互いに妨害し合ってしまう。
最初のアイデアは、新しいタスクが届いたときに古いタスクをキャンセルすることだった。しかし、それは間違いだった。ステータスの更新を求めているユーザーのために、ログインプロセスを強制終了させてはならない。
ルールを変更する必要があった。
エージェントの信頼性を高めるための新しいルール:
- 独立したタスクは並列で実行する。
- デスクトップを必要とするタスクはキューに入れる。
- キャンセルはユーザーが求めたときのみ行う。
CliGateでは、デスクトップ入力は「リース(貸与)」のように機能する。1つのタスクがデスクトップを占有し、他のタスクは自分の番を待つ。
新しいロジックは次のように動作する:
- 新しいタスクが届く。
- デスクトップを必要とするか?
- 必要なければ、並列で実行する。
- 必要であり、かつデスクトップが空いていれば、占有する。
- 必要であり、かつデスクトップが使用中であれば、キューに加わる。
- ユーザーが停止を命じたときのみ停止する。
リトライ(再試行)は状況を悪化させることがある。あるタスクがタイピングしている最中に、別のタスクがマウスを奪おうとし続けると、干渉が発生する。解決策は、より強力にリトライすることではない。解決策は「正直であること」だ。アシスタントはこう言うべきである。「デスクトップは使用中です。現在キューに入っています。空き次第、開始します。」
これにより、失敗を「予測可能な挙動」へと変えることができる。
また、厳格なルールを追加した。エージェントは自分自身をキャンセルできない。これにより、エージェントがパニックになって自身のオフスイッチを誤クリックすることを防げる。
AIツールの構築において、重要なのは「賢さ」よりも「明快さ」である場合が多い。
- タスクが競合しないなら、そのまま実行させる。
- 物理リソースを巡って競合するなら、キューに入れる。
- ユーザーがステータスを求めたら、ステータスを伝える。
- ユーザーが停止と言ったら、停止する。
これにより、アシスタントはより人間らしく感じられるようになる。制御権を奪い合うのをやめ、質問と命令の違いを理解しているオペレーターのように振る舞い始めるのだ。
もしあなたのAIがデスクトップを操作するのであれば、このことを覚えておいてほしい。タスクの並列化は問題ないが、物理リソースには「所有権」が必要だ。
出典: https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij
オプションの学習コミュニティ: https://t.me/GyaanSetuAi