目录

15 - 模型切换:一套代码,多种模型

一句话总结:Agno 把模型抽象成了一个参数,换模型就是换一行代码的事 – 从 OpenAI 到 Claude 到本地 Ollama,业务逻辑一个字不用改。


为什么模型灵活性很重要

你肯定遇到过这样的纠结:

  • GPT-4o 效果好,但贵啊,简单问题用它太浪费
  • 本地跑模型免费,但能力有限,复杂任务搞不定
  • 老板说”试试 Claude”,结果发现代码全得重写
  • 生产环境和开发环境想用不同的模型

这些问题的根源都一样:模型和业务逻辑耦合太紧了

Agno 的做法很简单 – 模型就是 Agent 的一个参数。你定义好 Agent 的指令、工具、知识库,然后把模型像积木一样插进去就行。想换模型?换个参数,其他全部不变。

没有 vendor lock-in,没有适配层要写,就是换一行代码。


OpenAI:默认之选

整个教程系列我们一直在用 OpenAI,你已经很熟悉了:

from agno.agent import Agent
from agno.models.openai import OpenAIChat

# GPT-4o - 最强能力,适合复杂任务
agent_powerful = Agent(
    model=OpenAIChat(id="gpt-4o"),
    instructions="你是一个资深技术顾问",
)
agent_powerful.print_response("解释一下 Transformer 架构的核心原理")

# GPT-4o-mini - 更快更便宜,日常任务足够了
agent_fast = Agent(
    model=OpenAIChat(id="gpt-4o-mini"),
    instructions="你是一个快速问答助手",
)
agent_fast.print_response("Python 的 list 和 tuple 有什么区别?")

安装和配置你已经知道了:

pip install agno openai
export OPENAI_API_KEY="sk-你的密钥"

同一个 OpenAIChat 类,通过 id 参数切换不同的模型。GPT-4o 处理复杂推理,GPT-4o-mini 处理简单问答,代码结构完全一样。


Anthropic(Claude)

Claude 是 Anthropic 出品的模型,在长文本理解和指令遵循方面表现很好:

from agno.agent import Agent
from agno.models.anthropic import Claude

agent = Agent(
    model=Claude(id="claude-sonnet-4-5-20250929"),
    instructions="你是一个擅长分析长文本的助手",
)
agent.print_response("用中文总结:什么是 Agent 框架?")

需要额外安装和配置:

pip install anthropic
export ANTHROPIC_API_KEY="你的密钥"

注意看 – 除了 model= 那一行不同,其他东西(instructions、print_response、工具等)完全不变。这就是抽象层的价值。


Google Gemini

Google 的 Gemini 系列,特别是 Flash 版本,性价比非常高:

from agno.agent import Agent
from agno.models.google import Gemini

agent = Agent(
    model=Gemini(id="gemini-2.0-flash"),
    instructions="你是一个多语言助手",
)
agent.print_response("用中文介绍一下 Google 的 AI 发展历程")

安装和配置:

pip install google-genai
export GOOGLE_API_KEY="你的密钥"

Gemini Flash 速度快、价格低,很适合对延迟敏感的场景。


Ollama(本地模型 – 免费!)

这个是我个人最推荐的开发利器。Ollama 让你在本地跑开源模型,不花一分钱,也不用担心数据隐私:

from agno.agent import Agent
from agno.models.ollama import Ollama

agent = Agent(
    model=Ollama(id="llama3.2"),
    instructions="你是一个本地运行的助手",
)
agent.print_response("你好,你是谁?")

配置方式不一样 – 不需要 API Key,但需要本地跑一个 Ollama 服务:

# 1. 安装 Ollama(macOS)
brew install ollama

# 2. 启动服务
ollama serve

# 3. 拉取模型(第一次需要下载,之后就不用了)
ollama pull llama3.2

好处很明显:

  • 免费 – 没有 API 调用费用
  • 隐私 – 数据不出本机
  • 离线 – 断网也能用
  • 开发调试 – 不怕烧钱,随便调

缺点也得说:本地模型的能力跟云端大模型还是有差距的,特别是中文能力和复杂推理。但用来做开发调试、跑单元测试,绰绰有余。


DeepSeek

DeepSeek 是国产大模型,中文能力很强,价格也比较友好:

from agno.agent import Agent
from agno.models.deepseek import DeepSeek

agent = Agent(
    model=DeepSeek(id="deepseek-chat"),
    instructions="你是一个中文写作助手",
)
agent.print_response("写一首关于编程的现代诗")

配置:

export DEEPSEEK_API_KEY="你的密钥"

如果你的场景主要面向中文用户,DeepSeek 是个很好的选择。


策略:不同场景用不同模型

实际项目里,你不会只用一个模型。聪明的做法是按场景分配:

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.models.ollama import Ollama

# 简单任务 -- 用便宜快速的模型
simple_agent = Agent(
    model=OpenAIChat(id="gpt-4o-mini"),
    instructions="简单问答助手,回答要简洁",
)

# 复杂推理 -- 用最强的模型,开启推理链
complex_agent = Agent(
    model=OpenAIChat(id="gpt-4o"),
    reasoning=True,
    instructions="复杂推理专家,需要深入分析问题",
)

# 开发测试 -- 用免费的本地模型
dev_agent = Agent(
    model=Ollama(id="llama3.2"),
    instructions="开发测试用,随便聊",
)

