メインコンテンツへスキップ
Code & Craft
AI活用 約12分で読めます

Cloudflare Workers AI でLLMを無料で使う実装ガイド【2026年新機能】

Cloudflare Workers AI の2026年新機能を活用し、LLMを無料枠で実装する方法を解説。Llama 3.3・Mistral最新版の使い分けから画像生成まで網羅。

Cloudflare Workers AI とは?2026年4月の最新アップデート

Cloudflare Workers AI は、エッジコンピューティング環境で AI モデルを実行できるサーバーレスプラットフォームです。2026年3月のアップデートで、Llama 3.3 70BMistral Large 2 (123B) のサポートが追加され、無料枠での利用範囲が大幅に拡大しました。

従来の OpenAI API や Anthropic Claude API と比較して、以下のメリットがあります:

  • 無料枠が豊富: 1日あたり10,000リクエスト(月間約30万リクエスト)まで無料
  • レイテンシの低減: Cloudflare の世界310都市以上のエッジネットワークで実行
  • 簡単なデプロイ: Wrangler CLI で数分でデプロイ可能
  • モデル選択の自由: テキスト生成・画像生成・音声認識など40種類以上のモデルが利用可能

2026年4月時点での最新モデルラインナップ:

モデル名パラメータ数用途無料枠での制限
Llama 3.3 70B Instruct70Bチャット・コード生成10,000 req/日
Mistral Large 2123B高精度推論・RAG10,000 req/日
Stable Diffusion XL Lightning-画像生成5,000 req/日
Whisper Large V3 Turbo1.5B音声認識10,000 req/日

この記事では、2026年4月時点の最新情報に基づき、Cloudflare Workers AI を使ったLLM実装の実践的な手順を解説します。

Cloudflare Workers AI のセットアップ手順

1. Cloudflare アカウントの作成と Workers の有効化

まず、Cloudflare のダッシュボードから Workers を有効化します。無料プランでも Workers AI の機能は利用可能です。

# Wrangler CLI のインストール(2026年最新版 3.82.0)
npm install -g wrangler@3.82.0

# Cloudflare アカウントにログイン
wrangler login

# 新しい Workers プロジェクトの作成
wrangler init my-ai-worker

2. wrangler.toml の設定

プロジェクトルートに wrangler.toml を作成し、Workers AI の binding を追加します。

name = "my-ai-worker"
main = "src/index.ts"
compatibility_date = "2026-04-01"

# Workers AI の binding を追加
[ai]
binding = "AI"

重要: compatibility_date は 2026-04-01 以降に設定することで、最新の Llama 3.3 と Mistral Large 2 が利用可能になります。

3. TypeScript 環境の準備

型定義を追加して、開発体験を向上させます。

npm install --save-dev @cloudflare/workers-types@4.20260401.0

tsconfig.json を更新:

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "ES2022",
    "lib": ["ES2022"],
    "types": ["@cloudflare/workers-types"]
  }
}

Llama 3.3 70B を使ったチャット実装

2026年3月にリリースされた Llama 3.3 70B Instruct は、GPT-4 クラスの性能を無料で利用できる点が特徴です。以下は基本的なチャット API の実装例です。

// src/index.ts
export interface Env {
  AI: Ai;
}

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    // リクエストボディからメッセージを取得
    const { messages } = await request.json() as {
      messages: { role: string; content: string }[];
    };

    // Llama 3.3 70B でチャット実行
    const response = await env.AI.run('@cf/meta/llama-3.3-70b-instruct-fp8-fast', {
      messages,
      max_tokens: 2048,
      temperature: 0.7,
      top_p: 0.9,
    });

    return Response.json(response);
  },
};

ストリーミングレスポンスの実装

2026年2月のアップデートで、ストリーミングレスポンスが正式サポートされました。リアルタイムなチャット体験を提供できます。

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const { messages } = await request.json() as {
      messages: { role: string; content: string }[];
    };

    // stream: true を指定
    const stream = await env.AI.run('@cf/meta/llama-3.3-70b-instruct-fp8-fast', {
      messages,
      stream: true,
    });

    // ReadableStream を返す
    return new Response(stream as ReadableStream, {
      headers: {
        'Content-Type': 'text/event-stream',
        'Cache-Control': 'no-cache',
        'Connection': 'keep-alive',
      },
    });
  },
};

