エージェントアカデミー

AI エージェントの構築と運用を学ぶ

AI エージェントの構築と運用に関する実践的なコースであるエージェント アカデミーへようこそ。これは、エージェントが実際に何であるかということから始まり、経験がないことを前提として、運用環境でエージェントのフリートを実行することで終わります。 8 つのモジュールを順番に実行してください。それぞれが最後のものに基づいて構築されており、これらを組み合わせることで、最初のエージェントから実際のユーザーの前に配置できるシステムに到達します。

エージェントアカデミー

ループを理解する

エージェントがチャットボット、スクリプト、従来の自動化と異なる点を学びます。

意図的に構築する

制作前のツール、コンテキスト、権限、評価を設計します。

大規模な運用

Yaju を通じてフリートを展開、管理、観察、最適化します。

モジュール 1

AIエージェントとは実際には何ですか

言語モデルが答えます。エージェントが行動します。違いはループです。モデルは目標を受け取り、次の 1 つのステップを決定し、そのステップをツールで実行し、返された内容を読み取り、再度決定します。これを、目標が達成されるか、限界に達するか、諦めるまで繰り返します。

この区別は思っている以上に重要です。チャットボットはテキストを生成して停止します。次に何が起こるかは、答えを読んでそれに基づいて行動する人によって決まります。エージェントはそのギャップを自ら埋めます。つまり、データベースにクエリを実行し、プル リクエストを開き、メッセージを送信します。出力は提案ではなく、実際のシステムにおける副作用です。

従来の自動化でも副作用は発生しますが、副作用の到達方法は異なります。スクリプト、RPA ロボット、またはワークフロー ビルダーは、誰かが事前に描いたパスに従います。すべてのブランチが列挙されます。同じ入力が与えられると、それは永遠に同じことを行います。それがまさにそれが信頼できる理由であり、現実がダイアグラムの外に出た瞬間にそれが壊れる理由です。

エージェントはその関係を逆転させます。制御フローは記述しません。目標を説明し、可能なアクションのセットを渡し、実行時にモデルに順序を決定させます。手順はその場で生成され、エージェントが進行中に観察した内容によって形成され、毎回異なる可能性があります。

したがって、どちらを選択するかというときの本当の問題は、どちらがより高度であるかということではありません。それは手順がどれだけ安定しているかです。手順が既知で、再現可能で、ほとんど変更されない場合は、スクリプトを作成します。スクリプトの方が安価で、高速で、決定的で、簡単に監査できます。乱雑なサポート チケット、構造化されていないドキュメント、またはステップ 3 がステップ 2 で見つかった内容に依存する調査など、入力が変化しすぎて分岐を列挙することが非現実的である場合、エージェントはコストを稼ぎ始めます。

役に立つテスト: ツールを取り除きます。残ったものがまだ役立つ場合は、チャットボットを構築したことになります。それが無意味になったら、エージェントを構築したことになります。また、同じ動作が条件付きで 20 行のコードになる可能性がある場合は、おそらく代わりにその 20 行を作成する必要がありました。

モジュール 2

エージェントの仕組み (部分ごと)

ほぼすべてのエージェントは、どのようなフレームワークで作成されたものであっても、同じ少数の部品から組み立てられています。障害はそれらに沿って明確に局所化されるため、デバッグのほとんどはそれらを区別することを学ぶことになります。

モデルは推論エンジンです。現在の状態を読み取り、次に何が起こるかを決定します。モデルの選択は、デフォルトではなく、実際のエンジニアリング上の決定です。モデルが大きいほど、あいまいな指示にも耐えやすく、モデルが小さいほど、コストが数分の一で、応答が速くなります。成熟したエージェントは複数のモデルを使用することが多く、真に判断が必要なステップのために高価なモデルを確保しておきます。

通常、システム プロンプトとして提供される指示は、人格ではなく契約です。これらは、役割、制約、出力形式、そして何よりも完了の定義を確立します。あいまいな指示は、エージェントが堂々巡りしたり途中で止まったりする最も一般的な唯一の原因です。

