Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -657,49 +657,251 @@ public async Task Apply(AssetConverterConfig config)
WriteOneTargetFileByField = true,
MaxChildren = 8
},
new DatasetUpdaterConfig()
new DatasetUpdaterConfig()
{
Enabled = false,
Name = "Translate Rules to Portuguese by chunk 0-shot",
SourceDataset = KnownDataSets.Rules,
FieldsToInclude = new List<string>()
{
"pk",
"Text",
"Text_pt"
},
FieldsToUpdate = new List<string>()
{
"Text_pt"
},
PrimaryField = "pk",
TargetPath = @".\Target\Datasets\Argumentum Rules - Cards.csv",
SystemPromptPath = PromptsRootPath + "PromptGeneralSystem.txt",
DialogPrompts = new List<PromptExample>()
{
Enabled = false,
Name = "Translate Rules to Portuguese by chunk 0-shot",
SourceDataset = KnownDataSets.Rules,
FieldsToInclude = new List<string>()
new PromptExample()
{
"pk",
"Text",
"Text_pt"
},
FieldsToUpdate = new List<string>()
UserPromptPath = PromptsRootPath + "PromptRulesTranslatePtUser.txt",
AssistantAnswerPath = PromptsRootPath + "PromptRulesTranslatePtAssistant.txt"
}
},
Model = "gpt-5.4-mini", // Fallback: gpt-4.1-mini
MaxTokensPerMinute = 70000,
DivisionMode = DivisionMode.SequentialChunks,
ChunkSize = 3,
UseFunctionCalling = true,
NbMessageCalls = 1,
SkipChunkNb = 0,
TakeChunkNb = -1,
SelectEmptyTargets = false,
RandomizeChunks = false,
MaxDegreeOfParallelismWebService = 3,
CompareMode = false,
AutoCompare = false,
MaxGroupItemNb = 12,
WriteOneTargetFileByField = false,
MaxChildren = 8
},
new DatasetUpdaterConfig()
{
Enabled = false,
Name = "Translate Scenarii to English by chunk empty-only 0-shot",
SourceDataset = KnownDataSets.Scenarii,
FieldsToInclude = new List<string>()
{
"path",
"catégorie",
"sous-catégorie",
"titre",
"baratineur",
"piocheur",
"contexte",
"enjeu",
"suggestion",
"category",
"subcategory",
"title",
"smoothTalker",
"drawer",
"context",
"issue",
"suggestion_en"
},
FieldsToUpdate = new List<string>()
{
"category",
"subcategory",
"title",
"smoothTalker",
"drawer",
"context",
"issue",
"suggestion_en"
},
PrimaryField = "path",
TargetPath = @".\Target\Datasets\Argumentum Scenarii - Cards.csv",
SystemPromptPath = PromptsRootPath + "PromptGeneralSystem.txt",
DialogPrompts = new List<PromptExample>()
{
new PromptExample()
{
"Text_pt"
},
PrimaryField = "pk",
TargetPath = @".\Target\Datasets\Argumentum Rules - Cards.csv",
SystemPromptPath = PromptsRootPath + "PromptGeneralSystem.txt",
DialogPrompts = new List<PromptExample>()
UserPromptPath = PromptsRootPath + "PromptScenariiTranslateEnUser.txt",
AssistantAnswerPath = PromptsRootPath + "PromptScenariiTranslateEnAssistant.txt"
}
},
// FR → EN translation empty-only — eco tier. Fallback: gpt-4.1-mini
Model = "gpt-5.4-mini",
MaxTokensPerMinute = 70000,
DivisionMode = DivisionMode.SequentialChunks,
ChunkSize = 8,
UseFunctionCalling = true,
NbMessageCalls = 1,
SkipChunkNb = 0,
TakeChunkNb = -1,
SelectEmptyTargets = true,
RandomizeChunks = false,
MaxDegreeOfParallelismWebService = 4,
CompareMode = false,
AutoCompare = true,
AutoCompareField = "titre",
CompareField = "title",
MaxGroupItemNb = 12,
WriteOneTargetFileByField = true,
MaxChildren = 8
},

