Cloudflare Workers AIとは
Cloudflare Workers AIは、エッジでAI推論を実行できるサービスです。世界中のデータセンターでモデルを実行し、低レイテンシーでAI機能を提供できます。
新モデルの追加
利用可能なモデル(2024年末時点)
| カテゴリ | モデル | 用途 |
|---|---|---|
| LLM | Llama 3.2 | テキスト生成 |
| LLM | Mistral 7B | 高速推論 |
| LLM | Gemma 2 | 多言語対応 |
| 画像 | Stable Diffusion XL | 画像生成 |
| 画像 | FLUX.1 | 高品質画像生成 |
| 音声 | Whisper | 音声認識 |
| Embedding | BGE | ベクトル化 |
使用例
// Workers AI での推論
export default {
async fetch(request, env) {
const response = await env.AI.run('@cf/meta/llama-3.2-3b-instruct', {
messages: [
{ role: 'user', content: 'Cloudflareの特徴を教えて' }
],
max_tokens: 512
});
return new Response(JSON.stringify(response));
}
};
Vectorize GA(正式版)
ベクトルデータベース
埋め込みベクトルを保存し、類似検索を実行できます。
// Vectorizeの作成(wrangler CLI)
// wrangler vectorize create my-index --dimensions=768 --metric=cosine
// ベクトルの挿入
export default {
async fetch(request, env) {
// テキストを埋め込みに変換
const embedding = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
text: 'Cloudflareのエッジコンピューティング'
});
// Vectorizeに保存
await env.VECTORIZE.insert([{
id: 'doc-1',
values: embedding.data[0],
metadata: { title: 'Cloudflare Edge' }
}]);
return new Response('Inserted');
}
};
類似検索
// 類似ドキュメントの検索
const queryEmbedding = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
text: 'エッジでのAI推論'
});
const results = await env.VECTORIZE.query(queryEmbedding.data[0], {
topK: 5,
returnMetadata: true
});
// results: [{ id: 'doc-1', score: 0.95, metadata: {...} }, ...]
AI Gateway
API管理とモニタリング
複数のAIプロバイダーを統一的に管理できます。
// AI Gateway経由でのリクエスト
const response = await fetch(
'https://gateway.ai.cloudflare.com/v1/account-id/gateway-name/openai/chat/completions',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${OPENAI_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-4',
messages: [{ role: 'user', content: 'Hello' }]
})
}
);
主要機能
| 機能 | 説明 |
|---|---|
| キャッシング | 同一リクエストの結果をキャッシュ |
| レート制限 | APIリクエストの制限 |
| リトライ | 失敗時の自動リトライ |
| フォールバック | 別プロバイダーへの切り替え |
| ログ記録 | 全リクエストの記録 |
// フォールバック設定
{
"providers": [
{ "provider": "openai", "model": "gpt-4" },
{ "provider": "anthropic", "model": "claude-3-sonnet" }
],
"fallback": true
}
参考: AI Gateway
AutoRAG(プレビュー)
自動RAGパイプライン
ドキュメントをアップロードするだけで、RAGシステムを構築できます。
// AutoRAGの設定
export default {
async fetch(request, env) {
// ドキュメントをインデックス
await env.AUTORAG.index({
content: 'Cloudflareは世界最大のエッジネットワーク...',
metadata: { source: 'docs', title: 'About Cloudflare' }
});
// 質問に回答
const answer = await env.AUTORAG.query({
question: 'Cloudflareとは何ですか?',
max_tokens: 256
});
return new Response(JSON.stringify(answer));
}
};
料金体系
Workers AI
| プラン | ニューロン | 料金 |
|---|---|---|
| 無料 | 10,000/日 | $0 |
| 従量課金 | 無制限 | $0.011/1,000ニューロン |
Vectorize
| 項目 | 無料枠 | 有料 |
|---|---|---|
| ベクトル数 | 200,000 | 無制限 |
| クエリ/月 | 30M | $0.01/1M |
| ストレージ | 1GB | $0.05/GB |
パフォーマンス
レイテンシー比較
| リージョン | 中央サーバー | Cloudflare Edge |
|---|---|---|
| 東京 | 200ms | 20ms |
| ニューヨーク | 50ms | 15ms |
| ロンドン | 100ms | 18ms |
スループット
Llama 3.2 3B: ~50 tokens/秒
Mistral 7B: ~30 tokens/秒
Whisper: リアルタイムの2倍速
実装例: RAGチャットボット
export default {
async fetch(request, env) {
const { question } = await request.json();
// 1. 質問を埋め込みに変換
const questionEmbedding = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
text: question
});
// 2. 関連ドキュメントを検索
const docs = await env.VECTORIZE.query(questionEmbedding.data[0], {
topK: 3,
returnMetadata: true
});
// 3. コンテキスト付きで回答生成
const context = docs.matches.map(d => d.metadata.content).join('\n');
const answer = await env.AI.run('@cf/meta/llama-3.2-3b-instruct', {
messages: [
{ role: 'system', content: `以下の情報を参考に回答:\n${context}` },
{ role: 'user', content: question }
]
});
return Response.json({ answer: answer.response });
}
};
まとめ
Cloudflare Workers AIは、エッジAI推論の有力な選択肢として進化を続けています。
- 多様なモデル: LLM、画像、音声、埋め込み
- Vectorize GA: ベクトルDBの正式版
- AI Gateway: マルチプロバイダー管理
- 低レイテンシー: 世界中で20ms以下
サーバーレスでスケーラブルなAIアプリケーションを構築する際に、検討する価値があります。
← 一覧に戻る