阿里云百炼联网搜索教程:web_search 工具开启方法、web_extractor 网页抓取与 json 检索轨迹

这篇解决什么问题

我问模型"今天上海天气怎么样",它九秒回我一句"我无法提供实时天气数据,因为我的知识库没有联网更新功能",然后给了三条让我自己去查的建议。

这个场景很多人遇到过。想解决,常见思路是搭一个 agent 框架接检索服务,或者开一台带浏览器的机器让它去点,或者自己写爬虫喂网页。三条路都要先配环境,而且多轮检索的编排逻辑会长在自己的代码里,长期要维护。

这篇讲另一条:阿里云百炼的模型自带联网工具,命令行里多写一个参数就能开。我把自己 10 月 27 号的完整操作和读数写下来,包括它搜了几次、抓了哪几页、吃了多少 token,全部可以在输出里核对。版本是 2.5.0。

环境准备

两样东西:命令行工具和 API Key。

装命令行的说明在CLI 安装页,一条命令装完。Key 在控制台密钥管理页领。

装完先跑一条不带联网工具的命令,确认基线:

bash 复制代码
bl text chat --message "今天上海天气怎么样" --timeout 120 --max-tokens 400

我这边 9.2 秒返回,内容就是那句拒答加三条建议。这一步的意义是留一个对照:后面所有差别都只来自联网工具那一个参数,不来自模型、问题或上限的变化。

第一步:开启联网搜索

同一条命令,加两个参数:--api responses 和 --tool '{"type":"web_search"}'。

bash 复制代码
bl text chat --api responses --tool '{"type":"web_search"}' --message "今天上海天气怎么样" --timeout 120 --max-tokens 400

官方文档对这件事的描述只有一句:通过 tools 参数添加 web_search 工具即可启用联网搜索。没有配置文件,没有要先启动的服务,也没有第四步。

我这边 24.5 秒返回。输出是一张当天的表:多云到阴、无明显降水,气温约 15 到 20 度(实况最高 23.4 度、最低 17.7 度),北风或西北风小于 3 级,湿度约 70 到 80 成,空气质量良(24 小时 AQI 最高约 58)。表头日期它自己写对了:2026 年 10 月 27 日,周二。

多花的这十五秒,买回来的是一个正确的日期和一份真的预报。对"AI 答不了今天的事"这个日常摩擦来说,这是我能找到的最便宜的解法。

第二步:加网页抓取

--tool 可以重复传。再加一个 --tool '{"type":"web_extractor"}',模型就能打开网页读正文。

我让它去读官方文档的联网搜索那一页,把参数说明念回来。74 秒返回,开头一句是它已经打开并阅读了那个页面,然后列出四种搜索策略的名字和默认值。这几个值我后来自己打开文档页逐字核对过,一致。

注意整个过程我没有给网址、没有给关键词、没有指定读几页。搜几次、读哪几页由模型自己决定。这一点和"自己接检索服务"的差别最大:那边是我写循环决定查几次,这边是模型自己决定,我只声明允许它用哪些工具。换句话说,编排逻辑从我的代码里消失了,取而代之的是一条权限声明。对要长期维护的系统来说,少一段自己写的循环就是少一类自己养的 bug。

这里还有一个容易忽略的细节:模型读回来的内容和我自己去文档页看到的一致,说明它不是凭印象复述。我做这类验证的习惯是,凡是要写进文章或写进验收标准的读数,都自己再核一遍源头,不拿模型的转述当一手材料。

第三步:用 json 看检索轨迹

想确认模型真的搜了,把输出换成 json,也就是在上面那条命令后面加 --output json。

返回的 json 里,output 是一个数组,我那次一共十条,按顺序是:思考、搜索调用、搜索调用、思考、网页抓取调用、网页抓取调用、思考、网页抓取调用、思考、最终回答。数一下就是四条思考、两次搜索、三次网页抓取、一条回答。

usage 里有一个工具计数字段,值是 web_search 两次、web_extractor 三次,和我逐条数出来的完全一致。

调用次数是可核对的,这一点比"感觉它搜了"有用得多,也意味着它可以进监控和断言。

