I’m building Fexa AI — an SEO automation SaaS that generates titles, meta descriptions and translations for e-commerce stores at scale. We process thousands of AI calls per day.
We default to DeepSeek for cost reasons but needed Gemini as a silent fallback when DeepSeek rate-limits or goes down. Here’s the pattern we settled on with Vercel AI SDK:
import { generateText } from 'ai'
import { createDeepSeek } from '@ai-sdk/deepseek'
import { google } from '@ai-sdk/google'
async function generateWithFallback(prompt: string) {
try {
const deepseek = createDeepSeek({ apiKey: process.env.DEEPSEEK_API_KEY })
return await generateText({
model: deepseek('deepseek-chat'),
prompt,
})
} catch {
// Gemini as silent fallback
return await generateText({
model: google('gemini-2.0-flash'),
prompt,
})
}
}
What surprised us: Gemini’s output quality on structured SEO content (JSON-formatted titles/metas) was on par with DeepSeek, sometimes better for non-English languages (ES, IT).
Has anyone built more sophisticated routing — e.g. routing by language or content type rather than just on failure?