OpenAI API のモニタリング

AppDynamics Python エージェントは、OpenAI API の使用状況と関連メトリックをモニターするのに役立ちます。これは、OpenAI バックエンドへの openai-python ライブラリを使用して作成された ChatCompletionCompletion および Moderation API タイプの要求をモニターします。エージェントは、OpenAI API モデルによって使用されるプロンプトと応答もキャプチャします。

次のメトリックは、アプリケーション、階層、およびノードの各レベルで報告されます。

  • 1分あたりのコール数
  • 1分あたりのエラー数
  • トークン
  • 入力トークン = 0.5$
  • 完了トークン = 1.5$

次に、メトリックパスの例を示します。

  • モデルごとのメトリックパス - Application Infrastructure Performance|OpenAI_Tier|OpenAI|ada|Cost
  • すべてのモデル累積メトリックパス - Application Infrastructure Performance|OpenAI_Tier|OpenAI|Cost - All Models
  • ネット アプリケーション レベルのメトリックのパス - Overall Application Summary|OpenAI - Cost - ada
注: これらのメトリックは、exit コールがビジネストランザクションの外部にある場合でも報告されます。ただし、exit コールがビジネストランザクションの外部にある場合、平均応答時間(ms)メトリックは報告されません。

OpenAI モデレーション API

バージョン 24.2.0 以降、Python エージェントでは OpenAI モデレーション API がサポートされます。モデレーション API は、クエリされたステートメントがポリシーに準拠しているかどうかをユーザーに求めます。Python エージェントでは、次のメトリックがキャプチャされます。

  • モデレーション API へのコール:モデレーション API が使用された回数(1 分ごと)。(OpenAI|moderations|Calls per minute)
  • フラグ付きカテゴリメトリクス:ヘイトスピーチなど、特定のタイプのコンテンツにフラグが付けられた回数。(OpenAI|moderations|Flagged Calls by category|hate)
  • フラグ付きクエリカウント:フラグが設定されたコンテンツの合計数。(OpenAI|moderations|Flagged queries)
  • 合計クエリカウント:処理されたクエリの総数。(OpenAI|moderations|Total queries)

前提条件

AppDynamics を使用して OpenAI API exit コールをモニターするには、次の前提条件を満たしていることを確認します。

  • Python エージェント 23.8.0 以降をインストールします。Pythonエージェントのインストール を参照してください。
  • カスタムダッシュボードおよびテンプレートをインポートします。
  • Python エージェントの ファイルで enable-openai フラグを必ず /path/to/appdynamics.cfg に設定してください。[instrumentation]を参照してください。
  • スナップショット exit コールの詳細で OpenAI 要求および応答をキャプチャするには、Python エージェントの /path/to/appdynamics.cfg ファイルで enable-genai-data-capture フラグを true に設定します。「[instrumentation]」を参照してください。

