fleet-memory/hindsight-api/hindsight_api/engine
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
..
retain feat: Add per-request LLM token usage metrics (#117) 2026-01-08 10:36:58 +01:00
search feat: refactor hindsight-embed architecture (#66) 2025-12-22 22:02:40 +01:00
__init__.py feat: extensions (#54) 2025-12-22 11:05:23 +01:00
cross_encoder.py fix: doc build and lint files (#34) 2025-12-16 13:49:09 +01:00
db_utils.py fix: doc build and lint files (#34) 2025-12-16 13:49:09 +01:00
embeddings.py feat: configurable embedding dimensions + OpenAI Embeddings (#101) 2026-01-05 14:43:05 +01:00
entity_resolver.py feat: extensions (#54) 2025-12-22 11:05:23 +01:00
interface.py feat: add max_tokens and structured output to /reflect (#74) 2026-01-01 17:09:39 +01:00
llm_wrapper.py feat: Add per-request LLM token usage metrics (#117) 2026-01-08 10:36:58 +01:00
memory_engine.py feat: Add per-request LLM token usage metrics (#117) 2026-01-08 10:36:58 +01:00
query_analyzer.py fix: doc build and lint files (#34) 2025-12-16 13:49:09 +01:00
response_models.py feat: Add per-request LLM token usage metrics (#117) 2026-01-08 10:36:58 +01:00
task_backend.py feat: add hindsight-embed and native agentic skill (#64) 2025-12-22 16:42:11 +01:00
utils.py feat: Add per-request LLM token usage metrics (#117) 2026-01-08 10:36:58 +01:00