# Workers AI API Reference ## Core Method ```typescript const response = await env.AI.run(model, input); ``` ## Text Generation ```typescript const result = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', { messages: [ { role: 'system', content: 'You are helpful' }, { role: 'user', content: 'Hello' } ], temperature: 0.7, // 0-1 max_tokens: 100 }); console.log(result.response); ``` **Streaming:** ```typescript const stream = await env.AI.run(model, { messages, stream: true }); return new Response(stream, { headers: { 'Content-Type': 'text/event-stream' } }); ``` ## Embeddings ```typescript const result = await env.AI.run('@cf/baai/bge-base-en-v1.5', { text: ['Query', 'Doc 1', 'Doc 2'] // Batch for efficiency }); const [queryEmbed, doc1Embed, doc2Embed] = result.data; // 768-dim vectors ``` ## Function Calling ```typescript const tools = [{ type: 'function', function: { name: 'getWeather', description: 'Get weather for location', parameters: { type: 'object', properties: { location: { type: 'string' } }, required: ['location'] } } }]; const response = await env.AI.run(model, { messages, tools }); if (response.tool_calls) { const args = JSON.parse(response.tool_calls[0].function.arguments); // Execute function, send result back } ``` ## Image Generation ```typescript const image = await env.AI.run('@cf/stabilityai/stable-diffusion-xl-base-1.0', { prompt: 'Mountain sunset', num_steps: 20, // 1-20 guidance: 7.5 // 1-20 }); return new Response(image, { headers: { 'Content-Type': 'image/png' } }); ``` ## Speech Recognition ```typescript const audioArray = Array.from(new Uint8Array(await request.arrayBuffer())); const result = await env.AI.run('@cf/openai/whisper', { audio: audioArray }); console.log(result.text); ``` ## Translation ```typescript const result = await env.AI.run('@cf/meta/m2m100-1.2b', { text: 'Hello', source_lang: 'en', target_lang: 'es' }); console.log(result.translated_text); ``` ## REST API ```bash curl https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/@cf/meta/llama-3.1-8b-instruct \ -H "Authorization: Bearer $TOKEN" \ -d '{"messages":[{"role":"user","content":"Hello"}]}' ``` ## Error Codes | Code | Meaning | Fix | |------|---------|-----| | 7502 | Model not found | Check spelling | | 7504 | Validation failed | Verify input schema | | 7505 | Rate limited | Reduce rate or upgrade | | 7506 | Context exceeded | Reduce input size | ## Performance Tips 1. **Batch embeddings** - single request for multiple texts 2. **Stream long responses** - reduce perceived latency 3. **Accept cold starts** - first request ~1-3s, subsequent ~100-500ms