Mistral Large 2 との使い分け戦略

Llama 3.3 と Mistral Large 2 は、どちらも高性能なモデルですが、得意分野が異なります。

Llama 3.3 70B が優れているケース

  • コード生成: Python・TypeScript・Rust のコード品質が高い
  • 会話の自然さ: 日常会話や顧客サポート
  • 推論速度: 平均レスポンスタイム 800ms(Cloudflare の内部ベンチマーク、2026年3月発表)

Mistral Large 2 (123B) が優れているケース

  • 長文理解: 128K トークンのコンテキストウィンドウ(Llama 3.3 は 8K)
  • 多言語対応: フランス語・スペイン語・ドイツ語の精度が特に高い
  • RAG パフォーマンス: 検索拡張生成での正確性が高い
// RAG 用途では Mistral Large 2 を使用
async function answerWithRAG(question: string, context: string, env: Env) {
  const response = await env.AI.run('@cf/mistral/mistral-large-2-instruct', {
    messages: [
      {
        role: 'system',
        content: `以下のコンテキストを参考に、質問に答えてください。\n\n${context}`,
      },
      {
        role: 'user',
        content: question,
      },
    ],
    max_tokens: 1024,
  });

  return response;
}

以下は、モデル選択のフローチャートです:

flowchart TD
    A[タスクの種類] --> B{コンテキスト長は?}
    B -->|8K以下| C{主な用途は?}
    B -->|8K超| D[Mistral Large 2]
    C -->|コード生成| E[Llama 3.3 70B]
    C -->|日本語会話| E
    C -->|多言語| F{言語は?}
    C -->|RAG| D
    F -->|英語・日本語| E
    F -->|欧州言語| D

このフローチャートは、Cloudflare の公式ドキュメントとコミュニティベンチマーク(2026年3月)に基づいています。

画像生成機能の活用(Stable Diffusion XL Lightning)

2026年1月に追加された Stable Diffusion XL Lightning は、わずか4ステップで高品質な画像を生成できるモデルです。従来の SDXL と比較して、生成速度が約5倍高速化されています。

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const { prompt } = await request.json() as { prompt: string };

    // 画像生成を実行
    const response = await env.AI.run(
      '@cf/bytedance/stable-diffusion-xl-lightning',
      {
        prompt,
        num_steps: 4,  // Lightning版は4ステップ推奨
        guidance_scale: 1.0,  // Lightning版はCFG=1.0推奨
      }
    );

    // 生成された画像を返す(response.image は Uint8Array)
    return new Response(response.image, {
      headers: {
        'Content-Type': 'image/png',
      },
    });
  },
};

画像生成のパラメータチューニング

パラメータ推奨値説明
num_steps4Lightning版では4ステップが最適
guidance_scale1.0CFGを無効化(Lightning版の特性)
width / height1024×1024SDXL の最適解像度

音声認識(Whisper Large V3 Turbo)の実装

2026年2月にリリースされた Whisper Large V3 Turbo は、従来の V3 モデルと比較して推論速度が8倍高速化されています(OpenAI の公式ベンチマーク)。

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    // 音声ファイルを取得
    const formData = await request.formData();
    const audioFile = formData.get('audio') as File;
    const audioBuffer = await audioFile.arrayBuffer();

    // Whisper で文字起こし
    const response = await env.AI.run('@cf/openai/whisper-large-v3-turbo', {
      audio: Array.from(new Uint8Array(audioBuffer)),
      language: 'ja',  // 日本語を指定
    });

    return Response.json(response);
  },
};

Whisper の言語指定による精度向上

language パラメータを指定することで、誤認識が大幅に減少します(特に日本語・韓国語・中国語)。

言語コード精度向上率(Cloudflare調査、2026年3月)
ja(日本語)+23%
ko(韓国語)+19%
zh(中国語)+17%

Workers AI のコスト管理とレート制限

無料枠の詳細(2026年4月時点)

Cloudflare Workers AI の無料枠は以下の通りです:

  • テキスト生成(Llama / Mistral): 10,000 リクエスト/日
  • 画像生成(SDXL Lightning): 5,000 リクエスト/日
  • 音声認識(Whisper): 10,000 リクエスト/日

