UNPKG

@oliverpople/agency-x

Version:

🚀 **Transform feature requests into production-ready code in seconds**

47 lines (39 loc) • 1.21 kB
import OpenAI from 'openai'; let openai: OpenAI | null = null; const getOpenAI = () => { if (!openai) { const apiKey = process.env.OPENAI_API_KEY; if (!apiKey) { throw new Error('OPENAI_API_KEY environment variable is not set'); } openai = new OpenAI({ apiKey }); } return openai; }; export const getOpenAIClient = () => { return { generate: async (prompt: string) => { const client = getOpenAI(); // Create a timeout promise const timeoutPromise = new Promise((_, reject) => { setTimeout(() => { reject(new Error('OpenAI API request timed out after 90 seconds')); }, 90000); }); try { const apiPromise = client.chat.completions.create({ model: 'gpt-3.5-turbo', messages: [{ role: 'user', content: prompt }], }); const response = await Promise.race([ apiPromise, timeoutPromise ]) as OpenAI.Chat.Completions.ChatCompletion; return response.choices[0].message.content || ''; } catch (error) { console.error('[ERROR] OpenAI API error:', error); throw error; } }, }; };