
研究主题页 · TSO
TSO 工具选择优化工具准备好了,
AI 为何没选你?
TSO(Tool Selection Optimization,工具选择优化)是 LS-Labs 用来检查 AI 智能体如何找到、选用并调用工具的操作框架,涵盖工具接入、候选曝光、模型选择与执行。
本页整理工具检索流程、MCP 接入与工具定义的写法,将候选曝光、模型选择和执行结果分开观察。
01
TSO 阅读指南
从工具选择流程开始,延伸到接入协议、搜索界面与应用案例。
- 营销成长
AI 为什么选择这个工具?从信息检索理解 TSO
拆开候选检索、模型选择与执行,对照工具定义的写法。
- 名词解释
MCP 是什么?
了解工具如何接入 AI 应用,以及名称、描述与参数的角色。
- 名词解释
搜索 API 是什么?
理解程序如何取得搜索结果,以及它在智能体工具中的用途。
- 新闻快讯
Exa 3.0 抢攻 AI 智能体的搜索需求
从 Exa Lite 与 MCP 集成,看搜索服务如何成为智能体的工具。
延伸阅读:用 TCC 检查工具定义;AI 智能体的工具选择机制。
02
TSO 的四个环节
TSO 把智能体选工具的过程拆成四段:工具接入、候选曝光、模型选择、调用与执行。工具没被用上时,可能根本没进候选清单,也可能进了清单却输给别人;四段拆开,才分得清问题在曝光、选择还是执行。
- 01
工具接入 Integration
它有没有接进智能体能用的系统?
以 MCP 为例,工具定义包含名称、描述与输入参数。模型看的是这些元数据,不是你的程序写得多好。
- 02
候选曝光 Exposure
它有没有被载入,让模型看到?
采用工具搜索的系统,会先检索候选,再载入部分工具定义。以 Anthropic 的工具搜索为例,标记为延后载入的工具要等 Claude 搜索到才会出现。没被载入的工具,后面的选择根本轮不到它。
- 03
模型选择 Selection
候选工具里,模型为什么选它?
模型在已载入的工具中挑一个。用户需求与工具描述的语义有多接近,会直接影响选择。BiasBusters 研究就发现,小幅改动工具描述也可能明显改变结果。
- 04
调用与执行 Execution
被选中之后,真的做完了吗?
模型决定工具与参数后,由客户端以 MCP 的
tools/call等方式送出调用。接着要检查参数、返回结果与执行错误,不能把“有调用”当成“已完成”。
假设餐厅的预订 API 已接进某个智能体,用户说要预订,它却没被调用。若它不在搜索返回的候选工具里,问题出在候选曝光;若在清单上却输给另一个预订工具,要看模型选择;若被选中但日期参数填错,就是调用与执行出了状况。
“被找到”和“被选中”要分开处理。Microsoft Foundry 可以替每个工具设定只给搜索用的文字;这段文字会被索引,模型读不到。模型挑工具时看的,仍是名称、描述与参数。
03
预订需求下的三种工具状态
同一个预订需求下,预订工具可能没被载入、能力与任务对不上,也可能符合任务。切换下面三个状态,看每个状态该怎么检查。
用户问“今晚 19:00,帮两位找一家餐厅并预订。”
已接入的预订工具没有进入候选清单
怎么检查先看这次载入了哪些工具。预订工具没进候选,后面的选择与调用都不用谈。
搜索餐厅的工具没有预订能力
能力缺口:查空位、建立预订
怎么检查预订要查空位、建立记录。工具描述只写搜索名称与地址,模型就不知道它能预订。
工具能力与预订参数相符
- 日期 今晚
- 时间 19:00
- 人数 两位
怎么检查查空位、建立预订,加上日期、时间与人数,模型才能把用户需求转成一次工具调用。
工具定义该怎么写?看三张图 ↓
04
智能体怎么筛选工具
采用工具搜索的系统,会先检索候选工具,再交给模型选择与调用。下图用 12 → 3 → 1 的教学设定说明筛选过程;实际候选数与流程依系统而异。
已接入的工具只有一部分进入模型视野
“帮我订周六晚上七点,四个人的堂食座位。”
12个工具已接入的工具库
- 餐厅搜索
- 地图
- 评论
- 查询空位
- 支付
- 建立预订
- 日历
- 天气
- 查询预订状态
- 外送
- 邮件
- 翻译
3个进入模型视野载入工具定义
- 查询空位
- 建立预订
- 查询预订状态
1个被选中送出工具调用
- ✓查询空位
周六・19:00・4 人
检索出哪些候选工具
工具名称、描述与参数信息,让检索器找到与需求相关的候选。
挑出能完成任务的工具
模型读取候选的完整定义,比较查空位、建立预订与必要参数。
没订到位的三个可能断点
“帮四个人订周六晚上七点的堂食座位。”
-
01
检索断点
工具有进入候选吗?
service_v2“提供餐饮数字转型服务”只看这段名称与描述,找不到“餐厅堂食预订”的具体能力。
检查工具索引补上餐厅、空位与建立预订等任务用语。
-
02
选择断点
候选之间分得清楚吗?
外送点餐/堂食预订两个工具都写“火锅预订”,使用方式却完全不同。
检查能力描述写明现场座位、外送或自取,让选择有依据。
-
03
调用断点
参数符合工具要求吗?
"晚上七点"→"19:00"工具选对了,时间字段仍需要符合服务器接受的格式。
检查参数与返回标明时间格式、必填字段,并核对调用结果。
对照 MCP 的工具定义、调用与返回结构,逐段找到失败的位置。
工具名称、描述与参数的写法对照
名称说动作,描述说能力,参数说格式。
信息太模糊
- name
restaurant_helper_api- description
- 全方位餐饮体验,轻松搞定用餐大小事。
- 参数
date、num
日期是哪一天?人数包含谁?会查空位,还是会直接建立预订?
动作与输入都明确
- name
search_restaurant_tables- description
- 查询指定日期、时段与人数的空位,返回可订时段、座位区与预订条件。建立预订使用
create_table_reservation。 - 参数
restaurant、date、time、party_size、area
查空位与建立预订各有明确入口,模型可以按任务选择。
展开完整的输入参数结构
{
"type": "object",
"properties": {
"restaurant": { "type": "string", "description": "餐厅名称或分店" },
"date": {
"type": "string", "format": "date",
"description": "用餐日期,YYYY-MM-DD"
},
"time": {
"type": "string",
"description": "用餐时段,24 小时制 HH:MM"
},
"party_size": {
"type": "integer", "minimum": 1,
"description": "用餐人数,含儿童"
},
"area": {
"type": "string",
"description": "偏好座位区,例如堂食或户外"
}
},
"required": ["restaurant", "date", "time", "party_size"],
"additionalProperties": false
}参考:MCP Tools 规格。
05
常见问题
TSO 是谁提出的?
TSO 是 LS-Labs 提出的操作框架,用来拆解 AI 智能体为什么选用或没选用某个工具。它把问题分成四段,避免把所有失败都归因给模型。
TSO 和 GEO 差在哪?
GEO 看 AI 回答里提到谁、引用谁;TSO 看智能体动手执行任务时,调用了谁的工具、API 或 MCP 服务器。
产品还没有 API 或 MCP 服务器,需要关心 TSO 吗?
要。还没有 API 时,第一段“工具接入”就是起点。网站本身能不能让智能体读懂、操作,则属于 AX 的范围。先从一个最常发生的任务开始,不必一次把整套系统做完。
做了 MCP 服务器,智能体就会用我的工具吗?
不一定。接上 MCP 只完成第一段“工具接入”;工具还要被载入候选清单,模型看得到它,并觉得它适合眼前的任务,才会选用。以 Anthropic 的工具搜索为例,标记为延后载入的工具要等 Claude 搜索到才会出现。
工具的名称、描述与参数该怎么写?
名称说动作,描述说能力,参数说格式。例如把“查空位”与“建立预订”拆成两个工具,各自写清楚能做什么,并标明时间格式与必填字段。可对照 MCP 的 Tools 规格。
候选曝光是什么?
在采用工具搜索的系统里,工具被检索并载入模型视野的过程,就是候选曝光。没被载入的工具,后面的选择轮不到它。
工具被选中了,就代表任务完成了吗?
不是。被选中之后,还要检查调用的参数、返回结果与执行错误,不能把“有调用”当成“已完成”。
品牌常出现在 AI 回答里,智能体就会选用它的工具吗?
智能体还会依任务挑选当下可用的工具。GEO 看 AI 回答中的提及与引用,TSO 接着看工具是否被载入、是否适合任务,以及模型最后选了谁。
06
四个研究主题的关系
GEO 看自然回答里的提及与引用,TSO 看智能体选用哪个工具,AX 看任务能不能完成,AI 广告看回答下方的付费版位如何匹配与转化。四者处理相邻的问题,可依内容交叉阅读。


