Token Usage Service
Utilities for extracting and tracking LLM token usage from pipeline executions.
Key Functions
extract_token_usage()- Extract token counts from pipeline outputsrecord_usage()- Record token usage to database
- ai4drpm.services.engine.token_usage_service.extract_token_usage_from_pipeline_result(pipeline_result, component_names=None)[source]
Extract token usage information from a Haystack pipeline execution result.
Haystack generators (OpenAIGenerator, etc.) return token usage in their output’s meta list. Each meta dict contains a usage dict with: - prompt_tokens - completion_tokens - total_tokens
- Parameters:
- Returns:
component_name: Name of the generator component
model: Model name (if available)
prompt_tokens: Input tokens
completion_tokens: Output tokens
total_tokens: Total tokens
- Return type:
List of dicts, each containing
Example
- pipeline_result = {
- “generator”: {
“replies”: [”…”], “meta”: [{
“model”: “mistral-large-latest”, “usage”: {
“prompt_tokens”: 1500, “completion_tokens”: 500, “total_tokens”: 2000
}
}]
}
}
usage_list = extract_token_usage_from_pipeline_result(pipeline_result) # Returns: [{ # “component_name”: “generator”, # “model”: “mistral-large-latest”, # “prompt_tokens”: 1500, # “completion_tokens”: 500, # “total_tokens”: 2000 # }]
- ai4drpm.services.engine.token_usage_service.aggregate_token_usage(usage_records)[source]
Aggregate multiple token usage records into totals.
- Parameters:
usage_records (
List[Dict[str,Any]]) – List of usage dicts from extract_token_usage_from_pipeline_result- Returns:
prompt_tokens: Total prompt tokens
completion_tokens: Total completion tokens
total_tokens: Total tokens
models: Set of unique models used
component_count: Number of components with usage
- Return type:
Dict with aggregated totals