コンテキストとは、この特定のステップ中にモデルが認識できるすべてのものです。タスク自体、取得したレコード、以前のツール呼び出しの結果です。コンテナではなく予算として扱います。無関係なマテリアルにトークンが費やされるたびにコストがかかり、レイテンシが追加され、実際に重要な 1 行に対するモデルの注意が薄れます。

記憶は、ステップ間および実行間で存続するものです。短期記憶は通常、実行中の記録にすぎません。長期記憶は意図的な行為です。持続する要約、過去の決定の記録、ユーザーのプロフィールなどです。この 2 つを混同すると、エージェントはセッション間で記憶喪失になったり、徐々に自分の歴史に溺れたりすることになります。

ツールはアクション スペースであり、エージェントが呼び出すことができる型指定された関数です。モデルはそれらを読み取ることでツールを選択するため、それらの名前と説明はプロンプトの一部です。説明のない processData というツールの選択は間違っており、モデルのせいになります。

決定ステップは、モデルが引数付きのツール呼び出しまたは最終応答を出力した瞬間です。上流のすべては、その 1 つの選択を適切に行うために存在します。

実行はランタイムです。実際にツールを呼び出し、ループと再試行の制限を適用し、資格情報を添付し、エラーを処理し、何が起こったかを記録するコンポーネントです。フレームワークは推論部分を提供します。ランタイムは、結果を他の人の前に安全に公開できるようにするものです。

組み立てると、サイクルは次のようになります。状態を観察し、アクションを 1 つ選択し、それを実行し、結果を観察し、繰り返します。何か問題が発生した場合、その症状は通常 1 つの部分に現れます。確信を持って間違った答えは、通常、文脈が欠落しています。不適切なアクションとは、通常、ツールの説明が不十分であることを指します。決して終了しない実行は、通常、完了の定義が欠落しています。

モジュール 3

優れたエージェントの獲得: 構築、フォーク、または採用

エージェントを機能させるには 3 つの正直なルートがあり、予測可能な方法で時間とコントロールをトレードします。

SDK を使用して自分で作成することもできます。これにより、プロンプト、ツール サーフェイス、障害処理を完全に制御できるようになりますが、最も時間がかかります。タスクがビジネスに固有であり、汎用バージョンがルールを認識できない場合、これは正しい選択です。エージェントのドラフトを支援するためにモデルを使用することは問題なく、ますます普通のことですが、その出力を有能な見知らぬ人からの最初のドラフトとして扱います。エージェントは、ユーザーのデータ、制約、または間違った回答によってどのようなコストがかかるのかを知りません。

パブリック リポジトリからフォークできます。これはすぐにできるので、ほとんどの人はここから始めます。また、自分が行っていない仮定を引き継ぐことを意味するため、実行する前に読んでください。ツールが実際に到達できる範囲、信頼できない入力を補間するプロンプトがあるかどうか、資格情報の到着がどのように予想されるか、ライセンスで使用が許可されているかどうかを確認してください。フォークされたエージェントが重要なものへの書き込みアクセス権を密かに持っていることを運用環境で発見すると、悪い驚きになります。

または、オープンソースのリズム (参照、フォーク、公開、改善) に基づいて構築された Yaju Agent Hub などのカタログから実稼働対応のエージェントを採用することもできます。パブリック リポジトリとの違いは、これらは 1 回限りのプロンプト デモではなく、エンドツーエンドで動作することを目的としたエージェントであり、管理されたランタイム向けにすでに形成された状態で到着することです。

どちらのルートを選択しても、エージェントは最初に適切な応答を生成した時点で終了ではありません。何かを調整する前に、小規模な評価セットを作成します。つまり、無視した方がよい厄介なケースも含め、10 ~ 30 の実際のケースです。それぞれについて、正しい応答がどのようなものであるかを事前に書き留めてください。チームは、エージェントが単に変更されただけの場合でも、印象によって結果を事後的に判断することで、エージェントが改善されたと確信します。

その後、意図的に繰り返します。一度に 1 つずつ変更し、セット全体を再実行してスコアを記録します。すべての運用上の失敗を回帰ケースとしてセットに追加すると、同じ間違いが静かに再発することがなくなります。敵対的なケースも含めます。十分な情報がなくてもエージェントが踏み外したり、発明したり、行動したりするように設計された入力です。

最後にカスタマイズします。データ、命名規則、エスカレーション ルール、完了の定義。ほとんど適合するジェネリックエージェントは、まったくエージェントを使用しないよりも悪い場合が多いです。2 回目の不正解で人々はそのエージェントを放棄し、信頼を確立するよりも再構築する方がはるかに困難だからです。

そして退職金をテーブルの上に置いておきます。使用されないエージェント、またはその下でタスクが変更されたエージェントは、感情に任せて維持するのではなく、スイッチをオフにする必要があります。

モジュール 4

ツール、コンテキスト、機能

エージェントの能力は、渡されたアクションと情報によって決まります。これは、実際のエンジニアリングのほとんどが存在する場所です。

ツールを幅が狭く動詞の形になるように設計します。顧客の注文を読み取るツールは、データベースを管理するツールよりも優れています。限定的なツールは明確な決定を生成し、許可するのが簡単ですが、解釈できる方法で失敗します。幅広いツールはモデルに即興演奏を促しますが、その即興演奏が苦痛なのです。

同僚に対してではなく、モデルに対して説明を書きます。ツールが何をするのか、いつ使用するのか、いつ使用しないのか、そして何を返すのかを説明する必要があります。引数を入力して検証します。ここでのスキーマは官僚的なものではなく、拒否された呼び出しと運用システムへの不正な書き込みの違いです。

投機的にツールを追加しないでください。アクション空間が大きくなるにつれて、選択の品質は低下します。30 個のツールが利用できるため、モデルはタスクではなく選択に推論を費やし、間違った選択をすることが多くなります。 2 つのツールが重なっている場合は、それらを結合するか、一方を削除します。

コンテキストはダンプではなく取得する必要があります。このタスクに必要な特定のレコードを取得し、それらを渡します。ソースが大きい場合は、ドキュメント全体を貼り付けるのではなく、ソースを適切に分割し、関連性によって取得します。引用を返してもらい、答えを生み出した文章をたどることができます。

読むことと書くことを分けてください。ほとんどのエージェントは広範な読み取りアクセスと非常に狭い書き込みアクセスを必要とし、これらを 1 つの権限として扱うことで、要約エージェントは最終的にレコードを削除できるようになります。書き込みが不可逆的な場合は、書き込みの前に人間を置きます。

統合では、これがコーディングの問題ではなく組織の問題になります。すべてのチームが同じ上流システムに独自の接続を配線すると、資格情報が重複し、ポリシーが一貫性がなく、監査証跡が 1 つも存在しません。 MCP などのオープン スタンダードにより、互換性のあるエージェントは、チームごとに 1 つではなく、上流システムごとに 1 つのバインディングを使用して、同じ管理された統合を再利用できます。

資格情報には独自のルールが必要ですが、それは簡単です。エージェントは決して秘密を保持しません。これはアクションを要求し、プラットフォームはアウトバウンド呼び出しの時点で資格情報を添付します。そうすれば、漏洩したプロンプト、詳細ログ、または共有トランスクリプトが漏洩キーになることはありません。

最後に、部分的な障害に備えて計画を立てます。実際のシステムでは、レート制限、ページネーション、タイムアウトが行われ、半分の応答が返されます。すべてのツールの応答を成功として扱うエージェントは、自信を持って何にも基づいて構築されません。モデルが推論できる構造化データとしてエラーを返し、どのエラーを回避するのではなく実行を停止すべきかを事前に決定します。

モジュール5

限界、故障モード、そして正直な期待

自律性は、それ自体を最も誇張しやすい特性であるため、何が問題なのかを正確に把握する価値があります。

エラーはさらに増えます。ループ内の各ステップの信頼性が 95% である場合、20 ステップの実行ではエンドツーエンドの信頼性は約 36% にすぎません。さらに悪いことに、ステップ 3 での間違った仮定はそれ自体を公表しません。ステップ 4 から 20 までを静かに形成し、エージェントが自身の間違いと一貫性を保っているため、最終的な出力は一貫しているように見えます。

モデルは製作します。ランダムではなく、もっともらしいのですが、それが問題です。発明されたレコード識別子、API に存在しない関数、決して取得されなかった文書の確実な引用。製造は、まさに検証が最も面倒な場所で最も危険であるため、それを見つけることを期待するのではなく、設計検証を行ってください。

コンテキストの失敗は、見た目よりも微妙です。コンテキストが欠落していると推測が生じます。古いコンテキストは、前四半期には正しかった意思決定を生み出します。過剰なコンテキストは、技術的には答えを教えられているのに気づいていないモデルを生成します。それぞれが推論の失敗のように見えますが、どれも失敗ではありません。

コストは非線形に動作します。ループの各ステップごとに長いコンテキストの料金が発生し、再試行の回数が増えるため、15 ステップ後に失敗した実行は、3 ステップで成功した場合よりもコストが高くなります。テストケースは短く、実際のテストケースはそうではないため、テストでは安っぽく見えるエージェントが本番環境の人々を驚かせるのは日常茶飯事です。

セキュリティは、通常のアプリケーションのセキュリティとは全く異なります。エージェントが読み取るコンテンツはすべてエージェントに指示を試みることができるため、サポート チケット、Web ページ、または PDF が注入対象となります。正当な資格情報を持っているエージェントは、それを悪用するよう話しかけられる可能性があり、混乱した代理人であり、通常の防御策は適用されません。言語を無害化しようとするのではなく、ツールが到達できる範囲を制限します。

メンテナンスは継続的に行っております。プロンプトはビジネスの変化に合わせてずれ、上流の API は形を変え、モデルは非推奨になるかサイレントに更新され、3 月に合格した評価スイートは 6 月に静かに失敗し始めます。エージェントは、一度出荷されるプロジェクトではなく、所有者がいる実行中のシステムです。

これらすべてが、このコースで最も流行に乗らない結論につながります。つまり、多数の平凡なエージェントよりも少数の優れたエージェントを好むということです。中途半端な仕事をするエージェントが 10 人いると、きちんと仕事をする 2 人のエージェントよりもコストがかかり、頻繁に休憩し、より早く自信を失います。エージェントを追加するたびに、監視する対象、管理する資格情報、および説明する動作が追加されます。構築しないことを決定したり、スイッチをオフにしたりすることは、正当な結果であり、十分に活用されていません。

モジュール6

外部世界向けのエージェントのパッケージ化

エージェントが作成されたマシン上でのみ実行されるエージェントはプロトタイプです。パッケージ化は、他の人、チーム、環境が質問することなく実行できるものに変えるものです。

まずは再現性から始めましょう。最新の解決策を受け入れるのではなく、依存関係を固定します。スキーマを使用して入力と出力を入力すると、呼び出し元は何を送信し、何が返されるかを正確に知ることができます。構成をコードの外側に保持することで、同じアーティファクトを編集せずにステージングおよび運用環境に対して実行できます。

一緒に持ち込んではいけないものを明確にしてください。シークレットはもちろんですが、環境固有のエンドポイント、ハードコードされたアカウント識別子、および絶対パスも含まれます。値がないとエージェントを起動できない場合は、実行の途中ではなく、起動時にどの値が欠落しているかを大声で通知して失敗する必要があります。

エージェントが動作するために必要な契約を宣言します。つまり、エージェントが期待するツール、それらのツールに必要な権限、想定されるモデル、実行あたりのおおよそのコストなどです。レビュー担当者は、その宣言だけから承認するかどうかを決定できる必要があります。

ソフトウェアと同じようにバージョン管理を行います。それが本質的なものだからです。 Git 内に保持し、ブランチではなく特定のバージョンを指定し、2 つのバージョンを比較してプロンプトとコードの何が変更されたかを確認し、変更が見た目よりも悪いことが判明した場合は 1 つのコマンドでロールバックできます。

評価セットをエージェントと一緒に発送します。これは、エージェントが行うべきことについての唯一の正直な記述であり、これを継承する人は、出力を信頼する前に、自分の環境があなたの環境と同じように動作するかどうかを確認できます。

最後に、このエージェントの目的、絶対に実行してはいけないこと、所有者、障害が発生した場合の対処方法など、境界をわかりやすい言葉で書き留めます。このメモには 10 分かかりますが、それが採用されるエージェントと静かに見捨てられるエージェントの違いになります。

モジュール 7

Yaju にエージェントをデプロイする

導入とは、エージェントが自分だけのものではなくなり、他の人が依存するシステムの一部になる時点です。実行するという技術的な作業は簡単な部分です。

製品版では、ラップトップでは真実ではなかった 4 つのことが真実であることを意味します。エージェントには ID と指定された所有者があります。何かが到達を許可するものを強制します。やったことはすべて記録されます。そして、それにかかる費用を誰かが見ることができます。これらのいずれかが欠けているエージェントは、仕様ではなく偶然に運用環境で実行されます。

Yaju では、その 1 つ目は自動です。エージェントは実行された瞬間に一意の ID と所有者を取得するため、誰かの端末に存在するのではなく、1 つのカタログに表示されます。これはシャドウ エージェントに対する実際的な答えであり、ポリシーの問題ではなく可視性の問題です。

そこから、エージェント オーケストレーション システムは、エージェントが必要とするものを、必要なときに接続します。認証情報は実行時に組織レベルのコンテナーから解決されるため、コードやプロンプトに表示されることはありません。アクセス ルールは、各発信通話の前に、ネットワークではなくワークスペースとエージェントのレベルで評価されます。ポリシーは行動の瞬間に適用され、インシデント中に誰も読まない文書には記載されません。

可観測性は、最初のサプライズの後に追加されるのではなく、最初の実行時からオンになります。すべてのモデルの呼び出し、ツールの呼び出し、入力、出力、決定は、再生、検索、エクスポートできるセッション トレースとしてキャプチャされます。監査人が特定の日に何が起こったかを尋ねると、その答えは調査ではなく回収です。

危険な行為については、明示的に人間を関与させてください。ランタイムは、元に戻せないステップの前に一時停止し、承認を要求し、承認された場合にのみ続行します。これは、わずかな摩擦で大きな信頼を得ることができる設計上の決定であり、インシデントが発生してから追加するよりも、後でリラックスする方がはるかに簡単です。

デプロイ自体はコマンド ラインから行われますが、これは思っている以上に重要です。同じコマンドが既存の CI/CD パイプライン内で動作するため、エージェントの出荷は、別個の儀式を必要とするのではなく、他のものを出荷するのと同じように見えます。データが環境から離れることができない場合、同じエージェント オーケストレーション システムが自己ホスト型、独自のクラウド、または完全なエアギャップで実行されます。

いずれも、エージェントの構築方法を変更する必要はありません。どのフレームワークで作成されたものであっても、独自のエージェントを導入すると、同じ ID、資格情報、ポリシー、トレースが適用されます。この中立性は意図的なものです。モデル プロバイダーとの既存のロックイン層に加えて、第 2 層のロックインを望んでいる人はいません。

実際には、徐々にロールアウトしていきます。最初にエージェントをシャドウ モードで実行し、誰も操作しない出力を生成し、人間が実行したであろう出力と比較します。次に、承認ゲートを使用して実際の範囲を狭くします。トレースが退屈になった場合にのみ幅を広げます。

モジュール8

Yaju エージェント システムによるフリートの運用

1 つのエージェントが 1 つのプロジェクトです。エージェントが 30 名になるのは運用上の問題であり、ほとんどのチームが予想するよりも早く、通常は誰もそうすべきだと決めることなく到着します。

この変化は量的ではなく質的です。エージェントが 1 つあれば、それが何をするか覚えています。 30 のチームがあり、それぞれが独自のフレームワークを選択しているため、全体像を把握している人は誰もおらず、何が実行されているのか、誰が所有しているのか、何に触れることができるのか、何をしたのか、そして私たちにどのようなコストがかかるのかなど、重要な疑問は答えられなくなります。

他のすべては在庫に依存するため、在庫が最優先されます。すべてのエージェントは、それを作成したものに応じて、ID、所有者、およびバージョンを保持します。プラットフォームの外部に構築されたエージェントは、プラットフォーム上に構築されたエージェントと同じ条件でカタログ化されます。これが、インベントリを正確に保つ唯一の方法です。

制御は一元的に適用され、均一に施行されます。プラットフォーム チームがポリシーを一度設定すると、実行時にランタイムがそれをすべてのチームのエージェントに適用します。これは、各エージェントに許可を求めたくないエンジニアリング部門と、目に見えないものを承認できないセキュリティ部門の間の通常の対立を解決する取り決めです。

フリート規模での可観測性は、ログの保持以上の意味を持ちます。トレースを使用すると、個々の実行をリプレイできます。不変の監査証跡には、代理ユーザー、使用された資格情報、および生成された出力が記録されます。 Evals スコアは、動作、構造、レイテンシ、コストを対象として定義した基準に対して継続的に実行され、重要なチェックに失敗すると、レポートを提出するのではなくエージェントが停止します。これは、パッシブなロギングからアクティブな品質強制へのステップです。

コストは、チームが最後に発見し、最も後悔する要素です。エージェント、ワークスペース、ユーザー、プロバイダー、モデル別に支出がトークンではなく通貨で表示されるため、説明のつかない請求書が意思決定のリストに変わります。サーキットブレーカーの予算により、それが実行可能になります。80 パーセントで警告し、100 パーセントでブロックし、事後報告するのではなくオーバーランを阻止します。アラートは警告します。実際に支出を止めるのはブレーカーだけです。

コストが可視化されれば、逸話的ではなく体系的に削減できます。最適化は 4 つの手段で機能します。つまり、より小さなモデルを試す、プロンプトとコンテキストをトリミングする、結果を改善せずにコストを追加するツールを削除する、決定論的なステップをモデルから通常のコードに移動する、です。それぞれの推奨事項は、適用される前に自分自身の評価と比較して測定されるため、質の高い節約を静かに購入することはできません。

統合は同じ中央の方法で管理されます。各チームが独自の接続と資格情報のコピーを確立するのではなく、アップストリーム システムごとに 1 つのバインディング、チームがリクエストできる承認済みのカタログ、およびそのすべてにわたる単一の監査証跡。

大規模になると、調整が非常に重要になります。エージェントは相互に手作業で作業し、2 つのチームが同じ問題を個別に解決する場合は相互に複製し、同じレート制限を目指して競合します。再利用可能なエージェントとスキルを含む共有カタログは、重複を最も安価に解決できる方法であり、エンジニアの最初のエージェントを数週間ではなく数時間で出荷できる理由でもあります。

最後に、フリートにはライフサイクルがあるものとして扱います。エージェントは実験から本番環境に昇格し、より優れたエージェントが存在すると非推奨となり、タスクがなくなると引退します。チームごとの導入、エージェントごとのコスト、評価に対するパフォーマンスを測定することによって、会話は実験のカウントを超えて、単に AI を使用するのではなく AI で運用する方向に進みます。

コースを順番に進めていきます。各モジュールは、最初のエージェント ループからアイデンティティ、ポリシー、トレース、コスト管理、およびフリートの運用に至る最後のモジュールに基づいて構築されます。

8

プログレッシブモジュール

0

事前の経験が必要です