AIモデルとプラットフォーム

自動エージェントとAgentOps:観測可能性、追跡可能性、そしてAIアプリケーションへの応用

mm
Unite.AI を Google の優先ソースに追加

基礎モデル(FM)によって生成される自動エージェントの成長は、複雑な多段階の問題を解決する方法を変えました。これらのエージェントは、カスタマーサポートからソフトウェアエンジニアリングまで、複雑なワークフローをナビゲートし、推論、ツールの使用、メモリを組み合わせたタスクを実行します。

しかし、これらのシステムが能力と複雑さを増すにつれて、観測可能性、信頼性、コンプライアンスの課題が生じます。

これがAgentOpsが登場する場所です。DevOpsとMLOpsに似た概念ですが、FMベースのエージェントのライフサイクルを管理するために特別に設計されています。

AgentOpsとその基礎となる概念を理解するために、Liming Dong、Qinghua Lu、Liming Zhuによる最近の論文「基礎モデルベースのエージェントの観測可能性を可能にするためのAgentOpsの分類」から洞察を得ました。この論文では、AgentOpsの包括的な探索が行われ、エージェントのライフサイクルを管理するためのその必要性が強調されています。著者は、観測可能性プラットフォームのための重要な機能を提案し、決定の複雑さや規制コンプライアンスなどの課題に取り組んでいます。

AgentOps(ツール)は、AIエージェント(例:autogen、crew ai)を監視、デバッグ、最適化するための主要なツールとして広く採用されています。この記事では、より広い概念であるAI Operations(Ops)に焦点を当てています。

AgentOps(ツール)は、セッションのリプレイ、LLMコストの追跡、コンプライアンスの監視などの機能を提供し、開発者がエージェントのワークフローに洞察を得ることができます。この記事の後半では、AgentOpsの機能をチュートリアルで紹介します。

AgentOpsとは何か

AgentOpsは、基礎モデルベースの自動エージェントを設計、展開、監視、最適化するために必要なプロセス、ツール、フレームワークを指します。AgentOpsの目標は以下の通りです:

  • 観測可能性: エージェントの実行と意思決定プロセスに関する完全な可視性を提供すること。
  • 追跡可能性: エージェントのライフサイクル全体で詳細なアーティファクトをキャプチャし、デバッグ、最適化、コンプライアンスのために使用すること。
  • 信頼性: 監視と堅牢なワークフローを通じて、一貫した信頼性の高い出力を確保すること。

AgentOpsの核となる部分は、従来のMLOpsを超えて、反復的な多段階のワークフロー、ツールの統合、適応的なメモリを強調し、厳格な追跡と監視を維持することです。

AgentOpsが解決する主要な課題

1. エージェントシステムの複雑さ

自動エージェントは、広いアクション空間を跨ぐタスクを処理し、各ステップで決定を下す必要があります。この複雑さは、洗練された計画と監視メカニズムを必要とします。

2. 観測可能性の要件

高リスクのユースケース(例:医療診断または法的分析)では、詳細な追跡可能性が求められます。EU AI法などの規制へのコンプライアンスも、堅牢な観測可能性フレームワークの必要性を強調しています。

3. デバッグと最適化

多段階のワークフローでエラーを特定したり、間隔の出力を評価したりすることは、エージェントのアクションの詳細なトレースがなければ困難です。

4. スケーラビリティとコスト管理

生産環境へのスケーラビリティには、待ち時間、トークン使用量、運用コストなどのメトリクスを監視して、効率を確保するために必要です。

AgentOpsプラットフォームの主要な機能

1. エージェントの作成とカスタマイズ

開発者は、コンポーネントのレジストリを使用してエージェントを構成できます:

  • ロール: 責任(例:研究者、プランナー)を定義します。
  • ガードレール: 倫理的かつ信頼性の高い動作を確保するために制約を設定します。
  • ツールキット: API、データベース、またはナレッジグラフとの統合を可能にします。

エージェントは、特定のデータセット、ツール、プロンプトとともに構築され、事前に定義されたルールに従って動作します。

2. 観測可能性とトレース

