📰 今日のZenn記事
元記事:LLMエージェントの土台(ランタイム)を設計する:ループ・終了条件・非同期実行(Zenn)
AIエージェント(目標を渡すと、AIが自分で道具を使いながら作業を進める仕組み)を、実際のサービスとして安定して動かすための土台の設計を扱う連載の第1回です。記事ではこの土台をHarness(ハーネス)と呼んでいます。中身は、AIを呼び出し、AIが使いたいと言った道具(検索やメール送信など)を代わりに実行し、結果をAIに返し、続けるか終わるかを決める部分です。
想定しているのは、1日100万件の依頼をさばくサービスです。見積もりでは、処理時間のほとんどがAIや道具の返事待ちで、重いのは計算そのものではありません。詰まりやすいのは、AI提供元の利用回数の制限、料金、そして数分かかる作業の途中経過を預かっておく仕組みだとされています。
設計でいちばん大事なのは、「依頼を受けること」と「進み具合を見ること」を分けることです。依頼が来たらすぐ受付番号を返し、作業は裏で進めます。ブラウザのタブを閉じても作業は止まらず、開き直せば続きが見られます。
AIが道具を使いながら繰り返す1周ごとの処理では、次の3点が効いてきます。
- 道具を実行する前に、AIの出した指示を保存しておく。途中で落ちても、どこまで進んだか分かる
- 道具が失敗しても作業全体を止めず、失敗したという結果をAIに返す。AIが条件を変えて自分でやり直せることが多い
- 「10回以内に終えて」とAIに頼むのではなく、回数や費用の上限はプログラム側で数えて止める。AIへのお願いは守られる保証がないため
止まる条件は、成功、予算(回数・費用・時間)、安全(同じ操作の繰り返し、人の承認が必要な場面)、外部要因(ユーザーのキャンセル、回復できない障害)の4種類に整理されています。予算が尽きそうなときは、道具を使わせずにAIを最後に1回だけ呼び、そこまでの進み具合をまとめさせてから終えます。何も返さずに終わるより役に立つ、という考え方です。
ほかにも、AI提供元が止まったときに別の会社のAIへ切り替える仕組み、失敗した呼び出しをやり直す間隔の工夫、人が承認するまで数時間止めて再開する運用が扱われています。AIにどこまで判断を任せるかは、決まった手順で動かす方式から、複数のAIに分担させる方式まで3段階で比べ、「目的を達成できる最も単純な構成から始める」ことを勧めています。
AIを組み込んだツールを作る話ですね。AIに何を出力させて、それをどういう時にはどういう指示にするのか、どう動いてほしいのかというルールづけと、ワークフローをまとめておくこと。記事がハーネスと呼んでいるのはそこだと読みました。
実践的なことを書いているようで抽象的で、目が滑って頭に入ってきませんでした。1日100万件みたいな規模の案件は組んだことがないので、大事さの実感が湧かないんだと思います。知っているつもりで分かっていないだけなのか、自分でも判断がつきません。この記事に対するコメントが出てこないのは、僕の経験が足りないからかなと。
規模は違うけど、ワークフローに問題があった時や、作ったツールでエラーが起きた時のために、エラーコードを実装するみたいな仕組みは僕も入れています。それをもっと大きな規模でやる必要があるよ、数が多いから進められるところは自動化でどんどん進めないといけないよ、という話かなと受け取りました。難しいね。


