They're also prefix cached, so the cost to Anthropic and performance hit is greatly reduced.
That's not any better. It's actually worse.
System prompts are part of the software that customers pay to access.
Complaining about that is a bit like complaining that your Netflix subscription includes paying to execute the compiled code that Netflix wrote that serves you video streams from their servers.
Actually there is a difference: If Anthropic deleted a large chunk of that system prompt I guess you might get like a 1% increase in how much Opus 5 you can use via their chat allowance for your paid subscription.
Is that really something worth being frustrated by?
they are the first part of the input and it contains no user dependent variables, so the model is in a known state that it can reuse across all users, it does not need to recompute all that inference
That is never the cost, it's a common misconception.
Cost scales linearly per tokens. Unless you are sending one token at a time and avoiding using the same machine or cache.
Just look at api charges, they are charged by token, not by token squared.
Probably because if they did, they would need to retrain the model everytime they want to change the system prompt.
The other explanation may be that these AI labs may be expecting more government scrutiny, and "here's a document" would probably go better than "here's some vector representation of our values" when talking to politicians.
[1] https://arxiv.org/abs/2106.09685
[2] https://vgel.me/posts/representation-engineering/
[3] https://transformer-circuits.pub/2024/scaling-monosemanticit...
EDIT: I see, the control vectors operate more directly upon the model, in a way embedding vectors don’t quite have access to.
I think the more likely reason is it doesn't work as well as in context learning. Otherwise they would prefer to avoid polluting context and degrading performance.
Does there exist a model X that behaves exactly as a model Y with context Z? Maybe, but it's not trivial to achieve and might possibly be convoluted and more expensive.
Having them in context is super easy and cheap. It is trivial to change and is 100% cacheable.
That would make the model quite inflexible.
A system prompt is about guiding the behavior for the rest of the conversation.
If I'm writing an agent for financial analysis I don't want the crap that belongs to a chat-based one, or a code-oriented one.