Open10

Cloudflare AI Gatewayを使ってみる

hosaka313hosaka313

What

お屠蘇気分でCloudflare AI Gatewayを試してみた記録。

新規性はあまりなく、既存の記事の収集などがメイン。

hosaka313hosaka313

料金

https://developers.cloudflare.com/ai-gateway/reference/pricing/

AI Gateway's core features available today are offered for free, and all it takes is a Cloudflare account and one line of code to get started. Core features include: dashboard analytics, caching, and rate limiting.

基本無料。追加ログで課金あり。

Free allocation and overage pricing

Plan Free logs stored Overage pricing
Workers Free 100,000 logs total N/A – Upgrade to Workers Paid
Workers Paid 200,000 logs total $8 per 100,000 logs stored per month
hosaka313hosaka313

やってみる

Gatewayを作る

「AI」タブの下にあった。

Gemini(Google AI Studio)で試す

「API」のところからサンプルのCurlリクエストが取得できる。

プロバイダはAI Studioにした。

Use the code snippet below to test your endpoint:の下のサンプルリクエストのGOOGLE_AI_STUDIO_TOKENのところにAPIキーを埋める。

hosaka313hosaka313

ログ

以下のような感じ。

  • Request
  • Response
  • Endpoint
  • モデル
  • Token
  • コスト

が取得できる。

hosaka313hosaka313

Analytics

プロバイダにまたがるログが取れる。良い。
!

Setting

キャッシュやRate Limit、Authなど、設定できる。

hosaka313hosaka313

SDKとの連携

各SDKとの連携がちゃんとできるか気になった。

Vercel AI SDKの例があった。
https://developers.cloudflare.com/ai-gateway/integrations/vercel-ai-sdk/

Vertex AIでGeminiを使う場合、Application Default CredentialでAuthがちゃんと通るのか、やってみないと怪しい。

ドキュメントではAPIキーを使うように書いてあった。
https://developers.cloudflare.com/ai-gateway/providers/vertex/

各SDKでcustom endpointは設定できるはずなので、それらを使うっぽい。

https://developers.cloudflare.com/ai-gateway/providers/google-ai-studio/

hosaka313hosaka313

Azure OpenAI(Node.jsライブラリ)の場合

以下のようにbaseURLを与えれば動作。

    this.openai = new AzureOpenAI({
      apiKey: env.OPENAI_API_KEY,
      baseURL: `${env.CLOUDFLARE_AI_GATEWAY}/azure-openai/${env.AZURE_OPENAI_RESOURCE_NAME}`,
      apiVersion: env.AZURE_OPENAI_API_VERSION,
    })
    this.model = env.OPENAI_MODEL
hosaka313hosaka313

Vertex AI(@google-cloud/vertexai

    this.vertexAI = new VertexAI({
      project: env.GCLOUD_PROJECT_ID,
      location: env.GCLOUD_LOCATION,
      apiEndpoint: "gateway.ai.cloudflare.com/v1/<accointId>/<gateway_id>/google-vertex-ai"
    })

ポイントとして、こちらはhttps://は除く。理由はライブラリで以下のようになっているため。

export async function postRequest({
  region,
  resourcePath,
  resourceMethod,
  token,
  data,
  apiEndpoint,
  requestOptions,
  apiVersion = 'v1',
}: {
  region: string;
  resourcePath: string;
  resourceMethod: string;
  token: string | null | undefined;
  data: GenerateContentRequest | CountTokensRequest;
  apiEndpoint?: string;
  requestOptions?: RequestOptions;
  apiVersion?: string;
}): Promise<Response | undefined> {
  const vertexBaseEndpoint = apiEndpoint ?? `${region}-${API_BASE_PATH}`;

  let vertexEndpoint = `https://${vertexBaseEndpoint}/${apiVersion}/${resourcePath}:${resourceMethod}`;