# 根据场景选择
simple_agent.print_response("1+1 等于几?")
complex_agent.print_response("分析一下快速排序在最坏情况下的时间复杂度,以及如何优化")
dev_agent.print_response("你好")

这里有个关键参数 reasoning=True。开启后,Agno 会先用一个”推理 Agent”对问题进行链式思考,收集信息、验证结果,最后把结论交给原始 Agent 输出。适合数学、逻辑、多步推理这类任务。

你也可以通过环境变量来动态切换,这样部署的时候不用改代码:

import os
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.models.ollama import Ollama

def get_model():
    """根据环境变量决定用哪个模型"""
    env = os.getenv("APP_ENV", "dev")
    if env == "prod":
        return OpenAIChat(id="gpt-4o")
    elif env == "staging":
        return OpenAIChat(id="gpt-4o-mini")
    else:
        return Ollama(id="llama3.2")

agent = Agent(
    model=get_model(),
    instructions="你是一个通用助手",
)
agent.print_response("你好")

开发环境用 Ollama 省钱,测试环境用 mini 验证效果,生产环境上 GPT-4o 保质量。一套代码,三种模型。


在 Team 中混合使用模型

Team 模式下,你可以给不同角色分配不同的模型。Leader 用强模型做决策,Worker 用便宜模型干活:

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.team.team import Team

# 研究员 -- 用便宜模型搜索和整理信息
researcher = Agent(
    name="研究员",
    model=OpenAIChat(id="gpt-4o-mini"),
    instructions="你是一个研究员,负责搜集和整理信息",
)

# 分析师 -- 也用便宜模型做初步分析
analyst = Agent(
    name="分析师",
    model=OpenAIChat(id="gpt-4o-mini"),
    instructions="你是一个分析师,负责对信息进行分析",
)

# Team 的 leader 用强模型做最终决策
team = Team(
    name="研究团队",
    model=OpenAIChat(id="gpt-4o"),
    members=[researcher, analyst],
    instructions="你是团队负责人,协调研究员和分析师完成任务",
    markdown=True,
)
team.print_response("分析一下 Python 在 2025 年的发展趋势")

这个模式的好处是成本可控 – Leader 只做决策和分配任务,调用次数少,用贵模型没问题;Worker 要跑很多轮,用便宜模型省钱。


模型选择指南

不知道该用哪个模型?看这张表:

需求 推荐模型 理由
速度 + 成本 GPT-4o-mini, Gemini Flash 便宜、快,日常任务够用
最强能力 GPT-4o, Claude Sonnet 复杂推理、长文本理解最强
免费/本地 Ollama + llama3.2 零成本,数据不出本机
中文任务 DeepSeek, Qwen 中文训练数据多,理解更准
深度推理 GPT-4o + reasoning=True 链式思考,适合数学和逻辑题
开发调试 Ollama + llama3.2 免费随便调,不心疼
生产部署 GPT-4o / Claude Sonnet 稳定、可靠、效果好

一个实用的经验法则:开发用 Ollama,测试用 mini,生产用全量模型


完整示例:一套代码跑三个模型

把今天学的东西串起来,跑一个对比实验:

from agno.agent import Agent
from agno.models.openai import OpenAIChat

# 定义一个创建 Agent 的工厂函数
# 业务逻辑只写一次,模型随便换
def create_assistant(model):
    return Agent(
        model=model,
        instructions=[
            "你是一个中文编程助手",
            "回答要简洁实用",
            "给出代码示例时要加注释",
        ],
        markdown=True,
    )

# 同一个问题,不同模型回答
question = "Python 里怎么实现单例模式?"

models = [
    ("GPT-4o", OpenAIChat(id="gpt-4o")),
    ("GPT-4o-mini", OpenAIChat(id="gpt-4o-mini")),
]

for name, model in models:
    print(f"\n{'='*50}")
    print(f"模型: {name}")
    print(f"{'='*50}")
    agent = create_assistant(model)
    agent.print_response(question)

这个例子的重点不是输出结果,而是代码结构 – create_assistant 函数里完全没有模型相关的逻辑,模型是从外面传进来的。你想加 Claude、加 Gemini、加 Ollama,都是往 models 列表里加一行的事。


今天学了什么

回顾一下关键概念:

  • Agno 的模型抽象层让你一行代码切换模型,业务逻辑不用动
  • OpenAIChat 是最常用的,GPT-4o 和 GPT-4o-mini 覆盖大部分场景
  • Claude 擅长长文本和指令遵循,Gemini Flash 性价比高
  • Ollama 本地运行开源模型,免费、隐私、离线可用,开发调试首选
  • DeepSeek 中文能力突出,适合面向中文用户的场景
  • 实际项目中应该按场景分配模型 – 简单任务用便宜的,复杂任务用强的
  • Team 模式下可以混合使用不同模型,Leader 用强模型,Worker 用便宜模型
  • reasoning=True 开启链式推理,适合复杂逻辑任务
  • 通过环境变量动态切换模型,实现开发/测试/生产用不同模型

模型会越来越多,能力会越来越强,价格会越来越低。但只要你的代码和模型是解耦的,你就永远能用上最新最好的那个。


下一篇预告

16 - 评估与测试:怎么知道你的 Agent 好不好用

Agent 写完了,效果到底怎么样?光靠”感觉还行”可不够。下一篇我们聊聊怎么系统地评估和测试你的 Agent – 从简单的人工检查到自动化测试,让你对 Agent 的质量心里有数。