fleet-memory/hindsight-api/hindsight_api/engine/retain
Alexander Pinsker 29a542dc23
feat: Add per-request LLM token usage metrics (#117)
* feat: Record LLM token metrics via Prometheus

Wire up the existing token metrics infrastructure to actually record
token usage from LLM calls. The MetricsCollector already had
record_tokens() method and Prometheus counters (hindsight.tokens.input,
hindsight.tokens.output), but they were never being populated.

Changes:
- Import get_metrics_collector in llm_wrapper.py
- Call record_tokens() after successful LLM calls for:
  - OpenAI/Groq (using response.usage.prompt_tokens, completion_tokens)
  - Anthropic (using response.usage.input_tokens, output_tokens)
  - Gemini (using response.usage_metadata.prompt_token_count, candidates_token_count)
- Add test file to verify token metrics are recorded

Note: Ollama's native API doesn't return token usage, so metrics
are not recorded for that provider.

The token metrics will now be available via /metrics endpoint:
- hindsight_tokens_input_total
- hindsight_tokens_output_total

* feat: add per-request token usage tracking to retain and reflect endpoints

- Add TokenUsage model with input_tokens, output_tokens, total_tokens
- Return usage metrics in retain response (sync operations only)
- Return usage metrics in reflect response
- Update Python, TypeScript, and Rust clients
- Add API documentation for usage fields
- Add changelog entry
2026-01-08 10:36:58 +01:00
..
__init__.py fix: doc build and lint files (#34) 2025-12-16 13:49:09 +01:00
bank_utils.py feat: extensions (#54) 2025-12-22 11:05:23 +01:00
chunk_storage.py feat: extensions (#54) 2025-12-22 11:05:23 +01:00
deduplication.py fix: doc build and lint files (#34) 2025-12-16 13:49:09 +01:00
embedding_processing.py fix: doc build and lint files (#34) 2025-12-16 13:49:09 +01:00
embedding_utils.py fix: doc build and lint files (#34) 2025-12-16 13:49:09 +01:00
entity_processing.py misc: add mcp integration tests and increase test coverage (#98) 2026-01-05 11:16:55 +01:00
fact_extraction.py feat: Add per-request LLM token usage metrics (#117) 2026-01-08 10:36:58 +01:00
fact_storage.py feat: extensions (#54) 2025-12-22 11:05:23 +01:00
link_creation.py fix: doc build and lint files (#34) 2025-12-16 13:49:09 +01:00
link_utils.py feat: extensions (#54) 2025-12-22 11:05:23 +01:00
observation_regeneration.py feat(config): Add configurable observation thresholds (#83) 2026-01-01 16:22:25 +01:00
orchestrator.py feat: Add per-request LLM token usage metrics (#117) 2026-01-08 10:36:58 +01:00
types.py feat: Add user-provided entities support to retain endpoint (#91) 2026-01-05 10:05:17 +01:00