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
JavaScript
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