LLM Report(クラウド版)でChatGPT APIをノーコードでモニタリング&ロギング
はじめに
「ChatGPT APIの実験期を終えて、社内アプリを頒布したい」といった時、監視・ロギングが問題になります。
筆者もChatGPT APIを統合したSlackアプリを社内運用してみたところ、ソースコードの応酬で雀の涙ぐらいにしていたハードリミットを超えてしまいました。ユーザーがどのようなプロンプトを書いているか、一元管理してフィードバックする仕組みが必要です。
ここで考えました。
- ChatGPT APIへのゲートウェイになる自前のロギングエンドポイントを作って、ダッシュボードなりLooker Studioを作ろう。
- 同じこと思っている人200万人くらいいそうだな。
後者の考えに寄りかかっていた怠惰な筆者は見つけました。オープンソースを。[1]
要約
本記事は、初めてLLM、具体的にはOpenAIのモニタリング・ロギングを試してみたい読者のために、LLM Reportを紹介します。
LLM Report
- 公式ページ
- リポジトリ
- クラウド版・セルフホスティング版がある。
- 本記事はクラウド版のみを取り扱います。
- 無料で始められる。(100,000ログ/月まで無料)
- メールアドレス、またはGoogle/GitHub連携。
- クレジットカード等の登録不要。
- ChatGPT APIのChat Compeletionsの使用量、プロンプト/レスポンスのログ、User IDの追跡、ダッシュボードでのかんたんな可視化ができる。
- 導入に必要なこと
- OpenAI APIからセッションキーを取得
- LLM Report API Keyを取得
- OpenAI APIのエンドポイントをLLM Reportの独自エンドポイントに変更
- リクエストヘッダに
X-Api-Key
とX-User-Id
を追加
- 手軽にLLMのモニタリング&ロギングを試すのに最適。駆け出しサービスな点は注意。
- LLM Reportの独自エンドポイントへのリクエストの際にChatGPTのAPIキーを渡すことになります。
アカウント作成
無料版が用意されている。アカウントはメールアドレス、GoogleまたはGitHub連携。
2023/10/15時点
ログインするとダッシュボードとチュートリアルが表示されます。
ダッシュボード
以下、ダッシュボードからアクセスできるメインの機能を試していきます。[2]
OpenAI API Analytics
OpenAI APIをどのくらい使用しているか確認できます。OpenAIの公式ダッシュボードの拡張版といった趣き。
設定
-
Open AIのAPI管理画面へ
https://platform.openai.com/account/usage -
Chromeの開発者タブを開く
-
ネットワークタブを選択し、検索欄に「sess」を入力。ブラウザを更新。
-
出てきたセッショントークン(
sess-xxx...xxxx
)を、llm.reportのダッシュボードに入力
すると、モデルごとの使用量を示したグラフが現れます。
グラフ
Detailed Analyticsタブを選択すると、分単位の使用量、モデルごとのToken数が確認できます。
Logs
設定
-
LLM Report API Keyの作成
ダッシュボードのボタンを押すだけで生成されます。
-
OpenAI API(chat completions)へのリクエストを調整
- エンドポイントを修正
- https://api.openai.com/v1/chat/completions
+ https://api.openai.withlogging.com/v1/chat/completions
-
X-Api-Key
ヘッダを追加[3]
+ -H "X-Api-Key: Bearer <LLM Report API Key>" \
試しにVSCodeのThunder Clientで、https://api.openai.withlogging.com/v1/chat/completions
へリクエストを送ってみます。
グラフ
するとすぐにLogが表示されました。
時間(日本標準時)、モデル、プロンプト、回答が確認できます。
ログはエクスポート・検索ができ、個々のログのリクエスト・レスポンスのJSONデータも取得できました。
{"id":"chatcmpl-89rtUILfifpGUbah9trZAagtrynFC","model":"gpt-3.5-turbo-0613","usage":{"total_tokens":18,"prompt_tokens":9,"completion_tokens":9},"object":"chat.completion","choices":[{"index":0,"message":{"role":"assistant","content":"Hello! How can I assist you today?"},"finish_reason":"stop"}],"created":1697362812}
User Analytics
上記のログではUser IDの欄が空欄になっていましたが、設定をすることで、ユーザーごとにモニタリングできます。
チュートリアルはアニメーションです。(のでブレた...)
設定
- LLM Report API Keyの作成
再度、キーを作成します。(上述のLogsで作成済なのですが、再度の作成が必要でした。) - プラン選択
- Freeプラン&Skip。クレジットカードの登録は不要です。
- OpenAI API(chat completions)へのリクエストを調整
- エンドポイントを修正
- https://api.openai.com/v1/chat/completions
+ https://api.openai.withlogging.com/v1/chat/completions
-
X-Api-Key
とX-User-Id
ヘッダを追加
+ -H "X-Api-Key: Bearer <LLM Report API Key>" \
+ -H "X-User-Id: myuser@example.com" \
先ほどと同様にThunder Clientでリクエストを投げてみます。わかりやすくするため、X-User-Idをmyuser_zenn@example.com
とmyuser_zenn2@example.com
にして、実行してみます。
グラフ
ブラウザを更新すると、下記のグラフが現れます。
ユーザーごとのコスト、リクエスト数、Token数が確認できました。
Logsにも反映されています。
社内アプリぐらいであれば実行アカウントのログイン名等をヘッダにセットすれば良さそうです。
おわりに
以上、LLM Reportのクラウド版を試してみました。エンドポイントの変更とヘッダの追加のみで、あっという間にログを取ることができました。
100,000ログ/月まで無料、クレジットカードの登録も不要で、LLMのモニタリングのはじめの一歩としてストレスフリーでした。一方で機能はsoon
となっているものが多く、アラートの送出もこれからです。本格導入にはまだ見極めが必要そうです。
今回は手軽なクラウド版を使いましたが、データ、APIキーを渡すのに少し抵抗を感じたので、セルフホスティングも試してみる予定です。[4]
-
こちらの記事に教えていただきました。https://zenn.dev/ya_s_u/articles/awesome-nextjs-repos ↩︎
-
メインの、と言っても、現時点ではこれらの機能が全てです。 ↩︎
-
X-Api-Key
は今どきは非推奨らしい...? https://datatracker.ietf.org/doc/html/rfc6648 ↩︎ -
ソースを見る限り、ドキュメント通りではすんなり行かず、authの設定、バックエンドの設定が必要そうです。バックエンドはおそらくこれ▶️ https://github.com/dillionverma/llm-report-worker/tree/main
以下の部分を見るとheaderごと保存されているので自己責任で。https://github.com/dillionverma/llm-report-worker/blob/d0b2ede12df25d501018380521bb10697f1d937e/src/index.ts#L75 ↩︎
Discussion