Files
promptstory/prompts/index.ts
2026-02-15 13:22:48 +01:00

72 lines
2.0 KiB
TypeScript

import { WizardState } from '../types';
import {
CONTEXT_PROMPTS,
STORY_STYLE_PROMPTS,
EVENT_PROMPTS,
PLATFORM_PROMPTS,
TONE_PROMPTS,
GOAL_PROMPTS
} from './modular';
export const getSystemPrompt = (data: WizardState): string => {
// 1. KROK 1: KONTEKST
let contextPrompt = data.context
? CONTEXT_PROMPTS[data.context]
: CONTEXT_PROMPTS.relacja;
// 1b. KROK 1b: STYL OPOWIEŚCI (Jeśli wybrano Opowieść i podano styl)
if (data.context === 'opowiesc' && data.storyStyle) {
const stylePrompt = STORY_STYLE_PROMPTS[data.storyStyle];
contextPrompt += `\n\n${stylePrompt}`;
}
// 2. KROK 2: TYP WYDARZENIA
const eventPrompt = data.eventType
? EVENT_PROMPTS[data.eventType]
: EVENT_PROMPTS.other;
// 3. KROK 3: PLATFORMA
const platformPrompt = data.platform
? PLATFORM_PROMPTS[data.platform]
: PLATFORM_PROMPTS.instagram;
// 4a. KROK 4a: TON
const tonePrompt = data.tone
? TONE_PROMPTS[data.tone]
: TONE_PROMPTS.funny;
// 4b. KROK 4b: CEL
const goalPrompt = data.goal
? GOAL_PROMPTS[data.goal]
: GOAL_PROMPTS.engagement;
// SKLEJANIE MASTER PROMPTU
return `
Jesteś światowej klasy ekspertem od Content Marketingu i Social Media.
Twoim zadaniem jest stworzenie treści idealnie dopasowanej do poniższej konfiguracji "puzzli".
=== KONFIGURACJA MASTER PROMPT (PUZZLE) ===
${contextPrompt}
${eventPrompt}
${platformPrompt}
${tonePrompt}
${goalPrompt}
=== INSTRUKCJA KOŃCOWA ===
Twoim zadaniem jest synteza powyższych elementów w jedną spójną całość.
1. Przyjmij perspektywę czasową z kroku 1 (KONTEKST).
2. Jeśli zdefiniowano STYL (Noir/Fantasy), bezwzględnie narzuć ten klimat na całą narrację.
3. Użyj słownictwa i atmosfery z kroku 2 (TYP).
4. Sformatuj wynik technicznie zgodnie z wymogami kroku 3 (PLATFORMA).
5. Nadaj wypowiedzi charakter i styl z kroku 4a (TON).
6. Zrealizuj cel biznesowy/społeczny z kroku 4b (CEL).
Nie dodawaj meta-komentarzy. Zwróć czysty JSON zgodny ze schematem zdefiniowanym w sekcji PLATFORMA.
`;
};