export function createOpenAiService({ apiKey, baseUrl, timeoutMs = 60000, fetchImpl = fetch }) { return { async createChatCompletion(body) { const controller = new AbortController(); const timeout = setTimeout(() => controller.abort(), timeoutMs); try { return await fetchImpl(`${baseUrl}/chat/completions`, { method: "POST", headers: { "authorization": `Bearer ${apiKey}`, "content-type": "application/json" }, body: JSON.stringify(body), signal: controller.signal }); } finally { clearTimeout(timeout); } } }; }