思考摘要也能看到。第一条是"用户用中文问上海今天的天气,我没有实时天气数据,所以我应该去搜";后面一条是"不同来源给的 10 月 27 日上海数据略有出入,国家气象中心说的是某个值"。它在对账,不是在背。

常见问题

Q:为什么我的 json 里 status 是 incomplete?

A:输出上限给小了。我那次 --max-tokens 设 500,模型没写完。这不是失败,把上限放开即可。我第一次看到 incomplete 也以为链路坏了,后来才反应过来是篇幅问题。

Q:复杂问题等了很久没有结果?

A:两个上限都要给够。我问"上个月新上架了哪些模型",不带超时参数等了三百秒被壳层掐掉、零输出;带 300 秒超时重跑是 205 秒,但 800 的输出上限不够它写完,只拿到一堆"我继续查一下"的过程话,没有最终结论。多轮检索的问题,超时和输出上限缺一个就是半成品。

Q:联网会多消耗多少 token?

A:我那次输入 22789 个(其中 10752 个命中缓存),输出 1225 个(含思考 705 个),合计 24014。检索回来的网页正文全部进上下文,这是机制决定的,省不掉。容量规划要按带检索的峰值算。

Q:想自己控制查什么怎么办?

A:用 bl search web,只检索不总结。我这边 2.3 秒拿回带标题、摘要、链接的结果列表,第一条是社区博客,第四条就是官方文档页。条数用 --count 指定:要三条给三条,要八条给八条,不指定给五条。注意帮助文档写的默认值是十,实际不传是五;而且它是上限不是保证,冷僻问题要二十条可能只找得到三条。

Q:搜索策略能选吗?

A:官方文档分四档:turbo(默认)、max、agent、agent_max。后两档标注"启用该策略时,每次调用额外收费",数额以文档为准。命令行没有选策略的参数,我这些命令走的都是接口默认;观察到的多轮行为是工具自身行为,不等于显式开了某档。

Q:不联网的时候模型会编日期吗?

A:会,而且编得很自信。我在英文语境做过同形对照:不带工具问"今天西雅图天气、并报出你所指的日期",它先说没有实时数据,然后报的日期是 2026 年 6 月 16 日,而那天是 10 月 27 日。加上工具后日期自己就对了。所以"它不能联网"和"它知道自己不能联网"是两回事,后者才是要解决的。

边界说清楚

联网检索比不联网慢一个量级:我这几个读数在 17 秒到 127 秒之间,不联网的对照是 9 秒到 14 秒。问题越复杂越慢。

模型不保证每次都给最终答案。上面那条 205 秒的例子就是只拿到过程。写进生产流程的话,要给足上限、做好超时处理,并且别把"返回了内容"当成"返回了结论"------这两件事在日志里长得一模一样,只有读了输出结构才知道差别。

还有一条我自己的使用纪律:凡是准备写进文档或验收标准的读数,我都自己再核一遍源头。模型读回来的参数表我开文档页对过,工具计数我逐条数过。不是不信任它,是这类数字一旦进了别人的流程,错了就是我的责任。

想先在网页上看看,可以去阿里云百炼控制台。整条路我云上一个资源都没建,既有配置一个没动。

相关推荐
瓦瓦gogo1 小时前
实习中接触前端开发后,我开始了解 React
前端·react.js·前端框架
梦曦i1 小时前
uni-app x 新组件库v0.1.0发布,多端统一开发
前端·ui·uni-app x
Dovis(誓平步青云)1 小时前
切换语言后按钮被截断,本地化审计怎样发现长度风险
开发语言·前端·javascript·人工智能·机器学习·华为·harmonyos
CappuccinoRose1 小时前
拖拽交互体系
前端·javascript·css·html·交互·1024程序员节
开开心心就好1 小时前
免安装PDF盖章工具,透明度和位置可调
运维·服务器·前端·javascript·pdf·ocr·1024程序员节
风骏时光牛马1 小时前
AI服务线上推理异常故障
前端
king王一帅1 小时前
做了三年 ProseMirror 后,我用四个月自研排版引擎实现 WPS / Google Docs 替代品,整套框架 MIT 开源
前端·vue.js·开源
এ慕ོ冬℘゜3 小时前
如何在 HTML 中嵌入音频和视频?
前端·html·音视频
变与不变80612 小时前
jQuery怎么使用
前端·javascript