feat: filter by lang
This commit is contained in:
@@ -140,6 +140,7 @@ const buildModerationBrief = ({
|
||||
exports.generateLyrics = onCall({ secrets: [GEMINI_API_KEY] }, async ({ auth = {}, data = {} }) => {
|
||||
try {
|
||||
const {
|
||||
lang: rawLang,
|
||||
objective = '',
|
||||
context = '',
|
||||
style = '',
|
||||
@@ -148,6 +149,15 @@ exports.generateLyrics = onCall({ secrets: [GEMINI_API_KEY] }, async ({ auth = {
|
||||
structure: rawStructure = ['couplet', 'refrain', 'couplet', 'refrain'],
|
||||
rhymes = '',
|
||||
} = data
|
||||
if (!['fr', 'en'].includes(rawLang)) {
|
||||
throw new HttpsError('invalid-argument', 'La langue doit être "fr" ou "en".')
|
||||
}
|
||||
const lang = rawLang
|
||||
const languageLabel = lang === 'en' ? 'English' : 'français'
|
||||
const languageInstruction =
|
||||
lang === 'en'
|
||||
? 'Write the title, lyrics and description in English.'
|
||||
: 'Rédige le titre, les paroles et la description en français.'
|
||||
const rhymesInstruction = resolveRhymesInstruction(rhymes)
|
||||
|
||||
// 1. Préparation Structure
|
||||
@@ -201,6 +211,7 @@ Tu es le meilleur parolier musical actuel, expert en "Songwriting" pour les IA g
|
||||
Ta spécialité est la **Prosodie** (le rythme naturel des mots) et l'impact émotionnel.
|
||||
|
||||
TES RÈGLES D'OR :
|
||||
0. **LANGUE** : ${languageInstruction}
|
||||
1. **MÉTRIQUE & RYTHME** : Tes vers doivent être "chantables". Compte les syllabes pour qu'elles collent au style musical demandé. Évite les phrases trop longues ou imprononçables rapidement.
|
||||
2. **RIMES** : Suis strictement <TYPE_DE_RIMES> du brief. Si "Sans rimes" ou "Mélange des deux" est demandé, respecte l'absence/alternance de rimes. Si rien n'est indiqué, fais des rimes riches et évite les rimes faciles (amour/toujours).
|
||||
3. **SHOW, DON'T TELL** : N'écris pas "Je suis triste", écris "La pluie brouille mes carreaux". Utilise des détails sensoriels.
|
||||
@@ -224,6 +235,7 @@ Retourne UNIQUEMENT un JSON valide.
|
||||
|
||||
const prompt = `
|
||||
<BRIEF_CREATIF>
|
||||
<LANGUE>${languageLabel}</LANGUE>
|
||||
<OBJECTIF>${objective || 'Créer une chanson mémorable'}</OBJECTIF>
|
||||
<CONTEXTE>${context || 'Libre interprétation'}</CONTEXTE>
|
||||
<EMOTION_DOMINANTE>${emotion || 'Intense'}</EMOTION_DOMINANTE>
|
||||
@@ -237,6 +249,7 @@ ${structureTags || fallbackStructureTags}
|
||||
</STRUCTURE_IMPOSEE>
|
||||
|
||||
<CONSIGNES_GENERATION>
|
||||
0. ${languageInstruction}
|
||||
1. Génère un **Titre** percutant (moins de 6 mots).
|
||||
2. Pour chaque section <SECTION>, écris le contenu adapté :
|
||||
- Si c'est "Instrumental" ou "Solo" : laisse le champ 'lyrics' vide ou mets une brève indication d'ambiance entre parenthèses ex: "(Solo de guitare déchirant)".
|
||||
|
||||
Reference in New Issue
Block a user