先月末にKong KonnectにAI Managerという機能が実装された。
この機能の特長として以下が挙げられる。
- AIポリシーの管理
- LLMカタログの可視化
- LLMの利用者の可視化
- LLMのトラフィックや使用量の分析
要はAPI GatewayであるKong Gatewayを利用してのLLMアクセスが簡単に設定でき、可視化・分析が簡単に行えるようになる機能と思ったら良さそう。
どんな感じで設定でき、どんな感じでLLMの利用状況が見れるのか実際に触ってみる。
検証の前提
今回は以下の環境で確認する。
- 構成はHybridモードとし、Data PlaneをローカルPCにDockerで展開済み
- LLMはOpenAIとCohereを利用
AI Managerの利用
設定
LLMの設定はControl Planeに紐づくのだが、AI ManagerはControl Planeに紐づかず独立して存在している。
なので機能を利用する際は左サイドバーでControl Planeを選択せずにAI Manager
をクリックして利用する。
Expose LLM
をクリックするとLLMの登録画面になる。
ここでは以下の情報を選択・入力出来る。
- General Information:追加するLLM provider(OpenAI等)とモデル(
gpt-4
等)を選択・入力することが出来る - Authentication:認証方法をクライアント側で指定するか(Authorizationヘッダに足すか)、Kong Gateway側に保存するかを指定する。
- Route:Gateway経由でLLMにアクセスする方法を指定する。ここはKong GatewayのRoute設定と同じ。
- Control Plane:紐づけるControl Planeを指定する
今回の検証では最初に以下のように設定した。
- LLM provider:
OpenAI
- Specific model:
gpt-4
- Specific model:
- Authentication:Provided by the AI gateway
- API key:
sk-sv...
(OpenAIのトークン)
- API key:
- Route:Basic
- Path:
/openai
- Path:
- Control Plane:
ai-gateway
(検証用に作成していたCPを指定)
保存するとLLMがカタログ的に表示される。
同じ要領でCohereの情報も登録する。
- LLM provider:
Cohere
- Specific model:
gpt-4
- Specific model:
- Authentication:Provided by the AI gateway
- API key:
NZv9...
(Cohereのトークン)
- API key:
- Route:Basic
- Path:
/cohere
- Path:
- Control Plane:
ai-gateway
それぞれのトークン数、エラー率、レイテンシや利用者(agent)数が読み取れそうなことが確認できる。
ちなみにこの時にControl Planeの中を見るとService/Route/Pluginが設定されていることが確認できる。
勿論これらはdeckコマンドによりバックアップ・リストアも簡単に実行できる。
AI Managerの1つの機能はこのように、設定を簡略化出来る点がある。
従来だとAI Proxyの設定は項目が多くて尻込みする要素があったが、AI Managerを使うと非常に簡単に設定できることが確認できた。
ただ、今時点だと作成後に設定を変更する手段がAI Managerから提供されていないように見える。
設定変更については作成されたService/Route/Pluginを手動で変更する必要がありそうだ。
(将来的には改善されるんじゃないかなと思う)
メトリクスの確認
Kong Gateway経由でそれぞれ名前を聞いてみる。
まずはOpenAIから。
curl -k --compressed -X POST localhost:8000/openai \
-H "Content-Type: application/json" -d '{
"messages": [{
"role": "user",
"content": "あなたの名前を教えてもらっていいですか?"
}] }' | jq .
実行した結果、以下の回答が得られた。
"content": "私の名前はOpenAIです。あなたの質問に答えるためにプログラムされた人工知能です。",
次にCohereに対して実行してみる。
curl -k -X POST localhost:8000/cohere \
-H "Content-Type: application/json" -d '{
"messages": [{
"role": "user",
"content": "あなたの名前を教えてもらっていいですか?"
}] }' | jq .
}
実行した結果、以下の回答が得られた。
"content": "はい、もちろんです!私の名前は「ココア」です。皆さんに楽しいお話を提供できるよう頑張りますね。よろしくお願いします!",
それぞれ正常にアクセスできるようだ。
実行後、AI Managerの画面を再度見てみる。
それぞれのモデルへアクセスした時の情報(トークン数、レイテンシ等)が確認できる。
ここで詳細を見るためにLLM名(ここではCohere)をクリックする。
すると以下のようにリクエスト数や接続元agentの情報などが表示されるようになった。
今はConsumerを設定していなかったのでAnonymousになった。
試しにConsumerを設定してみる。
対象ServiceにKey Auth Pluginを設定し、yamada
というConsumerにキー(yamada-key
)を割り当てて再度アクセスしてみる。(設定方法の説明は割愛)
最初に鍵無しでアクセスする。
{
"message": "No API key found in request",
"request_id": "9bf61175706b8d523ecbf1428a67f87e"
}
エラーとなった。
なお、Plugin execution orderを見るとai-proxyの優先度が770でkey-authが1250となっており、Key Auth Pluginでエラーとなった場合はAI Proxy Pluginまで行かずにエラーとなるため、AI側のメトリクスにはエラーはカウントされない。
次に-H "apikey:yamada-key"
をつけて再度アクセスする。
curl -k -X POST localhost:8000/cohere -H "apikey:yamada-key" -H "Content-Type: application/json" -d '{
"messages": [{
"role": "user",
"content": "あなたの名前を教えてもらっていいですか?"
}] }' | jq .
今度は問題なくアクセスできる。
AI Managerのダッシュボードを見るとアクセスしたConsumerが確認できr。
次に左サイドバーのGo to LLM analytics
をクリックして詳細を確認する。
デフォルトでは以下のようにリクエストカウントが表示される。
せっかくなのでConsumerを確認してみる。
by
のところをConsumerに変更する。
filter
でモデルを指定したり、with
で単位をリクエスト数からトークン数に変えたりすることも出来る。
LLMの利用状況を追うのに便利そう。
まとめ
AI Managerを使うことで、LLMへのトラフィックを簡単に設定・可視化することが出来た。
最近はEconomic DoSによるAI破産のような話もあり、LLMの利用を適切に管理・監視する重要性が高まっているが、そのようなガバナンスを聞かせたLLMの利用という点でAI Managerは活躍の場が結構ありそうだと思う。