If you want to use Gemini’s public API, but at the same time have a safe fallback in case you have exhausted the rate limits, you can use the OpenAI TS/JS library and a few helper functions. In my particular case I needed a type-safe solution for a chartmaker app with a fallback since Gemini’s gemini-2.5-pro-exp-03-25 model is restricted to 20 request/min. First, you need to define which models you want to use so that they appear as autosuggest when you use the helper functions: type Model = ChatCompletionParseParams['model'] | 'gemini-2.5-pro-exp-03-25' | 'gemini-2.0-flash'; The helper function requires one argument; an array of 2 configuration objects for the desired AI queries (in principle, you can add as many as you want, or choose other AIs that are compatible with the OpenAI library): export const getCompletion = async ( options: [ Omit<ChatCompletionParseParams, 'model'> & { model: Model }, Omit<ChatCompletionParseParams, 'model'> & { model: Model }, ], ) => { try { const isGemini = options[0].model.includes('gemini'); const openai = new OpenAI( isGemini ? { apiKey: process.env.GEMINI_API_KEY, baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai/', } : { apiKey: process.env.OPENAI_API_KEY }, ); return await openai.chat.completions.create(options[0]); } catch (error) { console.log(`Failed completion for first model (${options[0].model})`, error); const isGemini = options[1].model.includes('gemini'); const openai = new OpenAI( isGemini ? { apiKey: process.env.GEMINI_API_KEY, baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai/', } : { apiKey: process.env.OPENAI_API_KEY }, ); return await openai.chat.completions.create(options[1]); } }; The help function can be used in the following ways: const messages = [{ role: 'user', content: 'Tell a short joke.' }]; const completion = await getCompletion([ { model: 'gemini-2.0-flash', messages }, { model: 'gpt-3.5-turbo', messages }, ]); console.log(completion); // { // "choices": [ // { // "fin...
First seen: 2025-04-06 22:15
Last seen: 2025-04-07 16:19