• 产品简介
  • 快速开始
    • Agent 开发
    • 导入 Git 仓库
    • 从模板开始
    • 直接上传
    • 从 AI 开始
  • 框架指南
    • Agent
    • 前端
      • Vite
      • React
      • Vue
      • Hugo
      • 其他框架
    • 后端
    • 全栈
      • Next.js
      • Nuxt
      • Astro
      • React Router
      • SvelteKit
      • TanStack Start
      • Vike
    • 自定义 404 页面
  • 项目指南
    • 项目管理
    • edgeone.json
    • 缓存配置
    • 构建输出配置
    • 错误码
  • 构建指南
  • 部署指南
    • 概览
    • 触发部署
    • 管理部署
    • 部署按钮
    • 使用 Github Action
    • 使用 Gitlab CI/CD
    • 使用 CNB 插件
    • 使用 IDE 插件
    • 使用 CodeBuddy IDE
  • 域名管理
    • 概览
    • 自定义域名
    • 配置 HTTPS 证书
      • 概览
      • 申请免费证书
      • 使用 SSL 托管证书
    • 配置 DNS 的 CNAME 记录
  • 可观测性
    • 概览
    • 指标分析
    • 日志分析
  • Functions
    • 概览
    • Edge Functions
    • Cloud Functions
      • 概览
      • Node.js
      • Python
      • Go
  • Agents
    • 概览
    • 快速开始
    • 对话存储
    • 可观测
    • 沙箱工具
      • 概览
      • Agent 框架使用
      • 沙箱原子 API
      • 网络搜索工具
    • Agent 鉴权
  • Models
    • 概览
    • 模型与厂商
      • 概览
      • 使用厂商密钥
        • OpenAI
        • Anthropic
        • Google AI Studio
        • DeepSeek
        • MiniMax
        • 混元
        • 智谱
        • 月之暗面
    • 常见问题
  • 存储
    • 概览
    • KV
    • Blob
  • 中间件
  • AI 原生开发
    • Skills
    • MCP
  • Copilot
    • 概览
    • 快速开始
  • API Token
  • EdgeOne CLI
  • 消息通知
  • 集成指南
    • AI
      • 对话型大模型集成
      • 图片大模型集成
    • 数据库
      • Supabase 集成
      • Pages KV 集成
    • 电商
      • Shopify 集成
      • WooCommerce 集成
    • 支付
      • Stripe 集成
      • Paddle 集成
    • CMS
      • WordPress 集成
      • Contentful 集成
      • Sanity 集成
      • Payload 集成
    • 身份验证
      • Supabase 集成
      • Clerk 集成
  • 最佳实践
    • 为网站添加 AI 对话助手
    • AI 对话式部署:使用 Skill 一句话部署项目
    • 使用通用大模型快速搭建 AI 应用
    • 使用边缘 AI 模型快速搭建对话型 AI 站点
    • 使用 Shopify 搭建电商平台
    • 使用 Supabase 和 Stripe 搭建 SaaS 站点
    • 如何快速搭建公司品牌站点
    • 如何快速搭建博客站点
  • 迁移指南
    • 从 Vercel 迁移至 EdgeOne Makers
    • 从 Cloudflare Pages 迁移至 EdgeOne Makers
    • 从 Netlify 迁移至 EdgeOne Makers
  • 排障指南
  • 常见问题
  • 限制与配额
  • 价格与套餐
  • 联系我们
  • 产品动态

网络搜索工具

web_search 是平台提供的公网搜索工具示例,底层调用腾讯云联网搜索(WSA)API,适合 LLM 在需要发现信息、查询资料或获取最新内容时使用。开发者也可以根据业务场景接入第三方搜索服务或自定义搜索工具。

启用前提

配置环境变量 WSA_API_KEY:dev 环境写到项目 .env,线上写到控制台环境变量;缺失会提示 web_search requires the WSA_API_KEY environment variable...
主账号需在腾讯云控制台开通 联网搜索(WSA) 服务,参考 WSA API 文档
部署时,该环境变量非必填。部署成功后,仍可在控制台的项目设置中继续补充填写。

参数

字段
类型
必填
默认
说明
query
string
搜索关键词,不可为空字符串
maxResults
integer ≥ 1
5
去重后返回的最大条数(按 href 去重)
site
string
站内搜索:把结果限制在单个域,例如 "zhihu.com""cloud.tencent.com"
省略表示全网检索

返回值

返回 SearchResult[] —— 去重后的结果数组(按 href 去重,长度 ≤ maxResults)。每项字段:
字段
类型
说明
title
string
结果标题(已 trim)
href
string
目标 URL(WSA 直接返回真实可访问地址,无需再跟重定向)
snippet
string
摘要片段,对应 WSA 的 content / passage
site
string
来源站点名(部分小站可能为空)
date
string
内容发布日期(可能为空)

TS 示例

// 全网检索
const webSearch = context.tools.get('web_search')
const results = await webSearch.execute({
query: '最近 AI 有什么新的技术'
})
// results: [{ title, href, snippet, site, date }, ...]


Python 示例

# 全网检索
web_search = context.tools.get('web_search')
results = await web_search['execute']({
'query': '最近 AI 有什么新的技术'
})

第三方搜索服务

如果不想使用 腾讯云 WSA,可以接入第三方搜索服务(如 ExaTavily 等)。

推荐对接形式:自定义工具 + 屏蔽内置 web_search

把第三方调用包成一个与 framework 适配后的工具形态一致的对象,然后在挂载到 Agent 时把内置 web_search 过滤掉,避免 LLM 同时看到两个用途相同的工具。
TS 示例(Exa + OpenAI Agents)
import Exa from 'exa-js'
import { tool } from '@openai/agents'
import { z } from 'zod'

const exa = new Exa(process.env.EXA_API_KEY!)

// 1) 把第三方调用包成 framework 原生工具
const exaSearch = tool({
name: 'web_search',
description: 'Search the public web. Returns title / url / snippet for top results.',
parameters: z.object({
query: z.string().describe('Search keywords'),
maxResults: z.number().int().min(1).default(5),
}),
execute: async ({ query, maxResults }) => {
const { results } = await exa.search(query, {
numResults: maxResults,
contents: { highlights: true },
})
return results.map((r) => ({
title: r.title ?? '',
href: r.url,
snippet: r.highlights?.[0] ?? r.text?.slice(0, 200) ?? '',
site: new URL(r.url).hostname,
date: r.publishedDate ?? '',
}))
},
})

// 2) 挂载时过滤掉内置 web_search,避免和自定义工具冲突
const tools = [
...context.tools.all().filter((t) => t.name !== 'web_search'),
exaSearch,
]

ai-agent
你可以这样问我
如何开始使用 EdgeOne Makers?