This library provides an AI Gateway Provider for the Vercel AI SDK, enabling you to seamlessly integrate multiple AI models from different providers behind a unified interface. It leverages Cloudflare's AI Gateway to manage and optimize your AI model usage.
- Runtime Agnostic: Works in all JavaScript runtimes supported by the Vercel AI SDK including Node.js, Edge Runtime, and more.
- Automatic Provider Fallback: ✨ Define an array of models and the provider will automatically fallback to the next available provider if one fails, ensuring high availability and resilience for your AI applications.
- Multi-Provider Support: Easily switch between and combine models from various providers like OpenAI, Anthropic, DeepSeek, Google AI Studio, Grok, Mistral, Perplexity AI, Replicate and Groq.
- AI Gateway Integration: Utilizes Cloudflare's AI Gateway for advanced features like request management, caching, and rate limiting.
- Simplified Model Management: Abstracts away the complexities of interacting with different AI provider APIs.
- Easy Configuration: Simple and intuitive setup process.
npm install ai-gateway-provider
import {createOpenAI} from '@ai-sdk/openai';
import {createAiGateway} from 'ai-gateway-provider';
import {generateText} from "ai";
import {createAnthropic} from "@ai-sdk/anthropic";
const aigateway = createAiGateway({
accountId: "my-cloudflare-account-id",
gateway: 'my-gateway-name',
apiKey: 'optionally my cloudflare api key',
options: { // Optional per-request override
skipCache: true
}
});
const openai = createOpenAI({apiKey: 'openai api key'});
const anthropic = createAnthropic({apiKey: 'anthropic api key'});
const model = aigateway([
anthropic('claude-3-5-haiku-20241022'), // Primary choice
openai("gpt-4o-mini"), // Fallback if first fails
]);
const {text} = await generateText({
model: model,
prompt: 'Write a vegetarian lasagna recipe for 4 people.',
});
Binding Benefits:
- Faster Requests: Saves milliseconds by avoiding open internet routing.
- Enhanced Security: Uses a special pre-authenticated pipeline.
- No API Key Required: Authentication is handled by the binding.
const aigateway = createAiGateway({
binding: env.AI.gateway('my-gateway'),
options: { // Optional per-request override
skipCache: true
}
});
const openai = createOpenAI({apiKey: 'openai api key'});
const anthropic = createAnthropic({apiKey: 'anthropic api key'});
const model = aigateway([
anthropic('claude-3-5-haiku-20241022'), // Primary choice
openai("gpt-4o-mini"), // Fallback if first fails
]);
const {text} = await generateText({
model: model,
prompt: 'Write a vegetarian lasagna recipe for 4 people.',
});
You can now customize AI Gateway settings for each request:
const aigateway = createAiGateway({
// ... other configs
options: { // all fields are optional!
cacheKey: 'my-custom-cache-key',
cacheTtl: 3600, // Cache for 1 hour
skipCache: false,
metadata: {
userId: 'user123',
requestType: 'recipe'
},
retries: {
maxAttempts: 3,
retryDelayMs: 1000,
backoff: 'exponential'
}
},
});
accountId
: Your Cloudflare account IDgateway
: The name of your AI GatewayapiKey
(Optional): Your Cloudflare API key
binding
: Cloudflare AI Gateway bindingoptions
(Optional): Request-level AI Gateway settings
cacheKey
: Custom cache key for the requestcacheTtl
: Cache time-to-live in secondsskipCache
: Bypass caching for the requestmetadata
: Custom metadata for the requestcollectLog
: Enable/disable log collectioneventId
: Custom event identifierrequestTimeoutMs
: Request timeout in millisecondsretries
: Retry configurationmaxAttempts
: Number of retry attempts (1-5)retryDelayMs
: Delay between retriesbackoff
: Retry backoff strategy ('constant', 'linear', 'exponential')
// Define multiple provider options with fallback priority
const model = aigateway([
anthropic('claude-3-5-haiku-20241022'), // Primary choice
openai("gpt-4o-mini"), // First fallback
mistral("mistral-large-latest"), // Second fallback
]);
// The system will automatically try the next model if previous ones fail
const {text} = await generateText({
model: model,
prompt: 'Suggest three names for my tech startup.',
});
- OpenAI
- Anthropic
- DeepSeek
- Google AI Studio
- Grok
- Mistral
- Perplexity AI
- Replicate
- Groq
Currently only chat completions (non-streaming) is supported. More can be added, please open an issue in the GitHub repository!
The library throws the following custom errors:
AiGatewayUnauthorizedError
: Your AI Gateway has authentication enabled, but a valid API key was not provided.AiGatewayDoesNotExist
: Specified AI Gateway does not exist
This project is licensed under the MIT License - see the LICENSE file for details.