UNPKG

ultimate-mcp-server

Version:

The definitive all-in-one Model Context Protocol server for AI-assisted coding across 30+ platforms

74 lines 2.7 kB
import OpenAI from "openai"; import { Logger } from "../utils/logger.js"; export class OpenAIProvider { name = "openai"; client; logger; models = [ { id: "gpt-4-turbo-preview", name: "GPT-4 Turbo", contextLength: 128000, pricing: { input: 0.00001, output: 0.00003 }, capabilities: ["coding", "reasoning", "analysis"], provider: "openai", }, { id: "gpt-4o", name: "GPT-4 Optimized", contextLength: 128000, pricing: { input: 0.000005, output: 0.000015 }, capabilities: ["coding", "reasoning", "vision"], provider: "openai", }, ]; constructor(apiKey) { this.logger = new Logger("OpenAIProvider"); this.client = new OpenAI({ apiKey }); } async complete(prompt, options) { try { const completion = await this.client.chat.completions.create({ model: options?.model || "gpt-4o", messages: [ ...(options?.systemPrompt ? [{ role: "system", content: options.systemPrompt }] : []), { role: "user", content: prompt }, ], temperature: options?.temperature ?? 0.7, max_tokens: options?.maxTokens, top_p: options?.topP, frequency_penalty: options?.frequencyPenalty, presence_penalty: options?.presencePenalty, stop: options?.stopSequences, }); return completion.choices[0]?.message?.content || ""; } catch (error) { this.logger.error("OpenAI completion failed:", error); throw error; } } async completeWithContext(messages, options) { try { const completion = await this.client.chat.completions.create({ model: options?.model || "gpt-4o", messages: messages.map(msg => ({ role: msg.role, content: msg.content, })), temperature: options?.temperature ?? 0.7, max_tokens: options?.maxTokens, top_p: options?.topP, frequency_penalty: options?.frequencyPenalty, presence_penalty: options?.presencePenalty, stop: options?.stopSequences, }); return completion.choices[0]?.message?.content || ""; } catch (error) { this.logger.error("OpenAI completion with context failed:", error); throw error; } } } //# sourceMappingURL=openai.js.map