カスタム ダッシュボードの作成

  1. Custom_dashboard_script.zip をダウンロードします。
    内容は以下のとおりです。
    ディレクトリ(Directory) 説明
    templates ダッシュボードファイルを作成するための json テンプレートが含まれています。
    dashboard ダッシュボード json ファイルがここで作成されます。サンプル json ファイルが含まれています。
    main.py ダッシュボードを作成するための Python スクリプト。
    readme.md ソリューションの説明。
  2. 以下のコマンドを実行します:
    CODE
    cd Custom_dashboard_script
    python3 main.py
    上記のコマンドでは、作成するダッシュボードのタイプ(アプリケーションまたは階層)を指定するように求められます。
  3. 選択したダッシュボードのタイプに基づいて、次のダッシュボードの詳細を指定するように求められます。
    アプリケーション レベル ダッシュボードの詳細
    変数 説明 デフォルト 使用可能な値 必須
    ダッシュボード名 コントローラ UI の [Dashboard & Reports] に表示されるダッシュボード名。 OpenAI_App_dashboard app_dashboard オプション
    アプリケーション名 OpenAI バックエンドコールを使用するアプリケーションの名前。 なし openai_app_1 あり
    OpenAI Endpoints Host Name OpenAI エンドポイントのホスト名。 api.openai.com api.openai.com オプション
    OpenAI Endpoints Port OpenAI エンドポイントのポート。 443 443 オプション
    階層レベルダッシュボードの詳細
    変数 説明 デフォルト 使用可能な値 必須
    ダッシュボード名 コントローラ UI の [Dashboard & Reports] に表示されるダッシュボード名。 tier_dashboard tier_dashboard オプション
    アプリケーション名 OpenAI バックエンドコールを使用するアプリケーションの名前。 なし openai_app_1 あり
    ティア名 OpenAI バックエンドコールに公開される階層の名前。 なし openai_tier_1 あり
    ビジネストランザクション名 ホストに報告されるビジネストランザクションの名前。これは、API 応答時間メトリックをキャプチャするためのものです。 none openai_bt あり
    OpenAI Endpoints Host Name OpenAI エンドポイントのホスト名。 api.openai.com api.openai.com オプション
    OpenAI Endpoints Port OpenAI エンドポイントのポート。 443 443 オプション
    アプリケーション レベル モデレーション API ダッシュボードの詳細
    変数 説明 デフォルト 使用可能な値 必須
    ダッシュボード名 コントローラ UI の [Dashboard & Reports] に表示されるダッシュボード名。 OpenAI_Moderation_App moderation_app_dashboard オプション
    アプリケーション名 OpenAI バックエンドコールを使用するアプリケーションの名前。 なし openai_app_1 あり
    階層レベルモデレーション API ダッシュボードの詳細
    変数 説明 デフォルト 使用可能な値 必須
    ダッシュボード名 コントローラ UI の [Dashboard & Reports] に表示されるダッシュボード名。 OpenAI_Moderation_Tier moderation_tier_dashboard オプション
    アプリケーション名 OpenAI バックエンドコールを使用するアプリケーションの名前。 なし openai_app_1 あり
    ティア名 OpenAI バックエンドコールに公開される階層の名前。 なし openai_tier_1 あり
  4. コントローラ UI でダッシュボードをインポートします。

ダッシュボードの例

注: Tiers & Nodes > My Dashboards の順に移動し、既存のダッシュボードからウィジェットをコピーして貼り付け、選択したアプリケーションのダッシュボードを作成して簡単にナビゲーションできるようにします。

カスタムコストメトリック式の作成

入力トークンメトリックと完了トークンメトリックにそれぞれのコストを乗算することで、カスタムコストメトリック式を作成できます。

たとえば、gpt-3.5-turbo-0125 の 100 万トークンあたりのコストは次のとおりです。

  • 入力トークン = 0.5$
  • 完了トークン = 1.5$
このシナリオでは、 gpt-3.5-turbo-0125 のカスタム式を作成して、次のようにコストを計算できます。
CODE
({input Tokens}*0.5 + {Completion Tokens}*1.5)/1000000

このカスタム式を使用して、さまざまなモデル間のコスト分散の円グラフ、またはすべてのモデルのコスト関数を含む総コストウィジェットを作成します。次の手順を実行して、既存の OpenAI ダッシュボードにモデルごとのコストウィジェットを作成します。

  1. 円グラフウィジェットを既存の OpenAI ダッシュボードに追加します。「メトリック式」を参照してください。
  2. input_token および complete_token コストを指定してトークン数で乗算します。
    1. Data Source:アプリケーション名を選択します。
    2. Metric Category:階層/ノードの正常性 - ハードウェア、JVM、CLR(CPU、ヒープ、ディスク I/O など)を選択します。
    3. Metric:メトリック式を選択します。
    4. メトリック式を編集します。
    メトリック式の編集
  3. [Metric Expression] で、2 つの変数を追加して名前を割り当てます。
  4. [Metric Selection] で、入力トークンと完了トークンの相対メトリックパスを指定します。メトリック選択の相対パスの指定
    • Input TokensAgent|OpenAl|gpt-3.5-turbo|Input Tokens
    • Completion TokensAgent|OpenAI|gpt-3.5-turbo|Completion Tokens
  5. [Metric Expression] で、次のようにメトリック式を定義します。
    CODE
    ({input_token_gpt3.5)*0.5 + {completion_token_gpt3.5)*1.5)/1000000
メトリック式

このメトリック式には、両方のタイプに対する 100 万トークンあたりのコスト乗数が含まれます。