Aller au contenu
Aller au contenu

Docs / Guides

Page traduite automatiquement

Cette page a été traduite automatiquement, elle peut donc contenir des erreurs ou se lire un peu bizarrement. La version anglaise fait foi. Lire l'original en anglais.

Estimer le coût avant une exécution

Dimensionne une exécution de traduction avant de dépenser : compte les clés avec un dry run, laisse verbatra calculer le coût, puis plafonne l'exécution.

Utilise ceci avant une première exécution sur un vrai projet, ou avant toute exécution que quelqu'un doit approuver. verbatra ne publie aucun prix, car les tarifs appartiennent au fournisseur et changent sans prévenir. Il compte ce qui te sera facturé, et le convertit en argent dès que tu lui donnes les tarifs actuels de ton fournisseur.

Pour un projet typique, c'est la première exécution qui coûte, et l'exécution suivante presque rien, car seules les clés modifiées sont envoyées.

Compte le travail

verbatra translate --dry-run
Sortie
verbatra translate (dry run)
  de: 400 would translate, 0 unchanged
  es: 400 would translate, 0 unchanged
  fr: 400 would translate, 0 unchanged
3 succeeded, 0 partial, 0 failed (dry run: nothing written)

would translate est le nombre de clés qu'une vraie exécution enverrait : celles qui manquent dans le fichier cible plus celles dont le texte source a changé. Un dry run ne construit aucun fournisseur, ne lit aucune clé et n'écrit rien. Considère ce nombre comme une borne haute : il ignore le cache, qui sert gratuitement les chaînes répétées lors d'une vraie exécution, et il ne regroupe pas les chaînes source identiques, qu'une vraie exécution n'envoie qu'une fois.

Estime la dépense

verbatra translate --estimate
Sortie
verbatra translate (estimate)
  de: 400 would translate, 0 unchanged
  es: 400 would translate, 0 unchanged
  fr: 400 would translate, 0 unchanged
  estimate: 1200 keys in 24 requests, ~40944 input + ~30720 output tokens
  estimated spend: no rate on file for gemini/gemini-2.5-flash; add rates.table["gemini/gemini-2.5-flash"] to your config to see a currency figure
  estimate excludes: cache hits, duplicate source strings, provider-side retries, translation length, tokenizer differences, repair requests
3 succeeded, 0 partial, 0 failed (dry run: nothing written)

--estimate implique --dry-run, il ne dépense donc rien. Il indique l'unité que facture ton fournisseur : des tokens pour un LLM, des caractères source pour DeepL et Google Cloud Translation, et aucun coût d'API pour un serveur openai-compatible ou libretranslate auto-hébergé. Avec --json, les mêmes chiffres se trouvent sous result.estimate, par locale et au total, pour qu'un script puisse s'appuyer dessus.

Pour voir un montant, cherche le tarif actuel de ton modèle sur la page de tarifs du fournisseur lui-même :

FournisseurFacturé auTarifs
Geminitokens d'entrée et de sortie (niveau gratuit disponible)Gemini API pricing
Anthropictokens d'entrée et de sortieAnthropic pricing
OpenAItokens d'entrée et de sortieOpenAI API pricing
OpenCodetokens d'entrée et de sortieOpenCode Zen pricing
DeepLcaractères sourceDeepL API pricing
Google Cloud Translationcaractères sourceCloud Translation pricing
openai-compatible, LibreTranslaterien : ton propre serveuraucun coût d'API

Ajoute-le ensuite à la configuration avec la date à laquelle tu l'as relevé :

verbatra.config.ts
export default defineConfig({
  // ...
  rates: {
    asOf: "2026-01-15",
    currency: "USD",
    table: {
      // placeholders: copy the current rates from https://ai.google.dev/gemini-api/docs/pricing
      "gemini/gemini-2.5-flash": { inputPerMillionTokens: 1, outputPerMillionTokens: 2 },
    },
  },
});

Les tarifs ci-dessus sont des exemples, pas des prix cités. Chaque montant calculé à partir d'eux porte la date asOf, donc une grille tarifaire ancienne se voit. verbatra n'invente jamais un tarif manquant et n'affiche jamais 0.00 pour un modèle qu'il ne sait pas chiffrer ; il nomme l'entrée manquante à la place. Le format des clés et les unités sont décrits dans rates.

Comprends ce que couvre le chiffre

L'estimation fait le calcul que tu ferais sinon à la main :

  • Requêtes. Les clés de chaque locale sont réparties en lots d'au plus maxBatchSize (50 par défaut), une requête par lot, plus les lots qu'enverrait generatePlurals.
  • Entrée. Chaque requête LLM porte des règles système fixes (environ 550 tokens) et un schéma de réponse (environ 100 tokens), puis les clés, leurs descriptions, le ton et le glossaire complet de la locale cible. Le prompt est mesuré en sérialisant la charge qui serait envoyée, donc un grand glossaire compte à chaque requête qui le transporte.
  • Sortie. La traduction n'existe pas encore, elle est donc évaluée comme le texte source plus 50 pour cent, car l'allemand, le français et le russe sont souvent d'un tiers à la moitié plus longs que l'anglais.
  • Tokens. Les caractères sont convertis à raison d'environ quatre par token, ce qui convient à de la prose anglaise ; d'autres écritures sont plus denses.

