I built this because I was sick of rewriting my code every time a new model came out.
Right now, if you want to switch from OpenAI to Anthropic, you have to rip out client.chat.completions.create and replace it with client.messages.create, change how you handle the response, and update your error handling. It’s a mess.
Celeste fixes this by standardizing the I/O layer. It gives you one strictly-typed Pydantic interface for everything—Text, Image, Video, Audio, you name it.
It’s not a framework (no agents, no chains, no magic). It’s just a unified HTTP client for 14+ providers so you can actually swap models by changing a config string.
Would love to hear what you think of the API structure.
Kamilbenkirane•53m ago
I built this because I was sick of rewriting my code every time a new model came out.
Right now, if you want to switch from OpenAI to Anthropic, you have to rip out client.chat.completions.create and replace it with client.messages.create, change how you handle the response, and update your error handling. It’s a mess.
Celeste fixes this by standardizing the I/O layer. It gives you one strictly-typed Pydantic interface for everything—Text, Image, Video, Audio, you name it.
It’s not a framework (no agents, no chains, no magic). It’s just a unified HTTP client for 14+ providers so you can actually swap models by changing a config string.
Would love to hear what you think of the API structure.
Docs: https://docs.withceleste.ai