UNPKG

@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
"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, }; }