new DatasetUpdaterConfig()
{
Enabled = false,
Name = "Translate Scenarii to Russian by chunk empty-only 0-shot",
SourceDataset = KnownDataSets.Scenarii,
FieldsToInclude = new List<string>()
{
"path",
"catégorie",
"sous-catégorie",
"titre",
"baratineur",
"piocheur",
"contexte",
"enjeu",
"suggestion",
"category_ru",
"subcategory_ru",
"title_ru",
"smoothTalker_ru",
"drawer_ru",
"context_ru",
"issue_ru",
"suggestion_ru"
},
FieldsToUpdate = new List<string>()
{
"category_ru",
"subcategory_ru",
"title_ru",
"smoothTalker_ru",
"drawer_ru",
"context_ru",
"issue_ru",
"suggestion_ru"
},
PrimaryField = "path",
TargetPath = @".\Target\Datasets\Argumentum Scenarii - Cards.csv",
SystemPromptPath = PromptsRootPath + "PromptGeneralSystem.txt",
DialogPrompts = new List<PromptExample>()
{
new PromptExample()
{
new PromptExample()
{
UserPromptPath = PromptsRootPath + "PromptRulesTranslatePtUser.txt",
AssistantAnswerPath = PromptsRootPath + "PromptRulesTranslatePtAssistant.txt"
}
},
Model = "gpt-5.4-mini", // Fallback: gpt-4.1-mini
MaxTokensPerMinute = 70000,
DivisionMode = DivisionMode.SequentialChunks,
ChunkSize = 3,
UseFunctionCalling = true,
NbMessageCalls = 1,
SkipChunkNb = 0,
TakeChunkNb = -1,
SelectEmptyTargets = false,
RandomizeChunks = false,
MaxDegreeOfParallelismWebService = 3,
CompareMode = false,
AutoCompare = false,
MaxGroupItemNb = 12,
WriteOneTargetFileByField = false,
MaxChildren = 8
}
UserPromptPath = PromptsRootPath + "PromptScenariiTranslateRuUser.txt",
AssistantAnswerPath = PromptsRootPath + "PromptScenariiTranslateRuAssistant.txt"
}
},
// FR → RU translation empty-only — eco tier. Fallback: gpt-4.1-mini
Model = "gpt-5.4-mini",
MaxTokensPerMinute = 70000,
DivisionMode = DivisionMode.SequentialChunks,
ChunkSize = 8,
UseFunctionCalling = true,
NbMessageCalls = 1,
SkipChunkNb = 0,
TakeChunkNb = -1,
SelectEmptyTargets = true,
RandomizeChunks = false,
MaxDegreeOfParallelismWebService = 4,
CompareMode = false,
AutoCompare = true,
AutoCompareField = "titre",
CompareField = "title_ru",
MaxGroupItemNb = 12,
WriteOneTargetFileByField = true,
MaxChildren = 8
},

