ゲートウェイ経由で大規模モデルの通話コストを削減し、コンプライアンスを向上させる方法

著者:趙偉児(チャオ・ウェイジ)

ChatGPT に代表される AIGC テクノロジーは、エンタープライズ生産に大きな変化をもたらし、エンタープライズ アプリケーション開発の分野で地位を占めています。AI 大型モデルは、その強力な学習能力により、開発者によるコードの作成とデバッグ、研究者による科学研究分野の迅速な理解、マーケターによる製品説明の作成、デザイナーによる新作のデザインなど、人々がさまざまな複雑なタスクを完了するのに役立ちます。多くの企業は大規模な AI モデルの使用コストを削減する方法を模索しており、ゲートウェイを介した大規模な AI モデルの API 管理が一般的な要件になっています。

Higress は大規模な AI モデルの使用コストをどのように削減しますか?

OpenAI を例に挙げると、OpenAI の API 呼び出しはリクエストの量やサブスクリプション時間に基づいて課金されるのではなく、各リクエストの使用量に基づいて課金されます。大規模な AI モデルの場合、モデルによって入出力されるトークンの数によって、現在のモデルの推論タスクの複雑さをより適切に測定できます。したがって、リクエストの使用量としてトークンに基づいて課金するのが、OpenAPI の標準の課金ポリシーです。モデルトークンの課金基準も異なり、モデルが複雑であればあるほど、より良い結果が得られますが、課金も高くなります。OpenAIはAPIキーをユーザーに配布することでユーザー認証や課金などの機能を完結させます。

ここに画像の説明を挿入

組織がメンバーごとにAI大型モデルのアクセス権限(API Key)を申請するのは明らかに非現実的です。分散型 API キーは、組織による API 使用量の計算、管理、支払いに役立たないため、AI 大規模モデルの使用コストが増加します。第二に、組織にとって、AI モデルの選択、使用頻度、メンバーのアクセス権、AI ラージ モデルにどのようなデータが公開されるかは、すべて管理において注意を払う必要がある機能です。

Higress 基于丰富的插件能力,提供认证鉴权、请求过滤、流量控制、用量监测和安全防护等功能,帮助组织与 AI 大模型的 API 交互变得更加安全、可靠和可观察:基于 Higress 提供的认证鉴权能力,组织可以实现通过统一的 API 密钥进行 AI 模型的调用量管理和付费等,并为团队成员授予不同的AI模型访问权限;基于 Higress 提供的流量控制能力,组织能为不同的模型与用户设置差异化的访问速率限制,有效降低 AI 模型的使用成本;基于 Higress 提供的请求拦截能力,组织能够有效过滤含敏感信息的访问请求,防护部分内部站点资源不对外暴露,从而有效保障内部数据安全;基于商业版 Higress [ 1] 提供的开箱即用的指标查询和日志记录的能力,组织能够完成对不同用户的 AI 模型调用的用量观测与分析,从而制定更加合理的AI模型使用策略。

Higress ドッキング OpenAI 大言語モデル実戦

次に、OpenAI ラージ言語モデルに接続する Higress を例として、Higress がどのように AI ラージ モデルにシームレスに接続するかを紹介します。全体的なスキームは図に示されており、WASM をベースに、OpenAI 言語モデルのリクエスト エージェント転送を実現するために Higress プラグインを拡張しました。Higress が提供する Key Auth 認証プラグインの機能に基づいて、統一された API キーの下でマルチテナント認証を実装します。Higress が提供するリクエスト ブロックのリクエスト フィルタリング機能に基づいて、機密情報を含むリクエストの傍受を実装し、ユーザー データのセキュリティを確保します。

ここに画像の説明を挿入

前提条件

  1. Higress をインストールします。Higress のインストールと展開に関するドキュメント[ 2]を参照してください。
  2. Go 言語で WASM プラグインを開発するための開発環境を準備します。「GO 言語での WASH プラグインの開発[ 3]」を参照してください。

