Monitor OpenAI APIs

AppDynamics Python Agent helps you monitor the OpenAI and Azure OpenAI usage and related metrics. It monitors the ChatCompletion, Completion, Moderation, and Embeddings API type requests created using the openai-python library to the OpenAI backend. The agent also captures the prompts and responses used by the OpenAI API models.

The following metrics are reported at the application, tier, and node levels:

  • Calls per minute
  • Errors per minute
  • Tokens
  • Input Tokens
  • Completion Tokens

The following are the example metric paths:

  • Per model metric path - Application Infrastructure Performance|OpenAI_Tier|Agent|OpenAI|ada|Tokens
  • All model cumulative metrics path - Application Infrastructure Performance|Agent|OpenAI_Tier|OpenAI|Tokens - All Models
  • Net application level metrics path - Overall Application Summary|Agent|OpenAI - Tokens - ada
Note: These metrics are reported even if the exit call is outside the business transaction. However, the Average Response Time(ms) metric is not reported when the exit call is outside the business transaction.

OpenAI Moderation API

From version 24.2.0, Python Agent supports OpenAI Moderation API. The moderation API will prompt the users if the queried statement is policy compliant or not. The Python Agent captures the following metrics:

  • Calls to moderations API: The number of times moderation API is used every minute. (OpenAI|moderations|Calls per minute)
  • Flagged category metrics: The number of times specific types of content, like hate speech, are flagged. (OpenAI|moderations|Flagged Calls by category|hate)
  • Flagged queries count: The total amount of flagged content. (OpenAI|moderations|Flagged queries)
  • Total queries count: The overall number of queries processed. (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]」を参照してください。

Create a Custom Dashboard

  1. Download Custom_dashboard_script.zip.
    It contains:
    DirectoryDescription
    templatesContains json templates to create the dashboard files.
    dashboardDashboard json files are created here. It contains the sample json files.
    main.pyPython script to create the dashboards.
    readme.mdDescription of the solution.
  2. Run the following command:
    cd Custom_dashboard_script
    python3 main.py
    The preceding command prompts you to specify the dashboard type (application or tier) that you want to create.
  3. Based on your selected dashboard type, you will be prompted to specify the following dashboard details.
    Application Level Dashboard Details
    VariableDescriptionDefaultPossible ValuesRequired
    Dashboard NameThe dashboard name to be displayed on Dashboard & Reports in the Controller UI. OpenAI_App_dashboard app_dashboardOptional
    Application NameName of the Application with OpenAI backend calls.noneopenai_app_1Yes
    OpenAI Endpoints Host NameThe hostname of the OpenAI endpoint. api.openai.com api.openai.com Optional
    OpenAI Endpoints PortThe port of the OpenAI endpoint.443443Optional
    Tier Level Dashboard Details
    VariableDescriptionDefaultPossible ValuesRequired
    Dashboard NameThe dashboard name to be displayed on Dashboard & Reports in the Controller UI.tier_dashboardtier_dashboardOptional
    Application NameName of the Application with OpenAI backend calls.noneopenai_app_1Yes
    Tier NameName of the Tier exposed to OpenAI backend calls.noneopenai_tier_1Yes
    Business Transaction NameThe name of the business transaction reported to the host. This is to capture API Response time metric.noneopenai_btYes
    OpenAI Endpoints Host NameThe hostname of the OpenAI endpoint. api.openai.com api.openai.com Optional
    OpenAI Endpoints PortThe port of the OpenAI endpoint.443443Optional
    Application Level Moderation API Dashboard Details
    VariableDescriptionDefaultPossible ValuesRequired
    Dashboard NameThe dashboard name to be displayed on Dashboard & Reports in the Controller UI. OpenAI_Moderation_App moderation_app_dashboardOptional
    Application NameName of the Application with OpenAI backend calls.noneopenai_app_1Yes
    Tier Level Moderation API Dashboard Details
    VariableDescriptionDefaultPossible ValuesRequired
    Dashboard NameThe dashboard name to be displayed on Dashboard & Reports in the Controller UI. OpenAI_Moderation_Tier moderation_tier_dashboard Optional
    Application NameName of the Application with OpenAI backend calls.noneopenai_app_1Yes
    Tier NameName of the Tier exposed to OpenAI backend calls.noneopenai_tier_1Yes
  4. Import the dashboard in the Controller UI.

Example Dashboard

Note: Navigate to Tiers & Nodes > My Dashboards and create a dashboard for the selected application by copying and pasting widgets from the existing dashboard for easier navigation.

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

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

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

  • 入力トークン = 0.5$
  • 完了トークン = 1.5$
このシナリオでは、 gpt-3.5-turbo-0125 のカスタム式を作成して、次のようにコストを計算できます。
({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] で、次のようにメトリック式を定義します。
    ({input_token_gpt3.5)*0.5 + {completion_token_gpt3.5)*1.5)/1000000
メトリック式

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