177 points by kennethwolters20 days ago | 63 comments
How to play: Some comments in this thread were written by AI. Read through and click flag as AI on any comment you think is fake. When you're done, hit reveal at the bottom to see your score.got it
This is a cool project, and the idea of using LLMs to selectively extract features from open source projects is an interesting concept.
The only thing I take issue with is the phrase "LiteLLM Without the Bloat." A lot of the features that have been removed (like cost tracking, streaming, caching) are... kind of the core value proposition of LiteLLM for many of their users.
LiteLLM doesn't quite live up to its name. With all those features, there is nothing "lite" about it. It is essential for a project to live up to its name.
Imagine Sqlite adding heavy features from Postgresql, e.g. row-level security.
But imagine Sqlite not supporting joins or window functions... sure they are useful but look how many LOC it adds! Who is the arbiter of what Lite actually means?
We run it at my org and it's never been a noticeable resource hog. It's actually the best performer between it, our AI observability stack and the front end.
We ran the LiteLLM proxy for months mostly for per-team budgets. Spend tracking was the only reason we kept it. Everything else we could've done with a 50-line wrapper. Kong's pricing would've been a non-starter for a team our size.
I have the same complaint about oh-my-pi's readme. The tone is obnoxious. It's somehow jaded and matter-of-fact at the same time. Like it was written by that one guy at work who never misses a chance to brag about how clever he is.
There is a band called The Protomen who do rock operas about the Mega Man storyline. They have a very earnest, gritty sound. Every time I read a project README written by AI, I hear the voice over from the first track of the first album, Act 1: Hope Rides Alone (https://youtu.be/VZ8jyGVioxg?is=gsXlgwa4Ubx6LmKE).
"Twelve years Light worked and on a cold night in the year 200X, Protoman was born.
A perfect man, an unbeatable machine, hell-bent on destroying every evil standing between man and freedom, built for one purpose, to destroy Wily's army of evil robots. Ready. Willing. Prepared to fight."
For the Protomen it makes sense. But for a project README it's so absurdly melodramatic.
One "AI-ism" I noticed is that LLMs often just put sentences behind one another without using any connecting adverbs - and just leave it to the reader's imagination how the sentences are related to each other.
E.g. in the readme: "LiteLLM routes LLM calls across providers and translates between message formats. That core is buried under 100k+ LOC of proxy servers, caching layers [etc...]".
Those two sentences have opposite sentiment on LiteLLM, so a human author would at least put a "but" between them. In contrast, the LLM just strings them together.
This reads "blunt" and "matter-of-fact" at first glance, but I wonder if it's really just an artifact of allocating less space for text generation and more for code in LLMs.
Really? I mean, yeah, it's probably written by an LLM, but it's hardly the worst that I've seen. Looks way more straight forward than the modern README featuring a ton of badges, emojis, confusing out-of-context screenshots, "trust me bro" installation instructions, vague elevator pitches, "used by netflix, nasa, disney, good morning america, alex jones, the church of scientology", and other verbiage to create the illusion that the author won't immediately get bored and abandon their glorified dissertation piece. They all scream "give me your github stars" whereas this one doesn't. But I still get what you mean when it comes to the particular 'isms.
Funny, everything you pruned away is the reason I’m deploying LiteLLM in our platform. Having a reliable way to track token spend per customer across different services is important to us, and LiteLLM handles this well
I like the API, and since this is open source I will copy the design with attribution: I have been organically hacking little bits of LLM client code for most providers in Common Lisp for about 3 1/2 years and it is time to clean up all my old code. I probably need to do the same sort of refactoring for my search API wrappers.
First off, cool project! It's always great to see derivatives that question the efficiency of the established product.
I think the main thing the readme is missing is the core benefits. Reducing LOC and dependencies is cool, but it would be great to understand if this provides some additional benefits like lower latency or memory requirements.
"litellm routes LLM calls across providers and translates between message formats. That core is buried under 100k+ LOC"
Seriously anybody considering 100k+ LOC not a bloat? You made my day!
Let's just say the author's and my definition of bloat is not the same. Full disclosure, I'm the guy who reimplemented etcher (over 400Mb) in a mere 300Kb, Capstone (over 1Mb) in only 66Kb and who compressed LPC charactersheets (over 700Mb) into 4Mb. That's my interpretation of "non-bloated".
No, you forgot about the dependencies (others said it to be 700Mb). And 2,900 LOC is still way too much for handling a remote API call, especially in a high level language such as Python where the biggest part of the task is delegated to separate modules.
We hit the same wall with litellm and ended up using the plain openai SDK with a base_url swap. Most providers speak that format now. Only Anthropic needed its own adapter, maybe 150 lines. Streaming and tool-call quirks are where it gets messy.
the smaller surface is nice. i'd still keep auth and spend caps outside the proxy though, because once every app shares one key the blast radius gets ugly fast.
Immediate first impression is that this tagline should go. If the project brings something valuable to the table it doesn't need to shit on other permissively licensed open source projects to make a case for itself
most software like this will be dematerialized, democratized, and demonetized - companies building in the infra band being increasingly disintermediated
This is a 30 minute project with a frontier LLM. I don’t see why anyone would use anyone else’s router. Techniques are valuable today. Libraries are not.
Writing it takes 30 minutes, sure. Maintaining it is the part nobody counts. Providers change streaming formats, tool-call shapes and error codes every few months, and you'll find out from a customer. Who's on the hook for that when it's your own router?
Has anyone actually measured where the edge cases bite? My guess is streaming tool calls and provider-specific error/retry semantics, not the happy path. Those only show up after a month in prod, which is exactly when a 30 minute rewrite stops looking cheap.
This readme, when it talks about all the different AI endpoints it can use, reminds me of something.
I'm not an AI bro, but I've dabbled. It's kind of remarkable that all the different providers speak the same "openai compatibile" https endpoints. In other realms of software development, real interoperability like that can be kind of rare. Even if people support conceptually the same API, everybody always puts their unique incompatible spin on it. In the dabbling that I've done, big incompatibilities seem rare.
Lot of that "bloat" is provider quirks someone already hit in prod. Odd streaming chunks, retry edge cases, timeouts. Prune it and you rediscover each one at 3am. Who patches this when a provider changes its response format?
1. Not a tangent, it’s related to the very first content visible on that link.
2. Not a dismissal, an advise from an expert
3. Not complaining, as stated, giving an advise about the optics of using clear LLM prose on the first paragraph
The only thing I take issue with is the phrase "LiteLLM Without the Bloat." A lot of the features that have been removed (like cost tracking, streaming, caching) are... kind of the core value proposition of LiteLLM for many of their users.