new DatasetUpdaterConfig()
{
Enabled = false,
Name = "Translate Scenarii to Portuguese by chunk empty-only 0-shot",
SourceDataset = KnownDataSets.Scenarii,
FieldsToInclude = new List<string>()
{
"path",
"catégorie",
"sous-catégorie",
"titre",
"baratineur",
"piocheur",
"contexte",
"enjeu",
"suggestion",
"category_pt",
"subcategory_pt",
"title_pt",
"smoothTalker_pt",
"drawer_pt",
"context_pt",
"issue_pt",
"suggestion_pt"
},
FieldsToUpdate = new List<string>()
{
"category_pt",
"subcategory_pt",
"title_pt",
"smoothTalker_pt",
"drawer_pt",
"context_pt",
"issue_pt",
"suggestion_pt"
},
PrimaryField = "path",
TargetPath = @".\Target\Datasets\Argumentum Scenarii - Cards.csv",
SystemPromptPath = PromptsRootPath + "PromptGeneralSystem.txt",
DialogPrompts = new List<PromptExample>()
{
new PromptExample()
{
UserPromptPath = PromptsRootPath + "PromptScenariiTranslatePtUser.txt",
AssistantAnswerPath = PromptsRootPath + "PromptScenariiTranslatePtAssistant.txt"
}
},
// FR → PT translation empty-only — eco tier. Fallback: gpt-4.1-mini
Model = "gpt-5.4-mini",
MaxTokensPerMinute = 70000,
DivisionMode = DivisionMode.SequentialChunks,
ChunkSize = 8,
UseFunctionCalling = true,
NbMessageCalls = 1,
SkipChunkNb = 0,
TakeChunkNb = -1,
SelectEmptyTargets = true,
RandomizeChunks = false,
MaxDegreeOfParallelismWebService = 4,
CompareMode = false,
AutoCompare = true,
AutoCompareField = "titre",
CompareField = "title_pt",
MaxGroupItemNb = 12,
WriteOneTargetFileByField = true,
MaxChildren = 8
}
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Instructions bien reçues. Je vais traduire les scénarios du jeu Argumentum vers l'anglais en respectant :
- Le mapping spécifique des champs (catégorie→category, baratineur→smoothTalker, piocheur→drawer, enjeu→issue, suggestion→suggestion_en)
- La cohérence lexicale des catégories et sous-catégories entre scénarios
- Le ton narratif vivant et ludique (rythme, humour, brièveté)
- L'adaptation mesurée des noms propres et références culturelles
Je n'utiliserai que des appels à la fonction `UpdateRecord` pour chaque entrée à compléter, sans texte libre. Prêt à recevoir les données.
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
**Instructions de Traduction :**

Dans le prochain message utilisateur, tu trouveras au format json un ensemble de scénarios du jeu Argumentum. Chaque entrée décrit une situation de dialogue piégeuse où un personnage « baratineur » tente de convaincre un « piocheur » avec des arguments fallacieux. Chaque entrée comporte plusieurs champs :
- `path` : identifiant hiérarchique (ex. "1.2.3")
- `catégorie`, `sous-catégorie` : classification thématique française
- `titre` : titre court du scénario
- `baratineur` : nom/rôle du personnage qui tente de convaincre
- `piocheur` : nom/rôle du personnage cible
- `contexte` : mise en situation (lieu, circonstances)
- `enjeu` : ce qui est en jeu dans la discussion
- `suggestion` : piste de réplique ou conseil ludique
- Les champs cibles anglais (sans suffixe `_en`, sauf pour suggestion) : `category`, `subcategory`, `title`, `smoothTalker`, `drawer`, `context`, `issue`, `suggestion_en`

Ta tâche consiste à traduire en **anglais** les champs source français vers les champs cible anglais, uniquement pour les entrées dont les champs cibles sont vides.

1. **Utilisation du Function calling :** Pour chaque mise à jour, utilise un appel à la fonction `UpdateRecord`. N'écris pas de texte libre. Utilise autant d'appels de fonction que nécessaire.

2. **Mapping des champs (ATTENTION) :**
- `catégorie` → `category`
- `sous-catégorie` → `subcategory`
- `titre` → `title`
- `baratineur` → `smoothTalker`
- `piocheur` → `drawer`
- `contexte` → `context`
- `enjeu` → `issue`
- `suggestion` → `suggestion_en` (seul champ avec suffixe)

3. **Cohérence lexicale :** Les catégories et sous-catégories doivent rester cohérentes entre scénarios — si "Vie quotidienne" est traduit "Daily life" dans un scénario, réutilise cette traduction pour tous les scénarios de la même catégorie.

4. **Ton narratif :** Les scénarios sont ludiques et vivants. Préserve le rythme, l'humour, la brièveté. Évite les formulations lourdes ou scolaires.

5. **Noms propres et culture :** Les noms de personnages clairement français (ex. "Jean-Michel") peuvent être conservés ou anglicisés selon ce qui est plus naturel. Les références culturelles universelles restent telles quelles ; les références trop franco-françaises peuvent être adaptées si elles rendent le scénario incompréhensible.

6. **Argumentum :** "Argumentum" reste "Argumentum".

