Back to list
biwakonbu

workers-ai

by biwakonbu

Claude Code 用プラグイン

0🍴 0📅 Jan 25, 2026

SKILL.md


name: workers-ai description: Cloudflare Workers AI の完全ガイド。利用可能モデル(LLM、画像、音声、埋め込み)、Vectorize、AI Gateway の使い方と設定を提供。Use when user asks about Workers AI, AI models, Vectorize, AI Gateway, LLM, image generation, speech recognition, embeddings, or RAG. Also use when user says Workers AI, AI モデル, ベクトル検索, 埋め込み, RAG. context: fork

Cloudflare Workers AI

概要

Workers AI は Cloudflare エッジネットワーク上でサーバーレス AI 推論を提供。 LLM、画像生成、音声認識、埋め込みなど多様なモデルをサポート。

設定

# wrangler.toml
[ai]
binding = "AI"

基本的な使い方

export default {
  async fetch(request: Request, env: Env) {
    const response = await env.AI.run(
      "@cf/meta/llama-3.1-8b-instruct",
      {
        messages: [
          { role: "system", content: "You are a helpful assistant." },
          { role: "user", content: "Hello!" },
        ],
      }
    );

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

利用可能モデル

LLM(大規模言語モデル)

モデルパラメータ特徴
@cf/meta/llama-4-scout-17b-16e-instruct17Bマルチモーダル、MoE
@cf/meta/llama-3.3-70b-instruct-fp8-fast70B高性能
@cf/meta/llama-3.2-11b-vision-instruct11B画像認識
@cf/meta/llama-3.2-3b-instruct3B軽量
@cf/meta/llama-3.1-8b-instruct8Bバランス型
@cf/mistral/mistral-small-3.1-24b-instruct24B128K コンテキスト
@hf/nousresearch/hermes-2-pro-mistral-7b7BFunction Calling

画像生成

モデル特徴
@cf/stabilityai/stable-diffusion-xl-base-1.0SDXL 基本
@cf/bytedance/stable-diffusion-xl-lightning高速生成
@cf/lykon/dreamshaper-8-lcm高品質

音声認識

モデル特徴
@cf/openai/whisper-large-v3-turbo高精度、多言語
@cf/openai/whisper標準

埋め込み

モデル次元数特徴
@cf/baai/bge-base-en-v1.5768英語特化
@cf/baai/bge-m31024100言語対応
@cf/baai/bge-small-en-v1.5384軽量

テキスト分類・翻訳

モデル用途
@cf/huggingface/distilbert-sst-2-int8感情分析
@cf/meta/m2m100-1.2b多言語翻訳

LLM 使用例

基本的なチャット

const response = await env.AI.run("@cf/meta/llama-3.1-8b-instruct", {
  messages: [
    { role: "system", content: "あなたは親切なアシスタントです。" },
    { role: "user", content: "東京の天気を教えて" },
  ],
  max_tokens: 256,
  temperature: 0.7,
});

console.log(response.response);

ストリーミング

const stream = await env.AI.run("@cf/meta/llama-3.1-8b-instruct", {
  messages: [{ role: "user", content: "長い物語を書いて" }],
  stream: true,
});

return new Response(stream, {
  headers: { "Content-Type": "text/event-stream" },
});

Function Calling

const response = await env.AI.run(
  "@hf/nousresearch/hermes-2-pro-mistral-7b",
  {
    messages: [{ role: "user", content: "東京の天気は?" }],
    tools: [
      {
        type: "function",
        function: {
          name: "get_weather",
          description: "指定した場所の天気を取得",
          parameters: {
            type: "object",
            properties: {
              location: { type: "string", description: "場所" },
            },
            required: ["location"],
          },
        },
      },
    ],
  }
);

画像生成

const response = await env.AI.run(
  "@cf/stabilityai/stable-diffusion-xl-base-1.0",
  {
    prompt: "A beautiful sunset over mountains, high quality, 4k",
    negative_prompt: "blurry, low quality",
    num_steps: 20,
    guidance: 7.5,
  }
);

return new Response(response, {
  headers: { "Content-Type": "image/png" },
});

音声認識

const audioData = await request.arrayBuffer();

const response = await env.AI.run(
  "@cf/openai/whisper-large-v3-turbo",
  {
    audio: [...new Uint8Array(audioData)],
  }
);

return Response.json({
  text: response.text,
  language: response.detected_language,
});

埋め込み

const response = await env.AI.run("@cf/baai/bge-base-en-v1.5", {
  text: ["Hello, world!", "How are you?"],
});

// response.data = [
//   { embedding: [0.1, 0.2, ...], shape: [768] },
//   { embedding: [0.3, 0.4, ...], shape: [768] }
// ]

Vectorize

概要

エッジで動作する分散型ベクトルデータベース。RAG アプリケーション構築に最適。

インデックス作成

# プリセット使用
wrangler vectorize create my-index \
  --preset @cf/baai/bge-small-en-v1.5

# 手動設定
wrangler vectorize create my-index \
  --dimensions 768 \
  --metric cosine

設定

# wrangler.toml
[[vectorize]]
binding = "VECTORIZE"
index_name = "my-index"

ベクトル操作

// 挿入
await env.VECTORIZE.upsert([
  {
    id: "doc-1",
    values: embedding,  // from Workers AI
    metadata: { title: "Document 1", category: "tech" },
  },
]);

// 検索
const results = await env.VECTORIZE.query(queryVector, {
  topK: 5,
  filter: { category: "tech" },
  returnMetadata: "all",
});

// 結果: results.matches = [
//   { id: "doc-1", score: 0.95, metadata: {...} },
//   ...
// ]

// 削除
await env.VECTORIZE.deleteByIds(["doc-1", "doc-2"]);

RAG パターン

export default {
  async fetch(request: Request, env: Env) {
    const { query } = await request.json();

    // 1. クエリを埋め込みに変換
    const embedResponse = await env.AI.run("@cf/baai/bge-base-en-v1.5", {
      text: [query],
    });
    const queryVector = embedResponse.data[0].embedding;

    // 2. 類似ドキュメント検索
    const results = await env.VECTORIZE.query(queryVector, {
      topK: 3,
      returnMetadata: "all",
    });

    // 3. コンテキスト構築
    const context = results.matches
      .map((m) => m.metadata?.content)
      .join("\n\n");

    // 4. LLM で回答生成
    const response = await env.AI.run("@cf/meta/llama-3.1-8b-instruct", {
      messages: [
        {
          role: "system",
          content: `以下のコンテキストに基づいて回答してください:\n\n${context}`,
        },
        { role: "user", content: query },
      ],
    });

    return Response.json({ answer: response.response });
  },
};

AI Gateway

概要

複数の AI プロバイダー(OpenAI、Anthropic、Google など)を統合管理。 ログ、キャッシュ、レート制限、フォールバックを提供。

対応プロバイダー

  • OpenAI
  • Anthropic
  • Google AI
  • Groq
  • DeepSeek
  • Workers AI
  • その他16以上

設定

ダッシュボードで AI Gateway を作成し、エンドポイントを取得。

使用例

// AI Gateway 経由で OpenAI を呼び出し
const response = await fetch(
  "https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/openai/chat/completions",
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": `Bearer ${env.OPENAI_KEY}`,
    },
    body: JSON.stringify({
      model: "gpt-4",
      messages: [{ role: "user", content: "Hello" }],
    }),
  }
);

