aisuite
统一接口层:通过 pip install aisuite 即可同时调用 OpenAI、Anthrop
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一接口层:通过 pip install aisuite 即可同时调用 OpenAI、Anthrop
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2024 年上半年,如果你是一个 AI 应用开发者,很可能经历过这样的痛苦:项目需要同时对接 OpenAI GPT-4 做文本生成、Anthropic Claude 做推理分析、Google Gemini 做多模态理解——每换一家就要改一套 API 调用代码、重写错误处理逻辑、重新配置认证方式。三个 SDK 并存,三套文档来回翻,写出来的代码像「拼装玩具」,后期维护苦不堪言。
aisuite 正是为了解决这个问题而诞生的。
aisuite 由 DeepLearning.AI 联合创始人 Andrew Ng(吴恩达) 和 Rohit P 共同开发维护,GitHub 获得了超过 13,000 颗星,成为 AI 开发工具领域最受关注的项目之一。项目采用 Poetry 作为包管理工具,代码遵循 Black 代码风格规范,README 文档清晰详细,示例丰富(提供了 15+ 个 Jupyter Notebook 示例),整体质量在开源 Python 库中属于上乘。
作为吴恩达主推的教学/实践工具链的一部分,aisuite 的定位非常明确:不追求做一个「全能 Agent 框架」,而是专注做好一层——统一接口。这一定位让它足够轻量,也足够稳定。
想象你有一台 MacBook Pro,只有两个 USB-C 接口,但你有键盘、鼠标、显示器、移动硬盘、SD 卡读卡器……这时一个 USB-C 拓展坞 可以把所有设备「翻译」成你能理解的统一语言。
aisuite 对于 LLM 开发者来说,就是这样一个「拓展坞」:
client.chat.completions.create(model="openai:gpt-4o", messages=[...])openai:gpt-4o 改成 anthropic:claude-3-5-sonnet-20240620 即可,其余代码一字不动aisuite 目前原生支持 20+ 家主流 LLM 提供商,覆盖:
| 类别 | 提供商 |
|---|---|
| 通用大模型 | OpenAI (GPT-4o/o1/o3)、Anthropic (Claude 3.5/3.7)、Google (Gemini)、Cohere (Command R+)、Mistral |
| 开源/本地 | Ollama(本地模型)、Hugging Face(Inference API)、LM Studio |
| 云平台 | AWS Bedrock、Google Vertex AI、Azure OpenAI、IBM WatsonX、Nebius |
| 专用芯片 | Cerebras、SambaNova |
| 其他 | DeepSeek、Together AI、xAI (Grok)、Groq、Inception |
每新增一个提供商,只需在 aisuite/providers/ 目录下添加一个 xxx_provider.py 文件,遵循统一的 Provider 抽象基类规范,扩展门槛极低。
代码采用经典的 Factory Pattern 实现插件化架构:
# aisuite/provider.py — 抽象基类定义
class Provider(ABC):
@abstractmethod
def chat_completions_create(self, model, messages):
pass
# aisuite/client.py — 工厂动态加载
class ProviderFactory:
@classmethod
def create_provider(cls, provider_key, config):
provider_module_name = f"{provider_key}_provider"
module = importlib.import_module(f"aisuite.providers.{provider_module_name}")
provider_class = getattr(module, f"{provider_key.capitalize()}Provider")
return provider_class(**config)
这种设计让新增 Provider 完全不影响现有代码,也为社区贡献提供了标准路径。
aisuite 提供了两种工具调用模式:
max_turns 未指定):返回 LLM 的 tool call 请求,开发者自行执行工具并回传结果,适合需要细粒度控制的场景max_turns):传入 Python 函数而非 JSON Schema,aisuite 自动处理 schema 生成、函数执行和结果回传,适合快速构建简单 Agentaisuite 支持连接 MCP 服务器(通过 mcp 额外依赖),实现与 MCP 工具的无缝集成。通过 config dict 或 HTTP MCP 服务器连接方式接入,示例中包含了完整的 MCP 配置字典示例。
除了文本 LLM,aisuite 还集成了 Deepgram 语音转文字 SDK,支持直接通过客户端进行语音识别:client.audio.transcriptions.create(model="...", file=...)。这是一个相对小众但实用的功能,适合构建语音驱动的 AI 应用。
aisuite 是一个 Python 客户端库,没有 Web 界面,所有交互通过 Python 代码完成。它的目标用户是:
不适用于:
安装极为简单:pip install 'aisuite[anthropic]' 即可带上指定 Provider 的依赖包。
「薄封装」争议:aisuite 本质上是各家 SDK 的包装器,而非底层重写。这意味着它继承了所有底层 SDK 的优点和局限,且增加了一层间接调用——对性能敏感的极低延迟场景可能不适合。
非 Agent 框架:aisuite 明确表示自己不是 Agent 框架,复杂的 Tool Use 循环、多步骤规划、长程记忆等能力需要配合 LangChain、AutoGen 等框架使用。
Provider 支持广度:虽然列出了 20+ Provider,但部分 Provider(如 Inception、Nebius)社区使用量较低,实际对接质量(错误处理、边缘 case)可能不如 OpenAI/Anthropic 官方 SDK 完善。
API Key 安全:作为客户端库,所有 Provider 的 API Key 都存储在调用方环境中,生产部署时需要配合密钥管理服务(如 AWS Secrets Manager)使用。
aisuite 的出现反映了 LLM 应用开发领域的一个重要趋势:从「选一个 LLM」到「随时切换 LLM」。随着 GPT-4o、Claude 3.5、Gemini 2.0 等模型能力趋于同质化,价格和特定场景下的表现差异成为开发者选择的主要考量。aisuite 这样的统一接口层让「随时切换」成为可能,也推动了 LLM 应用架构向 Provider 无关(Provider-agnostic)方向发展。
吴恩达的背书也让这个项目获得了远超同类项目的关注度,客观上起到了教育市场、推动行业标准化的作用。
import aisuite as ai
client = ai.Client()
# 配置 Provider API Key(环境变量方式)
import os
os.environ["OPENAI_API_KEY"] = "sk-..."
os.environ["ANTHROPIC_API_KEY"] = "sk-ant-..."
# 一个接口,对比多家模型
models = ["openai:gpt-4o", "anthropic:claude-3-5-sonnet-20240620"]
messages = [{"role": "user", "content": "解释量子纠缠"}]
for model in models:
response = client.chat.completions.create(model=model, messages=messages)
print(f"{model}: {response.choices[0].message.content[:100]}")