# LiteLLM Spend & Cost Analysis Queries

When investigating high model costs or checking the effective price of models routed through `admin-ai`, you can query the `LiteLLM_SpendLogs` table directly on the AI server (178.156.167.181). 

*Note: Column names in this table use camelCase (e.g., `"startTime"`), which require double quotes in Postgres.*

## 1. Effective Cost per 1 Million Tokens (Last 72 Hours)

This query groups by model and provider, calculates the actual effective cost per 1M tokens based on recorded spend, and filters out trivial usage (<10k tokens). This is the best way to compare real-world pricing for models like `deepseek-v4-pro` vs `deepseek-chat` to make cost-effective primary model recommendations.

```bash
ssh -i /root/.ssh/itpp-infra root@178.156.167.181 \
  "docker exec litellm_postgres psql -U litellm -d litellm_db -At -F '|' -c \"
SELECT 
  COALESCE(model_group,'') as model, 
  COALESCE(custom_llm_provider,'') as provider, 
  COUNT(*) as calls, 
  ROUND(SUM(spend)::numeric,6) as total_spend_usd, 
  SUM(total_tokens) as tokens, 
  ROUND((SUM(spend)/NULLIF(SUM(total_tokens),0)*1000000)::numeric,6) AS effective_usd_per_1M_tokens
FROM \\\"LiteLLM_SpendLogs\\\" 
WHERE \\\"startTime\\\" >= NOW() - INTERVAL '72 hours' AND model_group <> '' 
GROUP BY model_group, custom_llm_provider 
HAVING SUM(total_tokens) > 10000 
ORDER BY effective_usd_per_1M_tokens ASC NULLS LAST;\""
```

## 2. Daily Spend by User & Session (Context Size Investigation)

High API costs are often driven by enormous prompt contexts sent repeatedly. This query finds the exact sessions and models burning the most spend today.

```bash
ssh -i /root/.ssh/itpp-infra root@178.156.167.181 \
  "docker exec litellm_postgres psql -U litellm -d litellm_db -At -F '|' -c \"
SELECT 
  COALESCE(session_id,'') as session, 
  COALESCE(\\\"user\\\",'') as \\\"user\\\", 
  model_group,
  COUNT(*) as calls, 
  ROUND(SUM(spend)::numeric,4) as spend, 
  SUM(prompt_tokens) as prompt_tokens, 
  SUM(completion_tokens) as completion_tokens
FROM \\\"LiteLLM_SpendLogs\\\" 
WHERE \\\"startTime\\\" >= DATE_TRUNC('day', NOW())
GROUP BY session_id, \\\"user\\\", model_group 
ORDER BY SUM(spend) DESC NULLS LAST LIMIT 20;\""
```

If you see a session averaging 250,000+ `prompt_tokens` per call, the agent's conversation history has grown too large for expensive models like `gpt-5.5` or `claude-sonnet-4-6`. The immediate fix is to start a `/new` session to drop context, or swap the primary model to a cheaper alternative.