New Relicを使用したOpenAI Observability機能でOpenAIのGPTアプリケーションの使用状況をモニタリング

記事タイトルとURLをコピーする

みなさんこんにちは。ネコが好きなMS2課塩野です。

監視ツールといえば、AWSが提供しているCloudwatch以外にもいろいろありますが、他社の監視ツールでOpenAIの監視をするような機能はあまり見かけませんので、APIの利用料や応答速度、その他もろもろのモニタができるのはありがたいです。New Relicが提供しているOpenAI Observability機能について実際のNew Relicでの設定と設定後の使用状況や使ってみた感想を書きたいと思います。

概要

この機能はChatGPTでお馴染みのOpenAI社のAPIの使用状況をNew Relicでモニタリングするものです。当機能ではWebUIのChatGPTのモニタではなくAPIを使ったアクセスについてのみが対象となります。

newrelic.com

設定方法

公式ドキュメントに従ってアプリケーションのセットアップを行います。セットアップといってもpythonのモジュールをインストールして、OpenAI連携用のコードを埋め込んで実行するだけです。New Relicの管理画面からでも同じように設定できますので、今回はインストールガイドを使った手順を紹介します。

OpenAI の統合 | New Relic Documentation


1.New Relicの管理画面を開き、Add Data>Data Source>OpenAI Observability を選択する

2.今回はPythonのアプリで連携をするため、Pythonを選択する

3.任意の名前を入力し、Saveをクリックする

4.詳細な設定手順が表示されるため、手順の通り実施する

4-1.pipコマンドを使用して、New Relic の OpenAI Observability モジュールをインストールします
pip install nr-openai-observability
4-2.pythonのコードに、以下のコードを埋め込む
※import openai や openai.xxx はOpenAIのAPIをコールするためのコードになるため、適宜自身のコードを見ながらコードが重複しないよう修正してください
# Import packages
import os
import openai
from nr_openai_observability import monitor

# Create model monitor
monitor.initialization(application_name="OpenAI Application", license_key="<NEWRELIC-INGEST-LICENSE-KEY>")

openai.api_key = os.getenv("OPENAI_API_KEY")
openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[{"role": "user", "content": "What is Observability?"}],
    max_tokens=100,
    temperature=0 
)
5.Test Connectionをクリックした後に、See your dataで動作確認して見ましょう

設定は以上です。あとはpythonのコードを実行してOpenAIのAPIコールを叩くだけ!

動作確認

OpenAI Observabilityの情報は、Model Performanceメニューから確認することができます。モデルに登録した名称がこの一覧に表示されれば問題ありません。それではどのような情報が見れるか見ていきましょう。


まず上の方から、リクエストあたりの平均トークン数、コスト、トータルリクエスト数が表示されており、OpenAIを利用する上でのコストを見ることができます。トークンをたくさん消費するようなアプリならコストもバカにならないのでコスト管理は大事ですね。


つづいてAPIのレスポンスに関するグラフや指標が表示されます。どのようなレスポンスタイムを返しているかもわかるので、反応が遅いなと思ったらこの辺を確認したらよさそうです。


どうやらエラーの状況なども見ることができるようです。定期的にエラーを吐いているのはアプリ側に問題がありそうな気もしますが、そこまで稼働の重要性が高くない個人運用のアプリなので、エラー対策は今のところ気が向いたら対応しようかな~というレベルで考えています。


メッセージの中身をお見せすることはできませんが、どのメッセージの処理でエラーが出ているのかも表示されるので、アプリ側にデバッグコードを仕込んでおけばよりデバッグがしやすくなると思います。


見れる画面はこんな感じですが、実際に使ってみて一番ありがたいと思ったのは、料金の傾向とエラートレースがしやすそうなところでしょうか。

総括

OpenAIの動作をモニタするという点では設定もそこまで難しくなく、割と見たいところが見れるというところで個人的には導入してよかったな~と思っています。もちろん見るだけではなく、データの取り込みができているということはアラートなどを仕込んで条件に応じて通知を鳴らしたりすることもできますので、アプリの障害や異常動作、異常課金などを検知して通知することもできるでしょう。

こちらの記事がどなたかのお役に立てれば幸いです。

塩野 正人 ブログ記事一覧はコチラ

マネージドサービス部MS2課(MS部MS2課)所属。ネコが好きです。