MarsDawn Mac App Store で配信中

4 つのエージェント設計パターンと、それぞれが返す文書

2024 年 3 月、Andrew Ng は自身のニュースレター The Batch で、AI エージェントの 4 つの設計パターンを紹介した:reflection、tool use、planning、multi-agent collaboration。これらはふつう、モデルからより良い結果を引き出す方法として、作る側の視点から語られる。この記事は反対側から見る。あなたが使っているエージェントが、このどれかのパターンで作られているなら、フォルダには何が入ってくるのか。まず何を読めばいいのか。

4 つのパターンは Andrew Ng のものだ。それぞれがどんな文書を返しがちで、何をチェックすべきかは、私たちの推論だ。彼はそのどちらについても書いておらず、このシリーズで人によるレビューを主張してもいない。

4 つのパターン、手短に

Ng はこれを「Agentic Design Patterns Part 1」で説明している。手短に言えば:reflection はモデルが自分の成果を見直して改善するもの。tool use は Web 検索やコード実行などのツールを呼べるようにするもの。planning はモデルが多段階の計画を立てて実行するもの。multi-agent collaboration は複数のエージェントが作業を分担し、議論するものだ。

Part 1 で彼は、コーディングのベンチマーク HumanEval を使い、複数の研究グループの結果をチームでまとめた数字で効果を示している:「GPT-3.5 (zero shot) was 48.1% correct. GPT-4 (zero shot) does better at 67.0%. However, the improvement from GPT-3.5 to GPT-4 is dwarfed by incorporating an iterative agent workflow. Indeed, wrapped in an agent loop, GPT-3.5 achieves up to 95.1%.」(GPT-3.5 の zero-shot での正答率は 48.1%、GPT-4 の zero-shot はもう少し良く 67.0%。しかし、GPT-3.5 から GPT-4 への向上は、反復的なエージェントワークフローを組み込むことに比べれば見劣りする。実際、エージェントのループに包むと、GPT-3.5 は最大で 95.1% に達する。)これらの数字は 1 つのコーディングベンチマークについてのもので、95.1% は最良のケース(「up to」=最大で)だ。エージェントのワークフローが出力を改善しうることは示しているが、誰がそれを確認するかについては何も語っていない。

ここから先の、文書とチェック項目は、私たちの解釈であって Ng のものではない。実際のエージェントは複数のパターンを混ぜて使うことも多い。1 つのコーディングエージェントが、同じセッションの中で計画を立て、ツールを実行し、自分の成果を見直すこともあるので、この 4 種類のファイルを一度に受け取ることもよくある。

1. Reflection:すでに自分で見直した草稿

Ng が reflection について書いた記事は、これを、本来は人が与えるフィードバックを自動化するものとして描いている:「What if you automate the step of delivering critical feedback, so the model automatically criticizes its own output and improves its response?」(批判的なフィードバックを与えるステップを自動化し、モデルが自分の出力を自動的に批評して回答を改善するとしたらどうだろうか?)

返ってきがちなもの:修正済みの文書。自己レビューのセクションや、「エッジケースは再確認済み」のような一文が付いていることもある。

チェックすべきこと:結果を、エージェント自身の批評ではなく、あなたの依頼内容と照らし合わせる。自己レビューはそれ自体の仕方で間違うことがある。Chip Huyen:「An interesting mode of planning failure is caused by errors in reflection. The agent is convinced that it’s accomplished a task when it hasn’t.」(計画の失敗の興味深い一形態は、reflection の誤りによって引き起こされる。エージェントは、実際には終わっていないのに、タスクを終えたと確信している。)Lilian Weng は、2023 年 6 月、当時 OpenAI に在籍しながら、ブログ Lil’Log で当時のモデルについてこう書いている:「The lack of expertise may cause LLMs not knowing its flaws and thus cannot well judge the correctness of task results.」(専門知識の不足により、LLM は自分の欠陥に気づかず、タスク結果の正しさをうまく判断できないことがある。)(彼女が説明していた研究では、LLM による結果の評価と、人間の専門家による評価が一致していなかった。)「検証済み」と書かれていたら、1 つは自分で確認しよう。

2. Tool use:何を実行したかの報告

返ってきがちなもの:エージェントが何を実行または検索し、何が返ってきたかのまとめ。「テストスイートを実行:全て合格。」結果の表。見つかったリンク。

