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 的质量心里有数。