WASMベースのAIプロキシプラグイン

以下に、Higress と WASM に基づく AI 大規模モデル API プロキシ プラグイン ソリューションを示します。Higress は、WASM に基づいて外部に拡張する機能をサポートしています。WASM プラグインによって提供される多言語エコロジーとホットスワップ メカニズムにより、プラグインの実装と展開が容易になります。Higress は、プラグインでの外部サービスのリクエストもサポートしており、AI エージェント プラグインの実装に効率的なソリューション パスを提供します。

実装例

OpenAI-APIのプロキシプラグインの実装例を示します。詳細はAIプロキシプラグイン[ 4]を参照してください。次のコードは、プラグインの関連構成が完了した後、リクエスト プロキシが HTTP に基づいて OPENAI-API に自動的に転送され、OPENAI-API からの応答を受信することにより、AI モデルの呼び出しが完了することを実現します。具体的な実装手順は次のとおりです。

  1. RouteCluster メソッドで特定の OPENAI-API ホストを指定し、ユーザー リクエスト転送の特定のパスを確認し、リクエスト プロキシ転送用の新しい HTTP クライアントを作成します。
func parseConfig(json gjson.Result, config *MyConfig, log wrapper.Log) error {
  chatgptUri := json.Get("chatgptUri").String()
  var chatgptHost string
  if chatgptUri == "" {
    config.ChatgptPath = "/v1/completions"
    chatgptHost = "api.openai.com"
  } //请求默认转发到OPEN AI API
    ...
  config.client = wrapper.NewClusterClient(wrapper.RouteCluster{
    Host: chatgptHost,
  }) //通过RouteCluster方法确认请求转发的具体host
    ...
}
  1. ユーザーリクエストをOPENAI-API形式でカプセル化し、HTTPクライアント経由でリクエストを転送して応答を受け入れ、応答をユーザーに転送します。
//OPENAI API接收的请求体模版,详见:https://platform.openai.com/docs/api-reference/chat
const bodyTemplate string = `
{
"model":"%s",
"prompt":"%s",
"temperature":0.9,
"max_tokens": 150,
"top_p": 1,
"frequency_penalty": 0.0,
"presence_penalty": 0.6,
"stop": ["%s", "%s"]
}
`
func onHttpRequestHeaders(ctx wrapper.HttpContext, config MyConfig, log wrapper.Log) types.Action {
    ...
    //根据用户的请求内容进行OPENAI API请求体封装 
  body := fmt.Sprintf(bodyTemplate, config.Model, prompt[0], config.HumainId, config.AIId)
  //通过HTTP Client进行转发
    err = config.client.Post(config.ChatgptPath, [][2]string{
    {"Content-Type", "application/json"},
    {"Authorization", "Bearer " + config.ApiKey},
  }, []byte(body),
    func(statusCode int, responseHeaders http.Header, responseBody []byte) {
      var headers [][2]string
      for key, value := range responseHeaders {
        headers = append(headers, [2]string{key, value[0]})
      }
            //接收来自于OPENAI API的响应并转发给用户
      proxywasm.SendHttpResponse(uint32(statusCode), headers, responseBody, -1)
    }, 10000)
    ...
}

Higress でカスタム AI-Proxy-Wasm プラグインを有効にするプロセスは次のとおりです。

ここに画像の説明を挿入

この例では、コンパイルされた AI-proxy-plugin-wasm ファイルを提供し、対応する Docker イメージの構築とプッシュを完了します。推奨される構成は次のとおりです。

ここに画像の説明を挿入

プラグインの設定手順

このプラグインは設定が簡単で、グローバル/ドメイン名レベル/ルーティング レベルでのプロキシ転送をサポートします。ルート レベルの構成をお勧めします。対応するルート構成を選択します-対応するルートを選択します-ポリシー- プラグインを有効にします構成フィールドには次のものが含まれます。

ここに画像の説明を挿入

構成例は次のとおりです。

AI プロキシ プラグイン構成

