📌 项目地址:andrewyng/aisuite | ⭐ 13,784 颗星 | 🔧 Python | 📜 MIT
一句话概括这个仓库
aisuite 是 Andrew Ng 团队开源的一个 Python 库,做两件事:
- 把 OpenAI、Anthropic、Google、Ollama 等十几个提供商的 Chat Completions API 统一成一个接口,换模型只改一个字符串。
- 在这个接口之上加了一层简单的 Agent 框架——你可以给模型传 Python 函数当工具,自动生成 JSON Schema,自动循环执行,最大轮数
max_turns控制。
仓库里还附带了一个桌面应用 OpenCoworker,就是基于 aisuite 做的,下载即用,你的 API Key 和数据都在本地。
项目在 GitHub 上 13784 个 star(截至我写文章时),说明被这个痛点折腾过的人确实很多。
统一接口:改一行代码换模型
如果你用过两个以上 LLM 提供商,就知道每个 SDK 的 import、认证、参数名都不一样。aisuite 的做法很直接:定义一个自己的 Client,然后 client.chat.completions.create(model="openai:gpt-4o", messages=...)。model 参数前半部分是 provider 名,后半是模型名。目前支持的 provider 列表:
- openai, anthropic, google, ollama, cohere, mistral, huggingface, aws(Bedrock), openrouter 等等。
API Key 通过环境变量或传给 Client 的 config 参数设置,具体配置在仓库 examples 里有。
我试了一下,原来要写三套代码的对比实验,现在写一个循环改 model 字符串就行:
from aisuite import Client
client = Client()
for model in ["openai:gpt-4o", "anthropic:claude-3-5-sonnet", "google:gemini-pro"]:
response = client.chat.completions.create(model=model, messages=[{"role": "user", "content": "你好"}])
print(response.choices[0].message.content)
实际测试中,每条回复确实来自不同模型,不用管各家的 SDK 版本差异。这层抽象很薄,只暴露了各家共有的 chat completion 功能,但我认为这正是它省力的原因——不试图包揽所有独有特性,降低维护成本。
工具调用:传函数,不写 JSON Schema
很多应用需要让模型调用外部函数(比如查天气、写文件)。原生的 OpenAI 调用要求你手写 JSON Schema:
{
"type": "function",
"function": {
"name": "get_temperature",
"parameters": { "type": "object", "properties": { "city": { "type": "string" } } }
}
}
一旦参数多起来很容易写错。aisuite 允许你直接传一个 Python 函数,库自动用 introspection 生成 Schema。模型返回工具调用后,库自动执行函数,再把执行结果放回消息列表,继续给模型,直到 max_turns 用完或模型不再调用工具。这个过程你不需要写 while 循环。
README 里还提到它支持 MCP(Model Context Protocol)——如果你有现成的 MCP server(比如文件系统、数据库),连入即可,不需要额外胶水代码。
Agent API:轻量,但够用
官方 README 说它不是完整 Agent 框架,但提供了一套实用的 Agents API,包括一些内置的 Toolkits(files, git, shell)和工具策略(tool policies)。
实际用法很简单:创建 Client 时设置 max_turns=5,然后 client.chat.completions.create(messages, tools=...) 就会自动走完多轮。你只需要定义好工具函数,剩下的循环、消息追加、结果回传都由库处理。
对于“搜索资料→总结→生成报告”这类几步走的任务,这个抽象刚好。比 LangChain 轻太多,也不用学整个框架。
OpenCoworker:一个实际落地的桌面 Agent
README 里单独列了 OpenCoworker,它是一个基于 aisuite 构建的桌面应用,可以:
- 聊天、做深度研究、在你的电脑上执行任务(读文件、读取/发送 Slack/邮件等)。
- 生成 PDF 报告、文档、电子表格。
- 支持定时自动化,比如每天早上给你新闻摘要。
- 需要你自己带 API Key(OpenAI/Anthropic/Google 或者本地的 Ollama)。
- 数据都在你本地,不会上传。
目前提供了 macOS(Apple Silicon)和 Windows(x64)的下载链接,直接安装就能用。它不是 aisuite 库的一部分,而是这个仓库里附带的一个产品。我觉得这挺有意思——Andrew Ng 团队不仅提供了统一调用的库,还用这个库造了一个实际可以用的桌面工具,说明 aisuite 对日常任务已经够用。
谁适合用
- 做模型评测和对比:写一个脚本,循环改 model 字符串,拉各家的结果做对比,不需要维护 N 个 SDK 版本。
- 快速原型验证:不确定最后用哪家模型,先用 aisuite 写业务逻辑,后面改一行配置就换供应商。
- 需要一点 Agent 能力但不想上重框架:max_turns + 自动工具执行,对几步内的多步任务够用。
谁不适合用
- 重度依赖某家独有功能(比如 OpenAI 的 Structured Output、Assistants API 的向量存储、多模态图片理解)。aisuite 只覆盖了各家共有的 chat completion,独有特性你还是得回到原生 SDK。
- 毫秒级实时推理,多一层抽象会多几个毫秒的开销,但大部分 LLM 应用延迟本来就是秒级,这个开销可以忽略。
我的看法
Andrew Ng 团队这个项目设计得很克制。不搞大而全,只是把最麻烦的“切换厂商”这件事做好。13784 个 star 说明开发者普遍被这个问题困扰。它不是革命性的——没有新算法、新架构,但就是把你每天都要重复写的胶水代码省掉了。
我觉得它值得一试,尤其是在你有多个 Provider 账号、或者准备做模型迁移评估的时候。装一个 pip install aisuite 的代价,远小于事后重写所有调用代码的代价。而且 OpenCoworker 可以直接拿来试用,看看这个思路做出来的桌面 Agent 到底好不好用。