// the find
andrewyng/aisuite
Simple, unified interface to multiple Generative AI providers
aisuite is a thin Python abstraction that normalizes the chat completions API across 20+ LLM providers behind an OpenAI-shaped interface. It has grown to include an agents layer with tool calling, MCP support, and a full desktop app (OpenWorker). Primarily useful if you're writing code that needs to swap between providers without touching call sites.
The provider:model string convention (`anthropic:claude-sonnet-4-6`) is clean and keeps routing logic out of your application code. The auto-generated tool schemas from plain Python functions with docstrings is genuinely useful — you don't have to write JSON schemas by hand. MCP support via a simple dict config is a nice addition that most equivalent libraries don't have. The provider adapter pattern is simple enough that adding a new provider is a one-file job.
The abstraction leaks badly at the edges: streaming tool calls can't be combined with `max_turns`, and provider-specific features (structured output, prompt caching, extended thinking) have no path through the unified API — you'd drop down to the raw SDK anyway. The repo has grown in three directions at once (chat API, agents framework, desktop app) without a clear story for what the core library actually is; the README spends as much time on OpenWorker as on the Python package. The state store and artifact system in the agents layer are thin enough that you'll outgrow them quickly in any production workload — Postgres state store is one file with no connection pooling. Testing is almost entirely against mocks, so cross-provider behavioral differences aren't caught until you hit them in production.