Passer au contenu principal
W&B Weave calcule automatiquement le coût de chaque appel LLM en suivant l’utilisation des tokens et en appliquant la tarification du modèle utilisé, ce qui vous permet de suivre et d’analyser directement les dépenses de l’application dans vos traces et évaluations. Vous pouvez également suivre des coûts personnalisés lorsque vous avez besoin d’une tarification différente, de modèles de coûts internes ou de coûts pour des opérations dont Weave ne calcule pas automatiquement le coût.

Ajout d’un coût personnalisé

Vous pouvez ajouter un coût personnalisé à l’aide de la méthode add_cost. Les trois champs requis sont llm_id, prompt_token_cost et completion_token_cost. llm_id est le nom du LLM (par ex. gpt-4o). prompt_token_cost et completion_token_cost correspondent au coût par token du LLM (si le prix du LLM est indiqué par million de tokens, veillez à convertir la valeur). Vous pouvez également définir effective_date sur une valeur datetime afin que le coût prenne effet à une date précise ; par défaut, la date du jour est utilisée.
import weave
from datetime import datetime

client = weave.init("my_custom_cost_model")

client.add_cost(
    llm_id="your_model_name",
    prompt_token_cost=0.01,
    completion_token_cost=0.02
)

client.add_cost(
    llm_id="your_model_name",
    prompt_token_cost=10,
    completion_token_cost=20,
    # Par exemple, si je veux augmenter le prix du modèle après une certaine date
    effective_date=datetime(2025, 4, 22),
)

Interroger les coûts

Vous pouvez interroger les coûts à l’aide de la méthode query_costs. Il existe plusieurs façons d’interroger les coûts : vous pouvez fournir un ID de coût unique ou une liste de noms de modèles LLM.
import weave

client = weave.init("my_custom_cost_model")

costs = client.query_costs(llm_ids=["your_model_name"])

cost = client.query_costs(costs[0].id)

Purger un coût personnalisé

Vous pouvez purger un coût personnalisé à l’aide de la méthode purge_costs. Transmettez une liste d’ID de coût, puis les coûts correspondant à ces ID seront purgés.
import weave

client = weave.init("my_custom_cost_model")

costs = client.query_costs(llm_ids=["your_model_name"])
client.purge_costs([cost.id for cost in costs])

Calcul des coûts d’un projet

Vous pouvez calculer les coûts d’un projet à l’aide de notre calls_query et en ajoutant include_costs=True, avec un peu de configuration.
import weave

weave.init("project_costs")
@weave.op()
def get_costs_for_project(project_name: str):
    total_cost = 0
    requests = 0

    client = weave.init(project_name)
    # Récupérer tous les appels du projet
    calls = list(
        client.get_calls(filter={"trace_roots_only": True}, include_costs=True)
    )

    for call in calls:
        # Si l'appel a des coûts, les ajouter au coût total
        if call.summary["weave"] is not None and call.summary["weave"].get("costs", None) is not None:
            for k, cost in call.summary["weave"]["costs"].items():
                requests += cost["requests"]
                total_cost += cost["prompt_tokens_total_cost"]
                total_cost += cost["completion_tokens_total_cost"]

    # Renvoyer le coût total, le nombre de requêtes et le nombre d'appels
    return {
        "total_cost": total_cost,
        "requests": requests,
        "calls": len(calls),
    }

# Comme nous avons décoré notre fonction avec @weave.op(),
# nos totaux sont stockés dans weave pour les calculs historiques du coût total
get_costs_for_project("my_custom_cost_model")

Configurer un modèle personnalisé avec des coûts personnalisés

Consultez notre cookbook sur la configuration des coûts d’un modèle personnalisé.

Essayer sur Colab