aisuite实战指南:Andrew Ng出品,5分钟用一套代码调用所有大模型API

· 小白基础技术分享

你受够了每个AI模型都要配一套不同的SDK吗?OpenAI用openai库,Anthropic用anthropic库,Google用google-generativeai……Andrew Ng团队的aisuite用一个接口解决了这个问题

aisuite是由Andrew Ng(吴恩达)团队开发的Python库,目前在GitHub上拥有超过15000颗星。它的核心设计理念很简单:一套代码,调用所有大模型。支持OpenAI、Anthropic、Google Gemini、Mistral、DeepSeek等主流厂商,切换模型只需要改一行字符串。

aisuite实战指南:Andrew Ng出品,5分钟用一套代码调用所有大模型API封面

为什么需要aisuite?

在实际开发中,我们经常需要在不同模型之间切换——测试不同模型的输出质量、根据成本和延迟选择最优方案、做模型输出的A/B对比。如果每个模型都要写一套不同的API调用代码,维护成本会迅速失控。

aisuite解决了这个痛点:所有模型共享同一套`chat.completions.create()`接口,底层自动处理各个厂商的API差异。

快速上手:4步跑通

### 第1步:安装

pip install aisuite

### 第2步:配置API密钥

# 在终端中设置环境变量
export OPENAI_API_KEY="your-openai-key"
export ANTHROPIC_API_KEY="your-anthropic-key"
export GOOGLE_API_KEY="your-google-key"

或者在Python代码中创建一个`.env`文件,然后加载:

from dotenv import load_dotenv
load_dotenv()

### 第3步:基础调用——用同一段代码调用不同模型

import aisuite as ai

# 创建客户端
client = ai.Client()

# 定义消息
messages = [
    {"role": "system", "content": "你是一个有帮助的AI助手。"},
    {"role": "user", "content": "用一句话解释什么是Transformer架构。"}
]

# 调用OpenAI
response = client.chat.completions.create(
    model="openai:gpt-4o",
    messages=messages
)
print(f"OpenAI: {response.choices[0].message.content}")

# 切换模型只需要改model参数
response = client.chat.completions.create(
    model="anthropic:claude-sonnet-4-20250514",
    messages=messages
)
print(f"Claude: {response.choices[0].message.content}")

# 再切到DeepSeek
response = client.chat.completions.create(
    model="deepseek:deepseek-chat",
    messages=messages
)
print(f"DeepSeek: {response.choices[0].message.content}")

### 第4步:批量对比多个模型

import time

models = [
    "openai:gpt-4o",
    "anthropic:claude-sonnet-4-20250514",
    "deepseek:deepseek-chat",
    "google:gemini-2.5-flash",
]

prompt = "用Python写一个斐波那契数列生成器,要求包含缓存优化。"

for model_name in models:
    start = time.time()
    response = client.chat.completions.create(
        model=model_name,
        messages=[{"role": "user", "content": prompt}],
        temperature=0.3
    )
    elapsed = time.time() - start
    content = response.choices[0].message.content
    print(f"\n{'='*50}")
    print(f"模型: {model_name}")
    print(f"耗时: {elapsed:.2f}s")
    print(f"字数: {len(content)}")
    print(f"回答: {content[:200]}...")

进阶技巧:用aisuite构建模型路由

真正的生产级应用往往需要一个”模型路由”——根据任务类型和成本预算,自动选择最合适的模型:

def smart_route(prompt: str, budget: str = "cheap"):
    """根据预算自动选择模型"""
    routes = {
        "cheap": "deepseek:deepseek-chat",
        "balanced": "anthropic:claude-sonnet-4-20250514",
        "best": "openai:gpt-4o",
    }
    model = routes.get(budget, routes["balanced"])
    
    client = ai.Client()
    return client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}]
    )

# 预算低的场景用 DeepSeek
result = smart_route("写一封礼貌的拒绝offer邮件", budget="cheap")
print(result.choices[0].message.content)

常见问题与处理

Q: 某些模型调用报错?

A: 检查API Key是否正确设置,以及模型名称是否在aisuite的支持列表中。运行`client.list_models()`可以看到当前可用的所有模型。

Q: 响应时间太长?

A: 可以在create调用中添加`timeout`参数,或使用异步版本:

response = await client.chat.completions.create(
    model="openai:gpt-4o",
    messages=messages,
    timeout=30  # 30秒超时
)

Q: 如何添加自定义模型提供商?

A: aisuite支持通过实现`BaseProvider`接口来添加新提供商。具体文档见项目GitHub仓库中的`CONTRIBUTING.md`。


aisuite不只是一个工具库,它代表了一种”模型无关”的编程理念——你的代码不应该被某个特定的AI供应商绑定。这在2026年这个”每周都有新模型发布”的时代,比任何时候都更重要。

生产环境最佳实践

在实际项目中使用aisuite时,有几个坑值得注意:

### 1. 错误处理不要偷懒

import aisuite as ai

client = ai.Client()

def safe_chat(model: str, messages: list, retries: int = 3):
    """带重试和降级的安全调用"""
    for attempt in range(retries):
        try:
            response = client.chat.completions.create(
                model=model,
                messages=messages,
                timeout=45
            )
            return response.choices[0].message.content
        except Exception as e:
            if attempt == retries - 1:
                # 最后一次尝试切换到备用模型
                fallback = "deepseek:deepseek-chat"
                print(f"模型 {model} 调用失败,降级到 {fallback}")
                return safe_chat(fallback, messages, retries=1)
            print(f"重试 {attempt+1}/{retries}... ({e})")
            time.sleep(2 ** attempt)

result = safe_chat("openai:gpt-4o", messages)

### 2. 成本意识:先路由再调用

不要所有请求都走最贵的模型:

def cost_aware_route(prompt: str):
    """根据请求复杂度自动选模型"""
    prompt_len = len(prompt)
    # 简单翻译、摘要类请求用便宜模型
    if prompt_len < 200:
        return "deepseek:deepseek-chat"
    # 中等复杂度用平衡模型
    elif prompt_len < 1000:
        return "anthropic:claude-sonnet-4-20250514"
    # 复杂推理用最强模型
    else:
        return "openai:gpt-4o"

### 3. 并发调用提升效率

当需要同时调用多个模型做对比时,用异步版本:

import asyncio
import aisuite as ai

async def compare_models(prompt: str):
    client = ai.AsyncClient()
    models = ["openai:gpt-4o", "anthropic:claude-sonnet-4-20250514", "deepseek:deepseek-chat"]
    
    tasks = [
        client.chat.completions.create(
            model=m, 
            messages=[{"role": "user", "content": prompt}]
        ) 
        for m in models
    ]
    results = await asyncio.gather(*tasks, return_exceptions=True)
    for model, r in zip(models, results):
        if isinstance(r, Exception):
            print(f"{model}: 错误 - {r}")
        else:
            print(f"{model}: {r.choices[0].message.content[:100]}...")

asyncio.run(compare_models("用Python写一个快速排序"))

🔥 关注LC智趣厅,每周为你带来真正能上手的AI开发实战。

👇 你现在同时用几个AI模型的API?评论区说说你的技术栈。


— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn

Scroll to Top
微信公众号:LC智趣厅

扫码关注微信公众号
LC智趣厅