無料枠を超えた場合の従量課金:

  • テキスト生成: $0.01 / 1,000 リクエスト
  • 画像生成: $0.02 / 1,000 リクエスト
  • 音声認識: $0.015 / 1,000 リクエスト

レート制限の実装

無料枠を超えないよう、Durable Objects を使ったレート制限を実装します。

export class RateLimiter {
  state: DurableObjectState;

  constructor(state: DurableObjectState) {
    this.state = state;
  }

  async fetch(request: Request): Promise<Response> {
    const userId = new URL(request.url).searchParams.get('user');
    const key = `rate_limit:${userId}`;

    // 現在のカウントを取得
    const count = (await this.state.storage.get(key)) || 0;

    if (count >= 100) {  // 1時間あたり100リクエストに制限
      return new Response('Rate limit exceeded', { status: 429 });
    }

    // カウントを増やす(1時間後に自動削除)
    await this.state.storage.put(key, count + 1, {
      expirationTtl: 3600,
    });

    return new Response('OK');
  }
}

以下は、コスト管理のフローチャートです:

flowchart LR
    A[リクエスト受信] --> B{レート制限チェック}
    B -->|OK| C[AI実行]
    B -->|超過| D[429エラー]
    C --> E{無料枠内?}
    E -->|Yes| F[無料実行]
    E -->|No| G[従量課金]
    F --> H[レスポンス返却]
    G --> H

実運用での最適化テクニック

1. プロンプトキャッシング

2026年3月のアップデートで、プロンプトキャッシング機能が追加されました。システムプロンプトを再利用することで、レイテンシを最大40%削減できます。

const response = await env.AI.run('@cf/meta/llama-3.3-70b-instruct-fp8-fast', {
  messages: [
    {
      role: 'system',
      content: 'あなたは優秀なプログラミングアシスタントです。',
      cache: true,  // このメッセージをキャッシュ
    },
    {
      role: 'user',
      content: 'Pythonでフィボナッチ数列を実装してください。',
    },
  ],
});

2. バッチ処理による効率化

複数のリクエストをまとめて処理することで、オーバーヘッドを削減できます。

async function batchProcess(requests: string[], env: Env) {
  // Promise.all で並列実行
  const results = await Promise.all(
    requests.map(prompt =>
      env.AI.run('@cf/meta/llama-3.3-70b-instruct-fp8-fast', {
        messages: [{ role: 'user', content: prompt }],
      })
    )
  );

  return results;
}

3. エラーハンドリングとリトライ

ネットワークエラーや一時的な障害に対応するため、エクスポネンシャルバックオフを実装します。

async function runWithRetry(prompt: string, env: Env, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await env.AI.run('@cf/meta/llama-3.3-70b-instruct-fp8-fast', {
        messages: [{ role: 'user', content: prompt }],
      });
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      
      // エクスポネンシャルバックオフ(2^i 秒待機)
      await new Promise(resolve => setTimeout(resolve, Math.pow(2, i) * 1000));
    }
  }
}

まとめ

Cloudflare Workers AI を使うことで、以下のメリットが得られます:

  • 無料枠が豊富: 月間30万リクエストまで無料で利用可能
  • 最新モデル: Llama 3.3 70B(2026年3月)、Mistral Large 2(2026年2月)に対応
  • 低レイテンシ: エッジネットワークで平均800ms以下のレスポンス
  • 簡単デプロイ: Wrangler CLI で数分でデプロイ完了
  • マルチモーダル: テキスト・画像・音声を統一プラットフォームで処理

特に、従量課金の API 費用を抑えたいスタートアップや個人開発者にとって、Workers AI は最有力の選択肢となります。

2026年4月時点では、Llama 3.3 70B のコード生成能力と Mistral Large 2 の長文理解能力を組み合わせることで、ほとんどのユースケースを無料枠内でカバーできます。

今後も Cloudflare は新モデルの追加やパフォーマンス改善を継続的に行っており、公式ブログやリリースノートを定期的にチェックすることをお勧めします。

参考リンク

#Cloudflare Workers #LLM #AI #サーバーレス #コスト削減
シェア: