@yogesh0333/yogiway-prompt
Version:
Free & Open Source Prompt Optimization Library - Save 30-50% on AI API costs. Multi-language, multi-platform support.
83 lines (82 loc) • 2.31 kB
JavaScript
"use strict";
/**
* Prompt Formatter - Format prompts for different LLM providers
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatPrompt = formatPrompt;
/**
* Format prompt for specific provider
*/
function formatPrompt(options) {
const { provider, systemPrompt, userPrompt, assistantPrompt } = options;
switch (provider) {
case 'openai':
return formatOpenAI(systemPrompt, userPrompt, assistantPrompt);
case 'anthropic':
return formatAnthropic(systemPrompt, userPrompt, assistantPrompt);
case 'google':
return formatGoogle(systemPrompt, userPrompt, assistantPrompt);
default:
return userPrompt;
}
}
/**
* Format for OpenAI (ChatGPT)
*/
function formatOpenAI(systemPrompt, userPrompt, assistantPrompt) {
const messages = [];
if (systemPrompt) {
messages.push({ role: 'system', content: systemPrompt });
}
if (userPrompt) {
messages.push({ role: 'user', content: userPrompt });
}
if (assistantPrompt) {
messages.push({ role: 'assistant', content: assistantPrompt });
}
return {
messages,
model: 'gpt-5', // Default to latest model
};
}
/**
* Format for Anthropic (Claude)
*/
function formatAnthropic(systemPrompt, userPrompt, assistantPrompt) {
const messages = [];
if (userPrompt) {
messages.push({ role: 'user', content: userPrompt });
}
if (assistantPrompt) {
messages.push({ role: 'assistant', content: assistantPrompt });
}
return {
system: systemPrompt,
messages,
model: 'claude-3-opus-20240229',
max_tokens: 4096,
};
}
/**
* Format for Google (Gemini)
*/
function formatGoogle(systemPrompt, userPrompt, assistantPrompt) {
const parts = [];
if (systemPrompt) {
parts.push({ text: `System: ${systemPrompt}\n\n` });
}
if (userPrompt) {
parts.push({ text: `User: ${userPrompt}\n\n` });
}
if (assistantPrompt) {
parts.push({ text: `Assistant: ${assistantPrompt}\n\n` });
}
return {
contents: [
{
parts,
},
],
systemInstruction: systemPrompt ? { parts: [{ text: systemPrompt }] } : undefined,
};
}