大模型与智能体协同 / 模型选型与 Agent 适配
CHAPTER 08 · TOPIC 01

模型选型与 Agent 适配

不同的大模型在 Agent 场景中表现差异巨大——工具调用准确率、推理能力、上下文长度、响应速度都直接影响 Agent 的可靠性。本章从 Agent 视角分析如何选择和适配大模型。

一句话理解

不同的大模型在 Agent 场景中表现差异巨大——工具调用准确率、推理能力、上下文长度、响应速度都直接影响 Agent 的可靠性。本章从 Agent 视角分析如何选择和适配大模型。

阅读前置

建议完成第 04、05 章

本文关注

Agent 对模型的核心要求、主流模型 Agent 能力对比、模型路由策略

所在知识层

系统协同 · 大模型与智能体协同

文章导航
主教学视觉模型选型与 Agent 适配 · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

不同的大模型在 Agent 场景中表现差异巨大——工具调用准确率、推理能力、上下文长度、响应速度都直接影响 Agent 的可靠性。本章从 Agent 视角分析如何选择和适配大模型。


1. Agent 对模型的核心要求

1.1 关键能力评估

TEXT
Agent 场景对模型的要求(按重要性排序):

1. 工具调用准确率(最重要)
   - 能否正确选择工具
   - 能否生成正确的参数
   - 能否处理工具返回结果

2. 指令遵循能力
   - 能否严格按照系统提示行动
   - 能否输出指定格式(JSON、XML)
   - 能否在需要时停止而非继续

3. 推理与规划能力
   - 能否分解复杂任务
   - 能否处理多步骤推理
   - 能否根据中间结果调整策略

4. 上下文管理
   - 能否有效利用长上下文
   - 在大量信息中找到关键内容
   - 不遗漏重要细节

5. 速度与成本
   - 响应延迟(Agent 多轮调用,延迟累积)
   - Token 价格(Agent 消耗远多于普通对话)

1.2 Agent 专用评测

评测基准测试能力说明
BFCL工具调用准确率Berkeley Function Calling Leaderboard
SWE-bench代码 Agent解决真实 GitHub Issue
WebArena网页操作在真实网站上完成任务
GAIA通用 Agent需要多步推理和工具使用
AgentBench综合 Agent8 个不同环境的 Agent 任务
ToolBench工具使用16000+ 真实 API

2. 主流模型 Agent 能力对比

2.1 闭源模型

模型工具调用推理能力上下文速度成本
GPT-4o优秀128K
Claude 3.5 Sonnet优秀200K
Claude 3.5 Haiku良好200K极快
Gemini 2.0 Flash良好1M极快
GPT-4o-mini良好128K极快极低

2.2 开源模型

模型工具调用推理能力上下文部署难度
Qwen2.5-72B优秀128K
LLaMA 3.3-70B良好128K
Mistral Large良好128K
DeepSeek-V3良好128K
Qwen2.5-7B一般32K

2.3 Agent 场景推荐

TEXT
高复杂度任务(需要多步推理和精确工具调用):
  首选: Claude 3.5 Sonnet / GPT-4o
  原因: 推理能力强,工具调用准确

高吞吐量任务(大量简单 Agent 任务):
  首选: Claude 3.5 Haiku / GPT-4o-mini / Gemini Flash
  原因: 速度快,成本低

代码 Agent:
  首选: Claude 3.5 Sonnet / DeepSeek-V3
  原因: 代码能力强,SWE-bench 表现优异

本地部署(数据安全要求高):
  首选: Qwen2.5-72B / LLaMA 3.3-70B
  原因: 工具调用支持好,可本地推理

预算敏感场景:
  首选: GPT-4o-mini + GPT-4o(路由)
  策略: 简单任务用 mini,复杂任务升级到 4o

3. 模型路由策略

3.1 智能路由

语义 SVG 重绘模型选型与 Agent 适配 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