AgentOpsは、詳細な実行ログをキャプチャします:

  • トレース: エージェントのワークフローの各ステップ(LLMコールからツールの使用まで)を記録します。
  • スパン: トレースを細かいステップ(例:リトリーブ、埋め込みの生成、ツールの呼び出し)に分割します。
  • アーティファクト: 中間出力、メモリ状態、プロンプトテンプレートを追跡してデバッグを支援します。

観測可能性ツール(例:LangfuseまたはArize)は、これらのトレースを視覚化するダッシュボードを提供し、ボトルネックやエラーを特定するのに役立ちます。

3. プロンプト管理

プロンプトエンジニアリングはエージェントの動作を形成する上で重要な役割を果たします。主要な機能は以下の通りです:

  • バージョニング: プロンプトのバージョンを追跡してパフォーマンスを比較します。
  • インジェクション検出: プロンプト内の悪意のあるコードまたは入力エラーを検出します。
  • 最適化: チェーンオブソート(CoT)またはツリーオブソートなどのテクニックを使用して推論能力を向上させます。

4. フィードバックの統合

人間のフィードバックは、反復的な改善に不可欠です:

  • 明示的なフィードバック: ユーザーが出力を評価したりコメントしたりします。
  • 暗黙的なフィードバック: タスクにかかった時間やクリック率などのメトリクスを分析して有効性を測定します。

このフィードバックループは、エージェントのパフォーマンスとテストに使用される評価基準の両方を改善します。

5. 評価とテスト

AgentOpsプラットフォームでは、以下の項目に対する徹底的なテストが可能です:

  • ベンチマーク: エージェントのパフォーマンスを業界基準と比較します。
  • ステップバイステップの評価: ワークフローの間隔のステップを評価して正確性を確保します。
  • トラジェクトリの評価: エージェントが取る決定のパスを検証します。

6. メモリとナレッジの統合

エージェントは、コンテキスト(例:会話の履歴)に短期メモリを使用し、過去のタスクから得た洞察を長期メモリに保存します。これにより、エージェントは動的に適応しながら、時間の経過とともに一貫性を維持することができます。

7. 監視とメトリクス

包括的な監視では、以下のメトリクスを追跡します:

  • 待ち時間: 最適化のために応答時間を測定します。
  • トークン使用量: リソース消費を監視してコストを管理します。
  • 品質メトリクス: 関連性、精度、有毒性を評価します。

これらのメトリクスは、ユーザーセッション、プロンプト、ワークフローなどの次元にわたって視覚化され、リアルタイムの介入を可能にします。

追跡可能なアーティファクトの分類

論文では、AgentOpsの観測可能性を裏付けるアーティファクトの体系的な分類が導入されています:

  • エージェントの作成アーティファクト: ロール、目標、制約に関するメタデータ。
  • 実行アーティファクト: ツールコール、サブタスクキュー、推論ステップのログ。
  • 評価アーティファクト: ベンチマーク、フィードバックループ、スコアリングメトリクス。
  • トレースアーティファクト: セッションID、トレースID、スパンによるグラニュラーな監視。

この分類は、エージェントのライフサイクル全体で一貫性と明確性を保証し、デバッグとコンプライアンスをより扱いやすくします。

AgentOps(ツール)ウォークスルー

このガイドでは、AgentOpsを使用してAIエージェントを監視および最適化する方法について説明します。

ステップ1:AgentOps SDKのインストール

AgentOpsをインストールするには、以下のコマンドを使用します:

pip install agentops

ステップ2:AgentOpsの初期化

まず、AgentOpsをインポートし、APIキーを使用して初期化します。APIキーは、セキュリティのために.envファイルに保存します。

# AgentOpsの初期化
import agentops
import os
from dotenv import load_dotenv

<p># 環境変数の読み込み
load_dotenv()
AGENTOPS_API_KEY = os.getenv(&quot;AGENTOPS_API_KEY&quot;)</p>

<p># AgentOpsクライアントの初期化
agentops.init(api_key=AGENTOPS_API_KEY, default_tags=[&quot;my-first-agent&quot;])</p>

このステップでは、アプリケーション内のすべてのLLMインタラクションに対する観測可能性を設定します。

ステップ3:デコレータを使用したアクションの記録

特定の関数を@record_actionデコレータを使用してインストルメント化できます。このデコレータは、関数のパラメータ、実行時間、出力を追跡します。以下は例です:

from agentops import record_action

