AIエージェントとは何か?
この記事では、AIエージェントの定義を探求し、エージェントはLLMを使用してアプリケーションの制御フローを決定するシステムであると提案しています。著者はAndrew Ngの見解に同意し、エージェントの能力はスペクトルであるとし、「エージェンティック」な行動の概念を紹介し、開発、運用、評価、監視への影響について議論しています。
AIエージェントとは何か?
「エージェントとは何か?」これはほぼ毎日尋ねられる質問です。LangChainでは、LLMアプリケーション、特に推論エンジンとして機能し、外部のデータや計算と相互作用するアプリケーションの開発を支援するツールを構築しています。これには、一般に「エージェント」と呼ばれるシステムが含まれます。
誰もがAIエージェントの定義について少しずつ異なる見解を持っています。私の定義はおそらくほとんどの人よりも技術的です。AIエージェントとは、LLMを使用してアプリケーションの制御フローを決定するシステムです。
それでも、私の定義は完璧ではないことを認めます。人々はエージェントを高度で自律的で人間らしいものと考えがちですが、LLMが2つの異なる経路間でルーティングするだけの単純なシステムはどうでしょうか?これは技術的な定義には当てはまりますが、エージェントに期待される一般的な能力には当てはまりません。エージェントを正確に定義することは難しいのです!
だからこそ、先週のAndrew Ngのツイートがとても気に入りました。その中で彼は、「どの作業を真のAIエージェントとして含めるか除外するかで議論するよりも、システムがエージェンティックである程度には異なるレベルがあることを認めることができる」と示唆しています。自動運転車に自律性のレベルがあるように、AIエージェントの能力もスペクトルとして見ることができます。私はこの見解に強く同意し、Andrewがうまく表現したと思います。今後、「エージェントとは何か」と尋ねられたら、代わりに「エージェンティック」であることの意味について会話を展開するでしょう。
エージェンティックであることの意味
昨年、LLMシステムに関するTEDトークを行い、以下のスライドを使用してLLMアプリケーションにおけるさまざまな自律性のレベルについて話しました。
システムは、LLMがシステムの動作方法を決定するほど「エージェンティック」になります。
LLMを使用して入力を特定の下流ワークフローにルーティングすることは、少量の「エージェンティック」な動作を持ちます。これは上図の「ルーター」カテゴリに該当します。
複数のLLMを使用して複数のルーティングステップを行う場合はどうでしょうか?これは「ルーター」と「ステートマシン」の間に位置します。
それらのステップの1つが継続か終了かを決定する場合、つまりシステムが完了するまでループで実行できるようにする場合?これは「ステートマシン」に該当します。
システムがツールを構築し、それらを記憶し、将来のステップで活用する場合?これはVoyager論文で実装されたものに類似しており、非常にエージェンティックで、より高度な「自律エージェント」カテゴリに分類されます。
これらの「エージェンティック」の定義は依然としてかなり技術的です。私は「エージェンティック」のより技術的な定義を好みます。なぜなら、LLMシステムを設計および記述する際に有用だからです。
「エージェンティック」が役立つ理由
すべての概念と同様に、「エージェンティック」という概念がなぜ必要なのかを問う価値があります。それは何に役立つのでしょうか?
システムのエージェンティック度を把握することは、開発プロセス中の意思決定(構築、実行、相互作用、評価、さらには監視を含む)を導くことができます。
システムのエージェンティック度が高いほど、オーケストレーションフレームワークが役立ちます。複雑なエージェンティックシステムを設計している場合、これらの概念を考えるための適切な抽象化を持つフレームワークにより、より迅速な開発が可能になります。このフレームワークは、分岐ロジックとサイクルを第一級でサポートする必要があります。
システムのエージェンティック度が高いほど、実行が難しくなります。それはより複雑になり、完了までに長時間を要するタスクも発生します。つまり、ジョブをバックグラウンド実行として実行したいと思うでしょう。また、途中で発生するエラーを処理するための永続的な実行も必要になります。
システムのエージェンティック度が高いほど、実行中にそれと対話したいと思うでしょう。正確なステップが事前にわからない可能性があるため、内部で何が起こっているかを観察する機能が必要です。また、特定の時点でエージェントの状態や指示を変更し、意図した経路から逸脱している場合に軌道修正する機能も必要です。
システムのエージェンティック度が高いほど、これらのタイプのアプリケーション向けに構築された評価フレームワークが必要になります。ランダム性が累積するため、複数回評価を実行したいと思うでしょう。また、最終出力だけでなく中間ステップもテストして、エージェントの動作効率を評価する機能も必要です。
システムのエージェンティック度が高いほど、新しいタイプの監視フレームワークが必要になります。エージェントが取るすべてのステップをドリルダウンする機能が必要です。また、エージェントが取ったステップに基づいて実行をクエリする機能も必要です。
システムにおけるエージェンティック能力のスペクトルを理解し活用することで、開発プロセスの効率と堅牢性を向上させることができます。
エージェンティックは新しいもの
私がよく考えることの1つは、このブームの中で実際に何が新しいのかということです。人々が構築しているLLMアプリケーションには新しいツールとインフラストラクチャが必要なのでしょうか?それとも、LLM以前の汎用ツールやインフラストラクチャで十分なのでしょうか?
私にとって、アプリケーションのエージェンティック度が高いほど、新しいツールとインフラストラクチャを持つことが重要になります。それがまさに、エージェントの構築、実行、対話を支援するエージェントオーケストレーターであるLangGraphと、LLMアプリケーション向けのテストと可観測性プラットフォームであるLangSmithを構築する動機となりました。エージェンティックのスペクトルをさらに進むにつれて、サポートツールのエコシステム全体を再考する必要があります。
エージェントが実際に何をしているかを見る
LangSmithは、エージェントエンジニアリングプラットフォームであり、開発者がすべてのエージェントの意思決定をデバッグし、変更を評価し、ワンクリックでデプロイするのに役立ちます。
LangSmithを試す デモを取得