def route(self, tas…str:"""路由决策"""
查看原文结构
def route(self, task: str, context: dict) -> str:
        """路由决策"""
语义 SVG 重绘模型选型与 Agent 适配 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

规则 1: 代码相关任务代码模型if self.iscodetask(…return self.codemod…
查看原文结构
# 规则 1: 代码相关任务 → 代码模型
        if self.is_code_task(task):
            return self.code_model
语义 SVG 重绘模型选型与 Agent 适配 · 结构 3

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

规则 2: 简单查询快速模型if self.issimpleque…return self.fastmod…
查看原文结构
# 规则 2: 简单查询 → 快速模型
        if self.is_simple_query(task):
            return self.fast_model
语义 SVG 重绘模型选型与 Agent 适配 · 结构 4

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

规则 3: 复杂推理强大模型if self.requirescom…return self.smartmo…
查看原文结构
# 规则 3: 复杂推理 → 强大模型
        if self.requires_complex_reasoning(task):
            return self.smart_model
语义 SVG 重绘模型选型与 Agent 适配 · 结构 5

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

def issimplequery(s…bool:"""判断是否是简单查询"""simplepatterns = "查…return any(p in tas…
查看原文结构
def is_simple_query(self, task: str) -> bool:
        """判断是否是简单查询"""
        simple_patterns = ["查询", "获取", "列出", "显示"]
        return any(p in task for p in simple_patterns)

3.2 级联调用

语义 SVG 重绘模型选型与 Agent 适配 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

用户请求小模型尝试处理结果质量够好?直接返回(省钱)大模型重新处理(保证质量)
查看原文结构
用户请求 → 小模型尝试处理
              ↓
          结果质量够好?
           ├── 是 → 直接返回(省钱)
           └── 否 → 大模型重新处理(保证质量)
语义 SVG 重绘模型选型与 Agent 适配 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

实现:Step 1: GPT-4o-mini…Step 2: 评估回答质量(自信度评…Step 3: 自信度 < 阈值升级到 GPT-4oStep 4: 返回最终回答
查看原文结构
实现:
  Step 1: GPT-4o-mini 尝试回答
  Step 2: 评估回答质量(自信度评分)
  Step 3: 自信度 < 阈值 → 升级到 GPT-4o
  Step 4: 返回最终回答

4. 模型适配技巧

4.1 系统提示优化

PYTHON
# 针对不同模型的 Agent 系统提示优化

# Claude 系列(擅长 XML 标签结构化)
CLAUDE_SYSTEM = """
你是一个数据分析 Agent。

<instructions>
1. 首先理解用户的分析需求
2. 使用 query_data 工具获取数据
3. 分析数据并给出洞察
4. 如果数据不足,明确告知用户
</instructions>

<tool_usage>
- 每次只调用一个工具
- 仔细阅读工具返回结果再决定下一步
- 如果工具报错,尝试修正参数
</tool_usage>
"""

# GPT 系列(擅长 Markdown 结构化)
GPT_SYSTEM = """
你是一个数据分析 Agent。

## Instructions
1. 首先理解用户的分析需求
2. 使用 query_data 工具获取数据
3. 分析数据并给出洞察
4. 如果数据不足,明确告知用户

## Tool Usage
- 每次只调用一个工具
- 仔细阅读工具返回结果再决定下一步
- 如果工具报错,尝试修正参数
"""

# 小模型(需要更明确的指令)
SMALL_MODEL_SYSTEM = """
你是一个数据分析 Agent。你必须严格按照以下步骤行动:

步骤 1: 理解用户需求
步骤 2: 调用 query_data 工具获取数据
步骤 3: 分析数据
步骤 4: 给出回答

重要规则:
- 必须使用工具获取数据,不要编造数据
- 工具调用时必须提供所有必需参数
- 如果不确定,请询问用户
"""

4.2 工具描述优化

PYTHON
# 差:模糊的描述
bad_tool = {
    "name": "search",
    "description": "搜索信息"
}

# 好:详细的描述(包含何时使用、输入输出、限制)
good_tool = {
    "name": "search_web",
    "description": """搜索互联网获取最新信息。

何时使用:
- 需要获取实时数据或最新新闻
- 知识库中没有的信息
- 需要验证事实

何时不使用:
- 已有确定答案的常识问题
- 可以通过计算得到答案的问题

输入:query (字符串) - 搜索关键词
输出:搜索结果列表,每项包含标题、摘要和链接
限制:每次最多返回 5 条结果""",
    "parameters": {
        "query": {
            "type": "string",
            "description": "搜索关键词,应具体而非笼统"
        }
    }
}

5. 本地模型与 Agent

5.1 本地部署方案

PYTHON
# 使用 Ollama 部署本地模型
# ollama pull qwen2.5:72b

# 配置 Agent 使用本地模型
from langchain_ollama import ChatOllama

local_llm = ChatOllama(
    model="qwen2.5:72b",
    base_url="http://localhost:11434",
    temperature=0
)

# 本地模型的工具调用
# 注意:需要模型原生支持 Function Calling
# Qwen2.5 和 LLaMA 3.x 支持较好

5.2 本地 vs 云端

维度本地部署云端 API
数据安全数据不出本地数据传输到云端
延迟取决于硬件网络延迟 + 排队
成本硬件投入高按量付费
模型质量受限于开源模型可用最强模型
维护需要自行维护免运维
扩展性受硬件限制弹性扩展

6. 本章小结

维度要点
核心要求工具调用准确 > 指令遵循 > 推理 > 上下文 > 速度
闭源推荐Claude 3.5 Sonnet(综合最佳)/ GPT-4o
开源推荐Qwen2.5-72B / LLaMA 3.3-70B
路由策略简单任务→小模型,复杂任务→大模型
适配技巧针对模型特点优化系统提示和工具描述

相关章节


延伸阅读

  • Berkeley Function Calling Leaderboard: gorilla.cs.berkeley.edu/leaderboard
  • SWE-bench: swe-bench.github.io
  • GAIA Benchmark: gaia-benchmark.com