複数の LLM プロバイダーの管理を一元化できる Kong AI Gateway を試してみた

2024.04.01

こんにちは、CX事業本部 製造ビジネステクノロジー部の田中孝明です。

はじめに

Kong から複数の LLM プロバイダーの管理を一元化できる Kong AI Gateway が 2月 に発表されたので動作してみた結果をブログにしました。

Kong とは

Kong Gateway とは OSS の API ゲートウェイ であり、複数のマイクロサービスが提供するAPIを一元的に管理しルーティングを制御する機能を提供します。

サービスは OSS 版と SaaS 版の Kong Konnect など、デプロイする環境に応じてオンプレミスや任意のクラウド上で動かすことができます。

リクエスト変換、レスポンス変換、SOAP -> JSON 変換などの複数のプラグインがサポートされており、複数の API の共通機能や管理を一元化できます。

デジタル庁に Kong Gateway が推奨APIゲートウェイに認定されています。

AI ゲートウェイ機能

複数の AI LLM プロバイダーの出現により、開発者や組織が AI サービスの使用と管理する方法が複雑になりつつあります。

Kong AI Gateway では正規化された API レイヤーを提供することで、アプリケーションから利用しやすくするほか、ガバナンスや使用状況の観測などを共通化できる機能があります。

いくつかの機能を抜粋して紹介します。

AI プロバイダー プロキシ

複数の AI リクエストをルーティングする機能です。この正規化された API レイヤーは、複数のメリットがあります。

  • AI プロバイダー の API 仕様変更への柔軟性確保、API レイヤーを介することで、アプリケーション側の仕様変更への対応を軽減し、コードの再利用性が促進します
  • AI プロバイダーの認証情報の一元管理
  • AI データとその使用状況に対するガバナンスと可観測性を共通の基盤で提供

このコア AI ゲートウェイ機能は、AI プロキシプラグイン で有効にできます。

Completion

AI システムが単一のプロンプトに基づいてテキスト出力を生成するように要求されるリクエストのタイプ。 llm/v1/completions というエンドポイントになります。

チャット

会話型 AI インターフェイスのリクエストのタイプ。AI はユーザー入力に対してダイアログ応答を返します。AI システムはその応答を会話履歴に基づいて決定します。 llm/v1/chat というエンドポイントになります。

AI 利用ガバナンス

AI を企業が利用するに当たってさまざまなリスクに対応を迫られるケースがあります。

特に、機密データが AI プロバイダーに漏洩し、組織とその顧客がデータ侵害やその他のセキュリティ リスクにさらされることが懸念されます。

Kong AI Gateway では AI データと使用の制御を支援する追加のプラグインが提供されています。AI プロキシ プラグインと組み合わせて使用​​され、ユーザー向けに安全な AI エクスペリエンスを構築できます。

データガバナンス

AI プロンプトガードプラグイン を介して、AI へのリクエストを制御する機能が備わってます。許可/拒否リスト構成に続いて正規表現を構成できます。

プロンプトが拒否されると、クライアントに対する HTTP 4xx コード応答が返され、問題のあるリクエストの出力が防止されます。

今回はこちらを試してみたいと思います。

リクエストの変換

リクエストとレスポンスの変換を行うプラグインが提供されています。Kong Gateway の方にも同じ機能があります。

使ってみる

公式から Docker が動く環境であれば簡単に動作確認できるスクリプトが提供されています。

このスクリプトは AI プロキシプラグイン がデフォルトで有効になっています。

導入編

curl -Ls https://get.konghq.com/ai | bash

SaaS 版の Kong Konnect へデプロイするか問われます。

This CLI deploys the Kong AI Gateway data plane on a local Docker instance.
By default, Kong Konnect (https://konghq.com/kong-konnect) provides
a serverless control plane and many other advanced API management capabilities.

Optionally, you may choose to deploy the AI Gateway locally using Docker only,
but you will not have access to the additional Kong Konnect capabilities.

Do you want to deploy on Kong Konnect (y/n)

今回はローカル環境で試すので n を選択しました。

次に各種 AI プロバイダー の API キーを入力します。

Configuring LLM Providers...

First we collect API Keys for hosted LLM providers, for example OpenAI.
Provide a key for each provider you want to enable and press Enter.
Not providing a key and pressing Enter will skip configuring that provider.

→ Enter API Key for OpenAI    : <OpenAI API Key>
→ Enter API Key for Cohere    : <Cohere API Key>
→ Enter API Key for Azure     : <Azure API Key>
→ Enter API Key for Anthropic : <Anthropic API Key>

API 利用が可能なプランの API キーじゃないとリクエストが失敗しますので注意してください。

→ Do you want to enable the local provider Mistral  ? (y/n): y
→ Do you want to enable the local provider Llama2   ? (y/n): y

ローカルで動くモデルを選べます。ここでは両方 y を選択しました。

動作確認

localhost:8002 で管理画面を開いてみました。

AI プロキシプラグイン がデフォルトで有効になっているのが確認できます。

次にリクエストを投げてみたいと思います。

 curl -s -X POST localhost:8000/openai/cohere \
  -H "Content-Type: application/json" -d '{
    "messages": [{
    "role": "user",
    "content": "Do you know Pikachu?"
  }] }'

とあるキャラについて問い合わせた結果が返ってきました。

データガバナンス導入

AI プロンプトガードプラグイン を導入して任意の文字を含むリクエストを制御してみたいと思います。

AI プロンプトガードプラグイン を有効化し、任意の名前と適用する範囲を選択します。今回はグローバルを選択しました。

プロンプトに特定の文字列があった場合に拒否するように設定してみました。 これで先ほどと同じリクエストを投げてみます。

このようにリクエストが拒否されることが確認できました。

まとめ

複数の LLM プロバイダーが出てきており、アプリケーションで利用したいケースも多くなったのではないでしょうか。その時に API の仕様変更の影響を局所化できたり、企業全体で共通に制御したいものが出てきた時に API レイヤーを適用することで負担を軽減することができるでしょう。