Une vraie exécution coûte en général moins, pour les deux raisons qui font du chiffre du dry run une borne haute. Elle peut aussi coûter plus, et la ligne estimate excludes nomme chaque cause. Deux comptent le plus :

  • Nouvelles tentatives. Une requête échouée est relancée : jusqu'à deux tentatives de plus pour Anthropic, OpenAI, OpenCode, openai-compatible et Gemini, cinq pour DeepL, aucune pour Google Cloud Translation et LibreTranslate. Une tentative qui a atteint le modèle est facturée.
  • Réparations. Quand des clés reviennent manquantes, verbatra envoie une requête de réparation, qui reporte en entier les règles système, le glossaire et le ton.

Planifie avec ce chiffre, mais ne le promets pas comme plafond. L'estimation ne couvre d'ailleurs que translate : retraduire une entrée depuis Studio ou un outil d'agent dépense par son propre chemin.

Plafonne l'exécution

Donne à l'exécution validée un arrêt ferme un peu au-dessus de la somme des tokens d'entrée et de sortie estimés :

verbatra translate --max-tokens 80000

Une requête qui dépasserait le plafond est retenue au lieu d'être envoyée, et ses clés restent en attente pour l'exécution suivante. Si la configuration fixe aussi maxTokens, c'est la valeur la plus basse qui s'applique. DeepL, Google Cloud Translation et LibreTranslate ne rapportent pas de tokens, donc le plafond s'applique alors à la projection de verbatra lui-même. Voir Plafond de tokens, et maxTokens et budgetBehavior pour un budget valable à chaque exécution.

Calibre sur une locale

Le chiffre exact vient d'une vraie exécution. Traduis une locale et lis la consommation :

verbatra translate --locales de
Sortie
verbatra translate
  de: 400 translated, 0 unchanged, 18400 tokens (10800 in, 7600 out)
  total: 18400 tokens (10800 in, 7600 out)
1 succeeded, 0 partial, 0 failed

Multiplie par le nombre de locales restantes. Avec --json, les chiffres sont usage.inputTokens et usage.outputTokens. L'exécution dépense de l'argent réel, mais le travail est gardé : cette locale est terminée.

Lis ce que les exécutions passées ont coûténouveau

L'Overview de Studio liste les exécutions enregistrées avec leur coût, figé à la fin de l'exécution, donc un changement ultérieur de rates ne le réécrit jamais. Un montant correspond aux tokens signalés par le fournisseur multipliés par le tarif en vigueur alors. Estimated est un chiffre en caractères source pour un fournisseur qui ne signale aucune consommation. At least est un minimum, car une locale n'a signalé aucun token. No rate signifie qu'aucun tarif ne correspondait à ce modèle, et unknown que des clés ont été envoyées sans qu'aucun token ne revienne ; aucun des deux n'est gratuit. Les fournisseurs auto-hébergés affichent not billed. L'enregistrement est documenté sous runHistory ; Review in Studio montre la page.

Fournisseurs de traduction automatique

DeepL et Google Cloud Translation facturent des caractères source, pas des tokens, et LibreTranslate compte des caractères source sans rien facturer. verbatra leur envoie le texte source avec les placeholders en courts marqueurs numérotés, sans règles système, noms de clés ni JSON autour. L'estimation ne compte que les caractères source. DeepL ne facture pas les balises autour de ses marqueurs ; que Google facture le balisage span qui les entoure n'est pas documenté. Une valeur que ces fournisseurs retiennent (PLACEHOLDER_UNSUPPORTED) n'est pas envoyée, si bien que les caractères envoyés peuvent être moins nombreux que le total brut.

Google Cloud Translation

Google Cloud Translation est compté comme DeepL : des caractères source dans l'estimation, et un nombre de tokens projeté pour un budget maxTokens, marqué comme estimé dans le résumé de l'exécution.

Estime depuis un agent

Deux outils d'agent renvoient ce qu'affiche translate --estimate --json, pour toutes les locales ou une partie, et n'appellent jamais de fournisseur :

OutilOù
translation.estimatele serveur MCP
verbatra_translation_estimateles outils d'agent de Studio

Dépenser dans la limite de l'estimation

translation.translatePending accepte ensuite les mêmes locales et un plafond maxTokens. Voir Estimer avant de payer.

Pourquoi l'exécution suivante coûte moins

Les chiffres ci-dessus sont le coût de la première exécution. Ensuite, verbatra n'envoie que les clés manquantes ou dont la source a changé depuis la référence du fichier de verrouillage, et le cache réutilise les traductions antérieures de chaînes identiques. Au quotidien, tu paies pour les chaînes que tu as modifiées. Pour répéter gratuitement, utilise le niveau gratuit de Gemini ou pointe openai-compatible vers un modèle local ; voir Fournisseurs.

Voir aussi

Modifier sur GitHub

Sur cette page