🤖

AI Gatewayを使ってみる

2024/06/08に公開

はじめに

先月、CloudflareがAI Gatewayという新しいサービスを発表しました。
サービス紹介を見た感じ結構良さそうなので、この記事ではAI Gatewayを使ってみたいと思います。

AI Gatewayとは

AI Gatewayは、ジェネレーティブAIワークロードを管理およびスケーリングするための統合インターフェイスを提供するAI運用プラットフォームです。
モデルが実行される場所に関係なく、サービスと推論プロバイダーの間のプロキシとして機能することです。
しかもコア機能は無料で提供されているので、気軽に試せるのも魅力です。

AI Gateway

プロキシを追加して何か嬉しいか?

AI Gatewayを使うことで、以下のようなメリットがあります。

  • 分析機能:複数のプロバイダーからのメトリクスを集約し、リクエスト数、トークン使用量、時間経過によるコストなどのトラフィックパターンと使用状況を確認できる
  • アルタイムログ:構築中のリクエストやエラーについての監視が可能
  • キャッシング:カスタムキャッシングルールを設定し、リピートリクエストの際に元のモデルプロバイダーAPIを叩く代わりにCloudflareのキャッシュを利用することで、コストとレイテンシーを節約できる
  • 流量制限:アプリケーションのスケールをコントロールし、コストを抑えたり悪用を防いだりするために、アプリケーションが受け取るリクエスト数を制限できる

使ってみる

まずはCloudflareをログインし、AI -> AI Gatewayにて新しいAI Gatewayを作成します。

AI Gateway

次に、AI Gatewayの設定を行います。
Settingにて一旦全ての機能を有効にしておきます。

AI Gateway

最後に、AI Gatewayページの右上にある案内通りに使いたいプロバイダーを選択してコードを書きます。
今回はOpenAIを使ってみたいです。

AI Gateway

キャッシュの効果を確認する

下記のように、curlコマンドで同じ内容を数回リクエストしてみます。

❯ curl -X POST https://gateway.ai.cloudflare.com/v1/xxx/xxx/openai/chat/completions \
 --header 'Authorization: Bearer OPENAI_TOKEN' \
 --header 'Content-Type: application/json' \
 --data '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "What is Cloudflare?"}]}'
 
---
{
  "id": "chatcmpl-9XV9m3SOo1BCGHrFrFA1bs7MGn51G",
  "object": "chat.completion",
  "created": 1717771618,
  "model": "gpt-3.5-turbo-0125",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Cloudflare is a global Content Delivery Network (CDN) and cybersecurity company that helps secure and optimize websites by providing services such as DDoS protection, firewall security, and performance optimization. Cloudflare also offers services like Domain Name System (DNS) management, load balancing, and web application firewall (WAF)."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 63,
    "total_tokens": 75
  },
  "system_fingerprint": null
}

1回目のリクエストが少し時間がかかりますが、2回目以降はすぐに結果が返ってきます。
token数も75のままなので、キャッシュが効いていることがわかります。
キャッシュ時間を伸ばしたい場合は、リクエストの中に cf-cache-ttl というheaderを追加することで設定できます。

AI Gateway

ログを確認する

AI Gatewayのページにて、Real-time logsタグでリクエストのログを確認できます。
ここが便利なのは、リクエストの中身も見れることですね。
個人的にはとても使いやすいと感じました。

AI Gateway

流量制限

まずはキャッシュを無効化にすることとRate-limitingの制限を5回/分に設定し、curlコマンドで複数回リクエストしてみます。

curl -X POST https://gateway.ai.cloudflare.com/v1/xxx/xxx/openai/chat/completions \
 --header 'Authorization: Bearer OPENAI_TOKEN' \
 --header 'Content-Type: application/json' \
 --data '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "What is Cloudflare?"}]}'

---

{"success":false,"result":[],"messages":[],"error":[{"code":2003,"message":"Rate limited"}]}%        

6回目のリクエストでRate limitedのエラーが返ってきました。

AI Gateway

まとめ

本記事では、CloudflareのAI Gatewayを使って各機能の検証までやってみました。
感想としてはAnalyticsやLogsの機能がとても使いやすく、
Rate-limitingの機能も簡単に設定できるので、開発の工数も減らせるのではないかと思います。

Discussion