Kostnadsmodellering för LLM-system
Kunna räkna ut kostnad per anrop och per användare och sätta budgetar och kvoter.
Förkunskaper
Intuition
Grundformeln:
kostnad per anrop = (in_tokens × pris_in + ut_tokens × pris_ut) / 1 000 000
Utdata kostar typiskt 3–5 gånger mer än indata. Men i RAG-system dominerar ofta indata ändå, eftersom kontexten är stor och svaret kort.
Räkna på hela kedjan, inte per anrop. Ett «samtal» kan innehålla flera LLM-anrop: omformulering av frågan, embedding, omrankning, generering, och kanske en domare. Det är summan som är kostnaden per användarinteraktion.
Kod
PRISER = { # kr per miljon tokens — exempelvärden, kontrollera aktuella
"stor": {"in": 30.0, "ut": 150.0},
"liten": {"in": 2.0, "ut": 8.0},
"embed": {"in": 0.2, "ut": 0.0},
}
def kostnad(modell, in_tok, ut_tok=0):
p = PRISER[modell]
return (in_tok * p["in"] + ut_tok * p["ut"]) / 1e6
def rag_samtal(fragor_per_session=6, kontext=4000, svar=300, cache_traff=0.8):
per_fraga = (
kostnad("embed", 50)
+ kostnad("liten", 800, 100) # omformulering och omrankning
+ kostnad("stor", int(kontext * (1 - cache_traff * 0.9)), svar)
)
return {"per_fraga_kr": round(per_fraga, 4),
"per_session_kr": round(per_fraga * fragor_per_session, 3),
"per_1000_anvandare_kr": round(per_fraga * fragor_per_session * 1000, 1)}
print(rag_samtal())
# {'per_fraga_kr': 0.0919, 'per_session_kr': 0.551, 'per_1000_anvandare_kr': 551.3}
print(rag_samtal(cache_traff=0.0))
# {'per_fraga_kr': 0.1699, 'per_session_kr': 1.019, 'per_1000_anvandare_kr': 1019.5}
Skillnaden mellan raderna är prompt-caching — nästan en halvering, utan någon kvalitetsförändring.
De fyra största kostnadsdrivarna, i ordning:
- Kontextstorlek — skicka bara det som behövs. Halverad kontext är halverad kostnad.
- Modellval — en liten modell för enkla delsteg (omformulering, klassificering, rutinsvar).
- Caching — samma prefix återanvänds.
- Antal anrop per interaktion — varje extra steg i kedjan multiplicerar.
Kvoter är inte bara ekonomi utan säkerhet: utan tak kan en buggig klient eller en loopande agent bränna en månadsbudget på en natt. Sätt tak per användare och dag, per organisation och månad, och en global kill-switch — precis som plattformens LLM_DAILY_BUDGET_SEK.
Behärskning innebär
- Räknar kostnad per anrop och per användare
- Sätter budgetar och kvoter som håller
- Identifierar de största kostnadsdrivarna
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Anthropic — Prompt caching — dokumentation, fri läsning
- Google — Rules of Machine Learning — CC BY 4.0