apiKey: "xxxxxxxxxxxxxxxxxx"
model: "curie"
promptParam: "text"

この構成によれば、ゲートウェイは OpenAI API の下でキュリー モデルにプロキシし、ユーザーは text キーワードを介して URL にテキストを入力します。

curl "http://{GatewayIP}/?text=Say,hello"

OpenAI API から応答を取得します。

ここに画像の説明を挿入

キー認証に基づくマルチテナント認証

メンバーごとに AI-API キーを発行する形式とは異なり、企業は内部承認 (キー認証など) に依存して、Higress ゲートウェイが提供する認証および認証機能に基づいて AI モデルへのメンバーのアクセスを管理することができます。これにより、メンバーが使用できるサービスとモデルが制限され、リクエストのプロキシ転送に統一された AI-API キーを使用して、API 使用量の一元管理を実現できます。次に、キー認証を例として、Higress ベースのマルチテナント認証機能を紹介します。

Key Auth プラグインは、ゲートウェイで API Key に基づく認証・認証機能を実現し、HTTP リクエストの URL パラメーターやリクエストヘッダーから API Key の解析をサポートし、API にアクセス権限があるかどうかを検証します。Higress ゲートウェイのマルチテナント認証は、Higress コンソール - プラグイン マーケット - Key Auth でグローバル設定とルートレベルの設定を行うことで実現できます。

ここに画像の説明を挿入

Key-Auth グローバル構成サンプル

#以下配置
consumers:
- credential: "xxxxxx"
  name: "consumer1"
- credential: "yyyyyy"
  name: "consumer2"
global_auth: false
in_header: true
keys:
- "apikey"

ここに画像の説明を挿入

キー認証のルートレベルの設定例

allow: [consumer1]

上記の構成は、AI モデル サービスを指すコンシューマ グループ Consumer を定義し、consumer1 のみが現在のルートで AI モデル サービスにアクセスする権限を持ちます。

curl "http://{GatewayIP}/?text=Say,hello"
#请求未提供 API Key,返回401

curl "http://{GatewayIP}/?text=Say,hello" -H "apikey:zzzzzz"
#请求提供的 API Key 未在消费者组内,无权访问,返回401

curl  "http://{GatewayIP}/?text=Say,hello" -H "apikey:yyyyyy"
#根据请求提供的 API Key匹配到的调用者无AI模型服务的访问权限,返回403

curl "http://{GatewayIP}/?text=Say,hello" -H "apikey:xxxxxx"
#请求合法且有AI模型服务访问权限,请求将被代理到AI模型,正常得到OpenAI API的响应

Higress は、ゲートウェイ レベルのマルチテナント認証を提供するだけでなく、電流制限などの機能も提供します。Key Rate Limit プラグインは、コンシューマ グループ内のユーザーのメンバーシップに基づいてユーザー アプリケーション レートを制限できるため、主要なアプリケーションによる高コストの AI 大規模モデル サービスの消費を制限できます。Higress は、マルチテナント認証プラグインと電流制限などのプラグイン機能に基づいて、AI ラージ モデル API のアクセス権、アクセス数、呼び出しコストを完全に制御できます。

リクエストブロックに基づくデータセキュリティ

大規模な AI モデル、特に言語モデルの場合、良好な収益を得るには、多くの場合、ユーザーがモデルの入力として十分なプロンプト (プロンプト) を提供する必要があります。これは、組織や個人がヒントを提供する過程でデータ漏洩のリスクに直面する可能性があることも意味します。そのため、AIモデルを利用する過程でデータのセキュリティをどのように確保するかは、API呼び出し側にとっても重要な課題となります。データのセキュリティを確保するには、AI モデルの API 呼び出しチャネルを厳密に制御する必要があります。1 つの方法は、公開された API で特定の承認済みモデルを使用することです。もう 1 つの方法は、機密情報を含むユーザーのリクエストを傍受することです。これは、ゲートウェイ レベルで特定のリクエスト インターセプトを設定することで実現できます。Higress は、Request Block プラグインに基づいたリクエスト インターセプト機能を提供します。これにより、無許可のモデルがユーザー情報にアクセスすることを防ぎ、機密情報を含むユーザー リクエストがインターネットに公開されるのを防ぐことができます。

