# Workers AI Configuration ## wrangler.jsonc ```jsonc { "name": "my-ai-worker", "main": "src/index.ts", "compatibility_date": "2024-01-01", "ai": { "binding": "AI" } } ``` ## TypeScript ```bash npm install --save-dev @cloudflare/workers-types ``` ```typescript interface Env { AI: Ai; } export default { async fetch(request: Request, env: Env) { const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', { messages: [{ role: 'user', content: 'Hello' }] }); return Response.json(response); } }; ``` ## Local Development ```bash wrangler dev --remote # Required for AI - no local inference ``` ## REST API ```typescript const response = await fetch( `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/ai/run/@cf/meta/llama-3.1-8b-instruct`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_TOKEN}` }, body: JSON.stringify({ messages: [{ role: 'user', content: 'Hello' }] }) } ); ``` Create API token at: dash.cloudflare.com/profile/api-tokens (Workers AI - Read permission) ## SDK Compatibility **OpenAI SDK:** ```typescript import OpenAI from 'openai'; const client = new OpenAI({ apiKey: env.CLOUDFLARE_API_TOKEN, baseURL: `https://api.cloudflare.com/client/v4/accounts/${env.ACCOUNT_ID}/ai/v1` }); ``` ## Multi-Model Setup ```typescript const MODELS = { chat: '@cf/meta/llama-3.1-8b-instruct', embed: '@cf/baai/bge-base-en-v1.5', image: '@cf/stabilityai/stable-diffusion-xl-base-1.0' }; ``` ## RAG Setup (with Vectorize) ```jsonc { "ai": { "binding": "AI" }, "vectorize": { "bindings": [{ "binding": "VECTORIZE", "index_name": "embeddings-index" }] } } ``` ## Troubleshooting | Error | Fix | |-------|-----| | `env.AI is undefined` | Check `ai` binding in wrangler.jsonc | | Local AI doesn't work | Use `wrangler dev --remote` | | Type 'Ai' not found | Install `@cloudflare/workers-types` | | @cloudflare/ai package error | Don't install - use native binding |