<p>@record_action(&quot;custom-action-tracker&quot;)
def is_prime(number):
&quot;&quot;&quot;数が素数かどうかを確認します。&quot;&quot;&quot;
if number &amp;lt; 2:
return False
for i in range(2, int(number**0.5) + 1):
if number % i == 0:
return False
return True</p>

この関数は、AgentOpsダッシュボードにログされ、実行時間と入出力のメトリクスが提供されます。

ステップ4:名前付きエージェントの追跡

名前付きエージェントを使用する場合、@track_agentデコレータを使用して、すべてのアクションとイベントを特定のエージェントに紐付けることができます。

from agentops import track_agent

<p>@track_agent(name=&quot;math-agent&quot;)
class MathAgent:
def __init__(self, name):
self.name = name</p>

<p>def factorial(self, n):
&quot;&quot;&quot;階乗を再帰的に計算します。&quot;&quot;&quot;
return 1 if n == 0 else n * self.factorial(n - 1)</p>

このエージェント内のすべてのアクションまたはLLMコールは、”math-agent”タグに紐づけられます。

ステップ5:マルチエージェントのサポート

マルチエージェントシステムの場合、エージェント間のイベントを追跡して観測可能性を向上させることができます。以下は例です:

@track_agent(name=&quot;qa-agent&quot;)
class QAAgent:
def generate_response(self, prompt):
return f&quot;Responding to: {prompt}&quot;

<p>@track_agent(name=&quot;developer-agent&quot;)
class DeveloperAgent:
def generate_code(self, task_description):
return f&quot;# Code to perform: {task_description}&quot;</p>

<p>qa_agent = QAAgent()
developer_agent = DeveloperAgent()</p>

<p>response = qa_agent.generate_response(&quot;Explain observability in AI.&quot;)
code = developer_agent.generate_code(&quot;calculate Fibonacci sequence&quot;)</p>

各コールは、AgentOpsダッシュボードの対応するエージェントのトレースに表示されます。

ステップ6:セッションの終了

セッションの終了を示すには、end_sessionメソッドを使用します。オプションとして、セッション状態(SuccessまたはFail)と理由を含めることができます。

# セッションの終了
agentops.end_session(state=&quot;Success&quot;, reason=&quot;ワークフローを完了しました&quot;)

これにより、すべてのデータがAgentOpsダッシュボードにログされ、アクセス可能になります。

ステップ7:AgentOpsダッシュボードでの視覚化

AgentOpsダッシュボードを訪れて、以下を探索します:

  • セッションのリプレイ: ステップバイステップの実行トレース。
  • 分析: LLMコスト、トークン使用量、待ち時間のメトリクス。
  • エラー検出: 失敗または再帰ループを特定してデバッグします。

強化された例:再帰的思考の検出

AgentOpsは、エージェントのワークフローでの再帰ループの検出もサポートしています。以下は、前の例を再帰検出で拡張したものです:

@track_agent(name=&quot;recursive-agent&quot;)
class RecursiveAgent:
def solve(self, task, depth=0, max_depth=5):
&quot;&quot;&quot;タスクを再帰的に解決します。&quot;&quot;&quot;
if depth &gt;= max_depth:
return f&quot;最大再帰深度に達しました:{task}&quot;
return self.solve(task, depth + 1)

<p>recursive_agent = RecursiveAgent()
output = recursive_agent.solve(&quot;データベースのクエリを最適化&quot;)
print(output)</p>

AgentOpsは、セッションの一部として再帰をログし、無限ループまたは過度の深度を特定するのに役立ちます。

結論

基礎モデルによって生成される自動エージェントは、複雑な多段階の問題を解決する方法を再定義しました。ただし、その高度な複雑さは、観測可能性、追跡可能性、信頼性の新たな課題をもたらします。これがAgentOpsが登場する場所です。AgentOpsは、エージェントのライフサイクル全体で観測可能性、信頼性、コンプライアンスを確保するために不可欠なフレームワークです。

私は過去5年間、機械学習とディープラーニングの魅力的世界に没頭してきました。私の情熱と専門知識は、AI/MLに特に焦点を当てた50以上の多様なソフトウェアエンジニアリングプロジェクトに貢献することになりました。私の継続的な好奇心は、自然言語処理という分野にも私を引き付け、さらに探求したいと思っています。