Anthropic のガイドは、ツールの結果をエージェント自身のチェックとして描いている:「During execution, it's crucial for the agents to gain “ground truth” from the environment at each step (such as tool call results or code execution) to assess its progress.」(実行中、エージェントが自分の進捗を評価するには、各ステップで環境から「ground truth」(ツール呼び出しの結果やコード実行の結果など)を得ることが重要だ。)そのチェックはエージェントの内部で起きる。あなたのもとに届くのは、エージェントによるその語り直しだ。

チェックすべきこと:それぞれの主張が、実際に見える出力までたどれるか。まとめの中の 1 つの数字を、本当の出力と照合する。リンクを 1 つ開いてみる。

3. Planning:plan.md

返ってきがちなもの:計画、仕様書、エージェントが進めながらチェックしていくタスクリスト。

Ng は Part 4 で、このパターンについて率直に語っている:

“On one hand, Planning is a very powerful capability; on the other, it leads to less predictable results. In my experience, while I can get the agentic design patterns of Reflection and Tool Use to work reliably and improve my applications’ performance, Planning is a less mature technology, and I find it hard to predict in advance what it will do.”

(一方で、計画は非常に強力な能力だ。他方で、予測しにくい結果につながる。私の経験では、Reflection と Tool Use という設計パターンは信頼できる形で動かし、アプリケーションの性能を上げられる一方、Planning はまだ成熟度の低い技術で、それが何をするか事前に予測するのは難しいと感じている。)

楽観的でもある:「But the field continues to evolve rapidly, and I'm confident that Planning abilities will improve quickly.」(しかしこの分野は急速に進化し続けていて、計画の能力は早く向上すると確信している。)

チェックすべきこと:実行前の計画を、「5 分でのレビュー」の方法で見る:形、主張を 1 つ、取り消せないステップ、図、範囲。エージェントが途中で計画を書き換えたら、あなたが承認したバージョンと比較する。git を使っているなら、git diff plan.md で何が変わったか分かる。MarsDawn では、アウトラインタブが長い計画の形を示し、書き換えられた計画は、あなた自身に未保存の編集がなければ、読んでいた位置を保ったまま再読み込みされる。

4. Multi-agent collaboration:複数のファイル、複数の書き手

返ってきがちなもの:あるエージェントによる仕様書、別のエージェントによる実装メモ、さらに別のエージェントによるレビュー、そしてそれらの間でやり取りされる要約。それぞれが自分のブランチや worktree で作業していることもある。

チェックすべきこと:引き継ぎの部分。あるエージェントが別のエージェントの成果をまとめるとき、伝わらなかった要件がないか探す。食い違う 2 つのファイルを見つけたら、誰かがそれを土台に作業を進める前に、どちらを正とするか決める。MarsDawn では、「ファイル ▸ フォルダを開く⋯」(⇧⌘O)で共有フォルダを開く。エージェントが書いた新しいファイルは 1 秒ほどでファイルタブに現れ、git のチェックアウトならヘッダーにブランチや worktree の名前が出るので、別々のブランチにある同名のファイルを開いた 2 つのウィンドウを見間違えることもない。結果を Markdown を読まない人に渡す必要があるときは、「書き出した PDF を共有する」が、その手順を扱っている。

ひと目で見る

パターン(Ng)返ってきがちなもの(私たちの推論)まず読むべきところ(私たちの提案)
Reflection修正済みの草稿。自己レビュー付きのことも自分自身の依頼内容と照らし合わせる。「検証済み」を 1 つ確認
Tool use何を実行し、何が返ってきたかの報告主張を 1 つ、実際の出力までたどる
Planningplan.md、仕様書、タスクリスト実行前の 5 分レビュー
Multi-agent collaboration複数のエージェントによる複数のファイル。複数のブランチにまたがることも引き継ぎの部分と、どれが正か

ここに引用した著者は誰も MarsDawn について触れておらず、MarsDawn や他の Markdown ツールを推奨してもいない。MarsDawn の中に AI モデルはない:どのパターンがそのファイルを生んだかを知ることはなく、これらのチェックを代わりにやることもない。ファイルを、あなたがチェックしている間、読みやすく保つだけだ。

試してみる

MarsDawn は Mac App Store で配信中です。無料の marsdawn コマンドラインツールもあります:

brew install redtear1115/tap/marsdawn

アプリなしで Markdown を PDF に書き出せます。詳しくは「Markdown から PDF へ」を見てください。

コマンドライン · 購入前に:MarsDawn ができないこと

次に

出典