リクエスト ブロック プラグインは、URL、リクエスト ヘッダー、その他の特性に基づいて HTTP リクエストのシールドを実装します。これを使用して、一部のサイト リソースが外部に公開されないように保護できます。Higress コンソール プラグイン マーケットリクエスト ブロックでマスク フィールドを設定することにより、機密フィールドを含むリクエストが外部に送信されるのを防ぐことができます。

ここに画像の説明を挿入

リクエストブロックのルートレベル設定のサンプル

blocked_code: 404
block_urls:
- password
- pw
case_sensitive: false

上記の設定では、現在のルートの下に URL ベースのシールド フィールドが定義されており、機密情報 (パスワード、pw など) を含むリクエストはブロックされます。

curl "http://{GatewayIP}/?text=Mypassword=xxxxxx" -H "apikey:xxxxxx"
curl "http://{GatewayIP}/?text=pw=xxxxxx" -H "apikey:xxxxxx"
#上述请求将被禁止访问,返回404

Higress商用版に基づく利用状況の観察と分析

組織にとって、各ユーザーの呼び出し AI モデルの使用状況の観察と分析は、使用状況とコストを理解するのに役立ちます。各ユーザーが自分の通話量とオーバーヘッドを理解することも必要です。したがって、ゲートウェイ層での呼び出しの観察と分析は、AI 大型モデルの API 管理に必要な機能です。Higress の商用バージョンは、さまざまなインジケーターやログ システムと深く統合されており、すぐに使用できる使用状況観察分析レポート作成メカニズムを提供します。これにより、さまざまな API の使用状況をリアルタイムで表示し、さまざまなパラメーターに従ってフィルター処理できるため、API の使用状況をよりよく理解できます。

各ユーザーによる OPENAI-Curie モデルへの呼び出し量の観察を例に挙げると、ユーザーはユーザーを区別するための可観測性パラメータ リクエスト ヘッダー (MSE 管理コンソールの x-mse-consumer - クラウド ネイティブ ゲートウェイ - ゲートウェイ インスタンス - パラメータ設定 - ログ形式 調整)を設定し、それを観察リストに含めることができます。その後、「観測分析 - ログセンター」に進み、統計グラフ機能を設定すればAPI利用状況の観測と分析が完了します。次の図に示すように、ユーザー Consumer1 とユーザー Consumer2 の OPENAI-Curie モデルへの呼び出しの量が円グラフの形式で表示されます。

ここに画像の説明を挿入

ボーナス: Higress コンソールのサンプル用チャットボット

Higress チームは、GPT モデルベースのイースターエッグ チャットボットをHigress コンソール サンプルにデプロイしました[ 5] . Higress の使用中に質問がある場合は、質問してください。

ここに画像の説明を挿入

Higress が役立つと思われる場合は、github: Higress にアクセスしてスターを付けてください。

関連リンク:

[1] 製品版ハイグレス

https://www.alibabacloud.com/zh/product/microservices-engine

[2] Higress のインストールおよび展開に関するドキュメント

https://higress.io/zh-cn/docs/ops/deploy-by-helm/#%E6%94%AF%E6%8C%81-istio-crd%E5%8F%AF%E9%80%89

[3] GO言語を使用してWASHプラグインを開発する

https://higress.io/zh-cn/docs/user/wasm-go/

[4] AIプロキシプラグイン

https://github.com/alibaba/higress/tree/main/plugins/wasm-go/extensions/chatgpt-proxy

[5] Higress コンソールのサンプル

http://demo.higress.io/login?redirect=/route

[6] github: ハイグレス

https://github.com/alibaba/higress

おすすめ

転載: blog.csdn.net/alisystemsoftware/article/details/131874793