feat(dataset-updater): multi-provider API + gpt-5.5 for EN translations - #302
Conversation
…figs to gpt-5.5 Add BaseUrl and MaxOutputTokens to Prompt.cs and DatasetUpdaterConfig.cs, enabling any OpenAI-compatible API endpoint (OpenRouter, local models, etc.). Switch Virtues EN and Scenarii EN translation configs from gpt-5.4-mini to gpt-5.5 via direct OpenAI API for best translation quality per benchmark. Add .keys/ to .gitignore for API key storage. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
Clean multi-provider support. BaseUrl property properly wired with null checks, MaxOutputTokens correctly maps to ChatCompletionOptions.MaxOutputTokenCount. Switching EN translations to gpt-5.5 with reduced chunk size (8 to 4) for quality is a reasonable tradeoff. .keys/ addition to .gitignore is correct.
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw] LGTM
Multi-provider API support is clean. BaseUrl nullable with conditional OpenAIClientOptions branching is the right pattern. MaxOutputTokens properly threaded. Config updates consistent with benchmarks. .keys/ in .gitignore is appropriate. Tests pass (120/120 non-skipped).
myia-ai-01
left a comment
There was a problem hiding this comment.
Review ai-01 — APPROVE ✅
Refactor surgical et propre. Convention review checklist :
- ✅ Diff sanity : +35/-7, 4 fichiers, scope strictement DatasetUpdater config + Prompt factory. Aucun change CSV/prompts.
- ✅ Fallback OpenAI préservé :
if (string.IsNullOrEmpty(BaseUrl))branch garde le constructeur historiqueOpenAIClient(ApiKey)intact. - ✅ Endpoint configurable :
BaseUrl?nullable, threaded proprement deDatasetUpdaterConfig→Prompt→OpenAIClientOptions.Endpoint. Compatible OpenRouter ou tout endpoint OpenAI-compatible. - ✅ Sécurité :
.keys/dans.gitignore,OpenAIKeyPathconfig-driven (pas d'inline secret). Aucune fuite dans le diff. - ✅ CI 3/3 SUCCESS (Debug + Release + GitGuardian).
- ✅ Tests : 120 pass / 0 fail / 5 skip (cf. PR body).
- ✅ ChunkSize 8 → 4 cohérent avec passage à modèle plus puissant (meilleur contrôle qualité par chunk).
- ✅ MaxOutputTokens 4096 raisonnable pour translations Scenarii/Virtues.
Notes / suggestions (non-bloquantes)
- Logging startup : utile de logger le
BaseUrleffectif au démarrage du run pour debug (sans la clé, juste l'endpoint). Peut être ajouté en suivi. - Doc XML :
BaseUrlmériterait un<summary>indiquant format attendu (avec ou sans/v1, trailing slash). Pas bloquant. - Test plan manuel (cf. body PR) : confirmer pilot 3-5 records EN avant lancement full 76+76 records. Cohérent avec smoke test plan ai-01 cycle 39.
- Décision benchmark mise à jour : OpenAI gpt-5.5 direct retenu plutôt que OpenRouter claude-sonnet-4 (cycle 24). Cohérent avec second benchmark po-2023 (qualité supérieure, coût ~$1 pour 258 records). À mettre à jour dans
cycle25-glossary/translation-glossary.mdpost-merge.
Impact attendu
- Phase 1 EN : débloquée — Scenarii (76 records) + Virtues (gaps EN comblés via gpt-5.5)
- Phase 1 PT : pas adressée par cette PR mais infrastructure
BaseUrlpermet futurs switches sans nouveau code - #211 (Rules PT) : pas adressée, pré-requis re-run PT post #297 prompt fix
Prêt à merger côté review ai-01. jsboige : à toi la décision finale (ordre vs PR #301 pending merge).
Summary
BaseUrlandMaxOutputTokenssupport toPrompt.csandDatasetUpdaterConfig.cs, enabling any OpenAI-compatible API endpoint (OpenRouter, local models, etc.)gpt-5.4-minitogpt-5.5via direct OpenAI API for best translation quality.keys/to.gitignorefor API key file storageBenchmark Results (6 models tested)
Changes
Prompt.cs: AddedBaseUrl(custom endpoint) andMaxOutputTokensproperties; client construction branches on BaseUrl presence usingApiKeyCredentialDatasetUpdaterConfig.cs: AddedBaseUrlandMaxOutputTokensproperties, threaded into Prompt constructionDatasetUpdaterRootConfig.cs: Virtues EN + Scenarii EN configs updated toModel = "gpt-5.5",OpenAIKeyPath = ".keys\openai-key.txt",MaxOutputTokens = 4096,ChunkSize = 4.gitignore: Added.keys/directoryTest plan
dotnet buildpasses with 0 errors🤖 Generated with Claude Code