L'API Doubao est fournie via Volcengine Ark. La facture n'est pas un forfait fixe « un appel, un prix » : elle dépend des tokens d'entrée, des tokens de sortie, du cache, du mode d'inférence et des ressources réservées. Beaucoup d'équipes établissent leur budget sur un prix unitaire unique et découvrent un coût plus élevé après la mise en production ; la cause n'est souvent pas une hausse du modèle, mais une structure d'entrée, un taux de cache et un mode d'appel différents de l'estimation.
Cet article décompose la facturation de l'API Doubao en postes vérifiables, puis donne l'ordre d'estimation et de réduction des coûts. Les prix unitaires exacts sont ceux de la page Tarifs des modèles et de la grille officielle de Volcengine Ark ; prix et règles peuvent évoluer.
Remarque : Doubao, Volcengine Ark et Volcengine sont des marques de leurs détenteurs respectifs. Cet article est purement technique et n'implique aucune relation de partenariat ; les règles de facturation et de facturation fiscale font foi sur les pages officielles.
1. De quoi se compose la facture
L'inférence en ligne de Volcengine Ark est facturée au token en paiement à l'usage, mais la facture complète peut aussi inclure le stockage du cache, l'inférence par lots, les packs de débit et les frais de fine-tuning.
| Poste de facturation | Quand il apparaît | Unité | Remarque |
|---|---|---|---|
| Entrée (hors cache) | Première entrée du prompt dans le contexte | Token | Correspond à prompt_tokens |
| Entrée (cache touché) | Réutilisation d'un préfixe précédemment mis en cache | Token | Correspond à cached_tokens, tarif généralement plus bas |
| Stockage du cache | Après activation du cache de contexte | Token × heure | Facturé sur le volume maximal stocké dans l'heure civile |
| Sortie | Génération du texte ou du résultat structuré | Token | Correspond à completion_tokens |
| Inférence par lots | Tâches de traitement hors ligne | Token | Tarif distinct, généralement non éligible au quota gratuit |
| Pack de débit TPM | Débit par minute réservé à l'avance | Durée d'achat | Facturé même sans appel |
| Unité de modèle | Capacité de calcul dédiée | Durée d'achat | Facturé même sans appel |
| Fine-tuning | Phase d'entraînement | Token × époque ou capacité | Séparé des frais d'inférence |
Distinguez d'abord les frais « à l'usage » et les frais « payés à l'achat » : le budget ne doit rien oublier. Les premiers varient avec le trafic, les seconds sont des coûts fixes.
2. Comment se calculent entrées et sorties
L'entrée regroupe tout ce qui entre dans le contexte : prompt système, messages précédents, définitions d'outils, documents récupérés, images et autres contenus multimodaux. Tout est converti en tokens et facturé au tarif d'entrée. La sortie est le contenu réellement généré, facturé au tarif de sortie, généralement plus élevé.
Quelques détails souvent négligés :
- Si chaque tour d'une conversation reprend tout l'historique, les tokens d'entrée s'accumulent avec le nombre de tours, au lieu de ne compter que la dernière phrase.
- Le schéma et la description des fonctions appelées occupent aussi des tokens d'entrée : plus il y a d'outils, plus le coût fixe augmente.
- Les entrées multimodales comme les images et l'audio sont converties selon des règles propres ; on ne peut pas les estimer à partir de la seule longueur du texte.
- Les modèles de raisonnement incluent généralement leur réflexion dans la sortie ; la règle exacte figure dans la documentation officielle de facturation.
Le budget ne doit donc pas seulement demander « combien coûtent l'entrée et la sortie », mais « quelle part de ma requête est en entrée et quelle part en sortie ». Un chatbot de service client a beaucoup d'entrée et peu de sortie ; la génération de textes longs, l'inverse. Les structures de coût sont totalement différentes.
3. Cache de contexte : des économies, mais aussi des frais
Le cache de contexte repose sur la réutilisation de préfixes stables. Quand deux requêtes commencent exactement de la même façon, la partie touchée est facturée au tarif de cache, plus bas, et seul le contenu ajouté est facturé au tarif d'entrée normal. Mais ce n'est pas gratuit :
- Le hit de cache est facturé sur
cached_tokens, à un prix inférieur à l'entrée normale, mais pas nul. - Le stockage du cache est facturé à l'heure, généralement sur le nombre maximal de tokens stockés dans chaque heure civile.
- Le cache fonctionne au mieux, sans promesse de hit ; si le taux est faible, les frais de stockage peuvent dépasser l'économie réalisée sur les entrées.
Pour que le cache économise réellement, placez le contenu stable au début de la requête : prompt système fixe, définitions d'outils fixes, préfixe de connaissances fixe ; et repoussez à la fin les horodatages, identifiants aléatoires, noms d'utilisateur et résultats de recherche dynamiques. Si chaque requête de l'activité est de toute façon différente, désactivez d'abord le cache et observez la facture avant de décider.
4. En ligne, par lots ou packs de débit : que choisir
Volcengine Ark propose plusieurs modes d'inférence, avec des prix et des cas d'usage différents :
- Inférence en ligne au token, paiement à l'usage : adaptée aux trafics incertains et aux exigences de latence modérées ; pas d'appel, pas de frais, et les nouveaux utilisateurs disposent généralement d'un quota gratuit déductible.
- Inférence par lots : adaptée à l'annotation hors ligne, à la modération de contenu ou au résumé massif, sans contrainte de temps réel ; le prix est généralement plus bas, mais le quota gratuit ne s'applique pas.
- Pack de débit TPM : adapté aux activités de production à trafic prévisible nécessitant un débit stable ; achat à la journée ou à l'heure, facturé même sans appel.
- Unité de modèle : capacité de calcul dédiée, adaptée aux modèles fine-tunés ou aux besoins de concurrence particuliers ; il s'agit d'un coût fixe.
Ne comparez pas seulement les prix unitaires. L'inférence par lots est moins chère, mais les résultats arrivent tard ; un pack de débit est stable, mais coûte aussi pendant les périodes creuses. Classez l'activité selon deux axes — temps réel ou hors ligne, trafic prévisible ou non — puis choisissez le mode de facturation ; c'est souvent plus efficace que de changer de modèle.
5. Une estimation réelle avec le champ usage
N'estimez pas les tokens d'après le nombre de caractères. Enregistrez le champ usage renvoyé à chaque appel ; une semaine d'observation suffit à obtenir la structure réelle de votre activité.
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ARK_API_KEY"],
base_url="https://ark.cn-beijing.volces.com/api/v3",
)
resp = client.chat.completions.create(
model=os.environ["ARK_ENDPOINT_ID"], # ID du point d'accès d'inférence ou du modèle, selon la console
messages=[
{"role": "system", "content": "Tu es un assistant de service client. Réponds en trois phrases maximum."},
{"role": "user", "content": "Peut-on encore modifier l'adresse après l'expédition d'une commande ?"},
],
)
print(resp.usage) # enregistre les champs d'entrée, de sortie et de cache
Procédez dans cet ordre :
- Fixez les champs enregistrés : horodatage, projet, modèle, tokens d'entrée, tokens de sortie, hit de cache, mode streaming, nombre de reprises.
- Échantillonnez une semaine et calculez les entrées et sorties moyennes par scénario, sans utiliser la moyenne globale du site.
- Calculez le coût d'un appel par « entrées × tarif d'entrée + sorties × tarif de sortie », en appliquant un tarif plus bas à la partie en cache.
- Multipliez par le nombre d'appels quotidiens, puis par 30, pour obtenir le coût mensuel d'inférence.
- Ajoutez les postes fixes : stockage du cache, tâches par lots, packs de débit ou unités de modèle.
- Prévoyez une marge pour les reprises, les pics et les ajustements tarifaires.
- Chaque mois, recoupez avec la facture pour corriger le modèle d'estimation.
Si la réponse ne contient pas le détail du cache, enregistrez le total d'entrée et de sortie, puis reconstituez à partir de la facture ou de la page d'usage. L'essentiel est de garder une méthode cohérente et de ne pas comparer des données de canaux ou de dates différents.
6. Ne pas inverser l'ordre de la maîtrise des coûts
- Quantifier d'abord : décomposez la structure réelle des tokens par projet, modèle et scénario, et identifiez les trois appels les plus coûteux.
- Améliorer ensuite le taux de cache : placez les préfixes stables au début, réduisez le contenu dynamique, observez l'évolution du taux de hit.
- Réduire ensuite les entrées : ne rappelez que les extraits pertinents, résumez l'historique, ne conservez que les champs utiles des résultats d'outils.
- Limiter les sorties : fixez un
max_tokensraisonnable, demandez du JSON ou des champs fixes, réduisez les explications redondantes. - Router entre les modèles : classification, extraction et réécriture sur un modèle léger, montée en gamme pour le raisonnement complexe.
- Basculer les tâches hors ligne en lots : placez les tâches sans contrainte de temps réel en inférence par lots, hors des heures de pointe.
- Négocier le prix unitaire en dernier : si les entrées ne sont pas maîtrisées et que le cache ne touche pas, même un modèle moins cher ne fera pas baisser la facture.
7. Gérer budget et facture
- Une clé par projet, test et production séparés, pour éviter le partage des quotas.
- Fixer un plafond de dépense et une alerte de solde par clé, afin de limiter les dégâts en cas d'appels anormaux.
- Rapprocher chaque semaine par projet, modèle et scénario, et identifier les appels qui croissent le plus vite.
- Enregistrer séparément les économies dues au cache, aux lots et au routage des modèles ; sinon, impossible de prouver l'efficacité des optimisations.
- Pour les équipes ayant besoin de payer en yuans, d'une facture unifiée et de justificatifs, l'accès se fait via ZSQH AI Gateway, compatible OpenAI ; les prix et règles de facturation font foi sur la page Tarifs des modèles.
Questions fréquentes
L'API Doubao propose-t-elle un quota gratuit ?
L'inférence en ligne offre généralement un quota gratuit aux nouveaux utilisateurs, déductible de la consommation au token en paiement à l'usage ; l'inférence par lots et le fine-tuning ne sont généralement pas éligibles. Le montant et la validité font foi dans la console Volcengine Ark.
Pourquoi le stockage du cache est-il aussi facturé ?
Le cache occupe des ressources de stockage côté serveur : outre les tokens facturés en cas de hit, un coût s'applique au volume et à la durée de stockage. Si le taux de hit est faible, optimisez d'abord la structure du préfixe et désactivez le cache si nécessaire.
L'inférence par lots est-elle toujours moins chère ?
Le prix unitaire au token est généralement plus bas, mais les résultats ne sont pas renvoyés en temps réel et le quota gratuit ne s'applique pas. Elle convient aux tâches hors ligne, pas au service client en ligne à faible latence.
Les requêtes de reprise sont-elles facturées ?
Dès que le serveur a terminé l'inférence et produit des tokens, la facturation s'applique généralement, même si le client n'a pas reçu le résultat à temps. La facturation des échecs dépend de la facture et de la documentation officielle ; ajoutez backoff et plafond à la logique de reprise.
Pourquoi mon estimation diffère-t-elle de la facture ?
Les oublis courants : messages précédents, définitions d'outils, conversion du multimodal, stockage du cache, requêtes de reprise et frais fixes des packs de débit. Rapprochez les identifiants de requête des journaux d'usage pour localiser l'écart.
Étape suivante
Créez d'abord une clé de test sur ZSQH AI Gateway, faites tourner une semaine de tâches réelles en enregistrant entrées, sorties et hits de cache, puis convertissez le budget à partir de la page Tarifs des modèles. La disponibilité des modèles et les prix font foi sur cette page.
À lire aussi :