機能

機能説明
ログリクエスト/レスポンスを記録
キャッシュ同一リクエストのキャッシュ
レート制限リクエスト数制限
フォールバックプロバイダー障害時の自動切り替え
DLP機密データ検出(ベータ)

料金体系

Workers AI

項目無料枠有料
ニューロン10,000/日$0.011/1,000ニューロン

ニューロン消費量(目安):

  • LLM: 入力トークン数 × 係数
  • 画像生成: 約10,000ニューロン/画像
  • 埋め込み: 少量

Vectorize

項目無料枠有料
クエリ30M/月$0.01/1M クエリ
ストレージ5M ベクトル次元$0.05/1M 次元月

REST API

Workers 外からも使用可能:

curl https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/@cf/meta/llama-3.1-8b-instruct \
  -X POST \
  -H "Authorization: Bearer {API_TOKEN}" \
  -d '{
    "messages": [
      {"role": "user", "content": "Hello"}
    ]
  }'

ベストプラクティス

モデル選択

用途推奨モデル
一般的なチャットllama-3.1-8b-instruct
高精度な回答llama-3.3-70b-instruct-fp8-fast
画像理解llama-3.2-11b-vision-instruct
軽量・高速llama-3.2-3b-instruct
Function Callinghermes-2-pro-mistral-7b

パフォーマンス最適化

// レスポンスをキャッシュ
const cacheKey = `ai:${hash(prompt)}`;
let response = await env.KV.get(cacheKey, "json");

if (!response) {
  response = await env.AI.run("@cf/meta/llama-3.1-8b-instruct", {
    messages: [{ role: "user", content: prompt }],
  });
  await env.KV.put(cacheKey, JSON.stringify(response), {
    expirationTtl: 3600,
  });
}

公式リソース

Score

Total Score

60/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon