What I Learned Running AI Agents in Production
私はAIシステムを構築しています。コードをリリースするエンジニアたちと話をしています。派手なデモと、実際のプロダクションシステムの間には大きな隔たりがあります。
今や、人々は何でも「エージェント」と呼びます。ループを持つスクリプトはエージェントであり、メモリを持つチャットボットもエージェントです。この誤解が、質の低いエンジニアリングを招いています。
チームは単純なタスクに対して過剰な設計(オーバーエンジニアリング)をしてしまいます。たった一つの優れたプロンプトがあれば十分なワークフローに対して、複雑なオーケストレーションを追加してしまうのです。
エージェントには、単なる指示ではなく「目的」が必要です。次に何をすべきかを自ら決定できなければなりません。失敗に対処できなければなりません。そして、いつ完了したかを知っていなければなりません。
それ以外は、単なる関数呼び出しに過ぎません。
• 人間がすべてのステップをガイドしなければならないなら、それはチャットインターフェースです。 • ツール呼び出しの失敗からシステムが復旧できるなら、それはエージェントです。 • システムが目標をサブタスクに分解できるなら、それは真のエージェントです。
真のエージェントのデプロイメントは、用途が限定的です。ドキュメント抽出やコードレビューのように、一つのことを巧みにこなします。汎用的な推論エンジンではありません。
成功しているチームは、次の3つのことに集中しています。
- ツール設計: エージェントが呼び出すものに対する、クリーンなインターフェース。
- 失敗への対処: ツールが何も返さなかったときに何が起こるか。
- オブザーバビリティ: エージェントがなぜ特定の決定を下したのかを追跡すること。
LangChainやCrewAIのようなフレームワークは、毎月のように変わります。フレームワークよりも、パターンの方が重要です。
成功するために、これらのパターンを活用してください。
- 計画してから実行する: 計画のためのステップと、実行のための別個のステップを用意します。
- 検索と推論を分離する: コンテキストを取得することと、コンテキストを使用することは、異なるタスクです。
- 明示的なハンドオフ: あるエージェントが別のエージェントに作業を引き継ぐ際は、構造化されたログを使用します。
RAGは標準的な手法ですが、多くの人がチャンキングで失敗しています。テキストの分割が不適切だと、モデルはコンテキストを見失います。もしRAGの結果が役に立たないなら、モデルを責める前に、メタデータとチャンキング戦略を確認してください。
モデルはより高性能になり、安価になっていくでしょう。しかし、それによってエンジニアリングの核心的な課題が変わることはありません。見ていないときでも正しく動作するシステムを構築しなければならないのです。
ガバナンスとオブザーバビリティに注力してください。真に価値のあるエンジニアとは、他者が信頼できるシステムを構築できる人のことです。これはモデルの研究ではなく、システムデザインなのです。
Source: https://dev.to/aibughunter/what-i-learned-after-running-ai-agents-in-production-for-a-year-49n
