みなさんこんにちは。ネコが好きなMS2課塩野です。
監視ツールといえば、AWSが提供しているCloudwatch以外にもいろいろありますが、他社の監視ツールでOpenAIの監視をするような機能はあまり見かけませんので、APIの利用料や応答速度、その他もろもろのモニタができるのはありがたいです。New Relicが提供しているOpenAI Observability機能について実際のNew Relicでの設定と設定後の使用状況や使ってみた感想を書きたいと思います。
概要
この機能はChatGPTでお馴染みのOpenAI社のAPIの使用状況をNew Relicでモニタリングするものです。当機能ではWebUIのChatGPTのモニタではなくAPIを使ったアクセスについてのみが対象となります。
設定方法
公式ドキュメントに従ってアプリケーションのセットアップを行います。セットアップといってもpythonのモジュールをインストールして、OpenAI連携用のコードを埋め込んで実行するだけです。New Relicの管理画面からでも同じように設定できますので、今回はインストールガイドを使った手順を紹介します。
OpenAI の統合 | New Relic Documentation
2.今回はPythonのアプリで連携をするため、Pythonを選択する
3.任意の名前を入力し、Saveをクリックする
4.詳細な設定手順が表示されるため、手順の通り実施する
4-1.pipコマンドを使用して、New Relic の OpenAI Observability モジュールをインストールします
pip install nr-openai-observability4-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の動作をモニタするという点では設定もそこまで難しくなく、割と見たいところが見れるというところで個人的には導入してよかったな~と思っています。もちろん見るだけではなく、データの取り込みができているということはアラートなどを仕込んで条件に応じて通知を鳴らしたりすることもできますので、アプリの障害や異常動作、異常課金などを検知して通知することもできるでしょう。
こちらの記事がどなたかのお役に立てれば幸いです。