Posted by cauchyk 3 days ago
Show HN: A modern C++20 AI SDK (GPT‑4o, Claude 3.5, tool‑calling)
I’m hacking on new features for the ClickHouse native client and wanted the same “just call the model” ergonomics JavaScript and Python now enjoy. It didn’t exist for modern C++, so I wrote one.
ai‑sdk‑cpp (Apache‑2.0) gives you:
- Unified calls to OpenAI (GPT‑4o) and Anthropic (Claude 3.5) with a single C++20 API. - Streaming, multi‑turn chat, error handling—all std::optional/std::variant, no macros. - Tool calling (function‑calling) so the model can hit real APIs; sync or async, runs in parallel.
The tricky bit: C++ still lacks real reflection, so mapping plain functions → JSON schemas isn’t as automatic as, say, TypeScript decorators. I’d love fresh eyes on that part. Try the examples and tell me where it feels clunky. This is inspired by Vercel's AI SDK [1], and litellm [2].
Repo live here: https://github.com/ClickHouse/ai-sdk-cpp, feedback welcome!
[1] https://github.com/vercel/ai [2] https://github.com/BerriAI/litellm
In general I’ve found it’s much better in C++ to be verbose and plain rather than succinct and elegant.
Javascript and python lack typing so being pithy&clever in those languages has entirely different implications than in C++.
“How can I express this in the most basic, unsurprising and plainspoken C++” is usually the right question to ask. “How can I make this more elegant” is a question better suited for other languages imho.
The best C++ API when in doubt is a C style API.
For example,
- https://www.boost.org/doc/libs/latest/doc/html/boost_pfr.htm...
- https://github.com/getml/reflect-cpp
And kudos for using modern C++.