aisuite:用一个 API 调用 10+ 大模型厂商的 Agent 开发框架
总结
aisuite 是一个轻量级 Python 库,通过统一 Chat Completions API + Agents API,让开发者用一套代码无缝切换 10+ 家大模型提供商(OpenAI、Anthropic、Google、Ollama 等)。一行改模型名就能换底座,同时自带工具调用、多 Agent 编排和状态持久化能力。今天(2026-07-26)刚登上 GitHub Trending,是当前最热的多模型 Agent 开发框架之一。
功能与原则
aisuite 提供两层抽象:
- Chat Completions API:统一 OpenAI 风格的接口访问所有 LLM 提供商,换 provider 只需改一个字符串(如
"anthropic:claude-3-5-sonnet")。 - Agents API:在统一接口之上叠加工具调用(Python 函数自动转 tool schema)、多轮对话循环、内置工具包(files / git / shell)和 MCP 服务器支持。
设计原则:轻量、厂商无关、生产可用——不做臃肿封装,用薄抽象层保持各 provider 原生能力。
认可度
- GitHub Trending 今日热门(2026-07-26),说明当下开发者关注度极高
- 衍生项目 OpenWorker(桌面 AI 同事)已独立发布 macOS/Windows 应用
- npm 包
@alibaba-group/open-code-review也在用 aisuite,说明其在生产环境已有落地
链接
GitHub:https://github.com/andrewyng/aisuite
原作者
andrewyng(Andrew Ng 团队成员?),专注于 LLM 应用层基础设施开发。
介绍
aisuite 最早想做的是”多提供商聚合”——让开发者不用学各家 SDK,一个接口调通所有模型。在此基础上,它的 Agents API 将工具调用变成一行装饰器,把 Python 函数直接注册为 tool,模型返回 tool_calls 后自动执行、结果回填,全程无需手动写 JSON schema 或循环逻辑。
它还自带文件、Git、Shell 三个工具包,开箱即用。如果想接更多能力,可以接任何 MCP server,aisuite 会自动识别并挂载。
此外,基于 aisuite 构建的 OpenWorker 是一个真正的桌面 AI 助手——能读文件、发邮件、连 Slack、生成 PDF/Word/Excel,支持定时任务,数据全留本地。相当于用 aisuite 做底座,快速搭出了一个生产力 Agent。
特点
- 一行切换模型:
client.chat.completions.create(model="openai:gpt-4o", ...)→ 换成"anthropic:claude-3-5-sonnet"即可 - 工具调用极简:装饰器
@tool注册 Python 函数,aisuite 自动生成 schema、自动执行、自动回填结果 - 多 Agent 编排:Agent 类 + Runner.run(),支持工具包(files / git / shell)即插即用
- MCP 原生支持:任何 MCP server 可直接接入,无需额外适配
- 状态持久化:内置 in-memory / file / Postgres 三种 state store,支持跨进程继续对话
- 全流式输出:stream=True 返回标准 OpenAI 格式 chunk,streaming tool calls 也支持
使用方法
安装
pip install aisuite # 基础包
pip install 'aisuite[anthropic]' # 加指定 provider
pip install 'aisuite[all]' # 装所有 provider SDK
快速调用
import aisuite as ai
client = ai.Client()
models = ["openai:gpt-4o", "anthropic:claude-3-5-sonnet"]
messages = [{"role": "user", "content": "用一句话解释量子纠缠"}]
for model in models:
response = client.chat.completions.create(model=model, messages=messages)
print(response.choices[0].message.content)
带工具调用的 Agent
import aisuite as ai
from aisuite import Agent, Runner
def will_it_rain(location: str) -> str:
"""查询某地是否下雨"""
return "YES"
agent = Agent(
name="weather-agent",
model="anthropic:claude-sonnet-4",
tools=[will_it_rain],
)
result = Runner.run(agent, "北京明天下午3点下雨吗?")
print(result.final_output)
使用场景与人群
- 多模型切换:测试不同 provider 效果、对比模型能力、做 red team
- Agent 应用开发:快速搭生产级 Agent,集成 tools + MCP + 状态管理
- 桌面 AI 助手:OpenWorker 方向,本地运行,数据不上云
- 目标用户:LLM 应用开发者、AI 研究者、想让 AI 操作本地文件的用户
输入与输出案例
案例 1:跨模型对话
Input:{"model": "openai:gpt-4o", "messages": [{"role": "user", "content": "量子纠缠一句话"}]}
Output:两个粒子无论相距多远,对其中一个的测量会瞬间影响另一个的状态。
Input:{"model": "anthropic:claude-3-5-sonnet", "messages": [{"role": "user", "content": "量子纠缠一句话"}]}
Output:量子纠缠是一种现象:两个粒子处于"纠缠态"后,对其中一个的测量结果会立即"决定"另一个粒子的状态,无论它们相距多远。
案例 2:工具调用
Input:Agent.run("帮我查上海今天会不会下雨?")
Output:[调用 will_it_rain(location="上海") → "YES"] → "上海今天会下雨,建议带伞出门。"
评论区
登录后可评论。












