import OpenAI from "openai" import { BaseAIProvider } from "./base-provider" export class OpenAIProvider extends BaseAIProvider { name = "openai" private client: OpenAI constructor(apiKey: string) { super() this.client = new OpenAI({ apiKey }) } async sendVisionRequest( systemPrompt: string, imageBase64: string, mimeType: string ): Promise { const dataUrl = `data:${mimeType};base64,${imageBase64}` const response = await this.client.chat.completions.create({ model: "gpt-4o", max_tokens: 4096, messages: [ { role: "system", content: systemPrompt, }, { role: "user", content: [ { type: "image_url", image_url: { url: dataUrl, detail: "high", }, }, { type: "text", text: "Please analyze this image and extract the information as instructed.", }, ], }, ], }) const message = response.choices[0]?.message?.content if (!message) { throw new Error("No response received from OpenAI") } return message } async sendTextRequest( systemPrompt: string, userMessage: string ): Promise { const response = await this.client.chat.completions.create({ model: "gpt-4o", max_tokens: 4096, messages: [ { role: "system", content: systemPrompt, }, { role: "user", content: userMessage, }, ], }) const message = response.choices[0]?.message?.content if (!message) { throw new Error("No response received from OpenAI") } return message } }