Es-tu prêt à recevoir les données ?
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Instructions bien reçues. Je vais traduire les scénarios du jeu Argumentum vers le portugais européen (pt-PT) en respectant :
- La variante pt-PT (pas brésilienne)
- La cohérence lexicale des catégories et sous-catégories entre scénarios
- Le ton narratif vivant et ludique (rythme, humour, brièveté) avec des tournures idiomatiques portugaises
- La traduction cohérente des rôles "baratineur" et "piocheur"
- L'adaptation mesurée des noms propres et références culturelles
Je n'utiliserai que des appels à la fonction `UpdateRecord` pour chaque entrée à compléter, sans texte libre. Prêt à recevoir les données.
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
**Instructions de Traduction :**

Dans le prochain message utilisateur, tu trouveras au format json un ensemble de scénarios du jeu Argumentum. Chaque entrée décrit une situation de dialogue piégeuse où un personnage « baratineur » tente de convaincre un « piocheur » avec des arguments fallacieux. Chaque entrée comporte plusieurs champs :
- `path` : identifiant hiérarchique (ex. "1.2.3")
- `catégorie`, `sous-catégorie` : classification thématique française
- `titre` : titre court du scénario
- `baratineur` : nom/rôle du personnage qui tente de convaincre
- `piocheur` : nom/rôle du personnage cible
- `contexte` : mise en situation (lieu, circonstances)
- `enjeu` : ce qui est en jeu dans la discussion
- `suggestion` : piste de réplique ou conseil ludique
- Les champs cibles portugais (suffixe `_pt`) : `category_pt`, `subcategory_pt`, `title_pt`, `smoothTalker_pt`, `drawer_pt`, `context_pt`, `issue_pt`, `suggestion_pt`

Ta tâche consiste à traduire en **portugais européen (pt-PT)** les champs source français vers les champs cible, uniquement pour les entrées dont les champs cibles sont vides.

1. **Utilisation du Function calling :** Pour chaque mise à jour, utilise un appel à la fonction `UpdateRecord`. N'écris pas de texte libre. Utilise autant d'appels de fonction que nécessaire.

2. **Langue cible :** Portugais européen (pt-PT), **pas** brésilien. Utilise le vocabulaire et les tournures idiomatiques du Portugal (ex. "telemóvel" pas "celular", "casa de banho" pas "banheiro").

3. **Cohérence lexicale :** Les catégories et sous-catégories doivent rester cohérentes entre scénarios — si "Vie quotidienne" est traduit "Vida quotidiana" dans un scénario, réutilise cette traduction pour tous les scénarios de la même catégorie.

4. **Ton narratif :** Les scénarios sont ludiques et vivants. Préserve le rythme, l'humour, la brièveté. En pt-PT, privilégie les tournures idiomatiques naturelles du Portugal plutôt que des calques du français.

5. **Rôles des personnages :** "baratineur" et "piocheur" désignent des rôles de jeu. Traduis par des équivalents portugais naturels évoquant le sens. Reste cohérent entre scénarios.

6. **Noms propres et culture :** Les noms de personnages clairement français peuvent être conservés ou adaptés à des prénoms portugais courants selon ce qui est plus naturel. Les références culturelles trop franco-françaises peuvent être adaptées si elles rendent le scénario incompréhensible pour un lecteur portugais.

7. **Argumentum :** "Argumentum" reste "Argumentum".

Es-tu prêt à recevoir les données ?
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Instructions bien reçues. Je vais traduire les scénarios du jeu Argumentum vers le russe en respectant :
- La cohérence lexicale des catégories et sous-catégories entre scénarios
- Un vocabulaire russe contemporain et naturel, adapté à des situations de jeu quotidiennes
- Le ton narratif vivant et ludique (rythme, humour, brièveté) avec des tournures idiomatiques russes
- La traduction cohérente des rôles "baratineur" et "piocheur"
- L'adaptation mesurée des noms propres et références culturelles
Je n'utiliserai que des appels à la fonction `UpdateRecord` pour chaque entrée à compléter, sans texte libre. Prêt à recevoir les données.
Loading