| 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); |
| } |
| } |
| }; |
| } |
|
|