从写代码,到创作下一幕

探索 字节跳动 - 火山方舟 的 AI 编程与视频创作活动。

火山方舟 Agent Plan 与 Coding Plan 活动,价格 ¥9.9 起

Agent Plan & Coding Plan

一站体验多款热门模型,为 AI 编程与智能体开发提供更多选择。新用户可联系(微信: goo_lvyouyou)免费体验 9.9 agent plan。

查看套餐优惠
Seedance 2.5 视频创作活动:30 秒视频、多模态参考、局部编辑

Seedance 2.5

让创意,跃然成片。探索 30 秒视频、多模态参考与局部编辑,把脑海中的画面变成下一支作品。

探索视频创作

工具

X Search

查看 Markdown

X Search 工具让 Grok 能够在 X(原 Twitter)上执行关键词搜索、语义搜索、用户搜索和帖子串获取。该工具允许模型访问实时社交媒体内容、分析帖子并从 X 的海量数据中获取洞察。

X Search 按每获取 1,000 条帖子 $5、每获取 1,000 个用户资料 $10 计费,另收 token 费用;请参阅工具调用成本了解获取帖子或资料的统计范围。


SDK 支持

SDK/API工具名称
Responses APIx_search
Vercel AI SDKxai.tools.xSearch()

所有与 Responses API 兼容的 SDK 也支持此工具。


基础用法

import { xai } from '@ai-sdk/xai';
import { generateText } from 'ai';

const { text, sources } = await generateText({
  model: xai.responses('grok-4.7'),
  prompt: 'What are people saying about SpaceXSI on X?',
  tools: {
    x_search: xai.tools.xSearch(),
  },
});

console.log(text);
console.log('Citations:', sources);

X Search 参数

参数类型说明
allowed_x_handles字符串数组仅考虑这些账号发布的帖子。填写账号名时省略 @(最多 20 个;Vercel AI SDK 最多 10 个)
excluded_x_handles字符串数组排除这些账号发布的帖子。填写账号名时省略 @(最多 20 个;Vercel AI SDK 最多 10 个)
from_date字符串起始日期,见日期范围(YYYY-MM-DD)
to_date字符串结束日期,见日期范围(YYYY-MM-DD)
enable_image_understanding布尔值允许模型查看所找到帖子中的图像。默认值为 false。
enable_video_understanding布尔值允许模型观看所找到帖子中的视频。默认值为 false。

仅考虑指定账号的帖子

使用 allowed_x_handles,以便只考虑指定 X 账号发布的帖子。

const { text } = await generateText({
  model: xai.responses('grok-4.7'),
  prompt: 'What has SpaceX posted about Starship recently?',
  tools: {
    x_search: xai.tools.xSearch({
      allowedXHandles: ['SpaceX'],
    }),
  },
});

排除指定账号的帖子

使用 excluded_x_handles,以便在所有 X 搜索工具调用中排除指定账号的帖子。

const { text } = await generateText({
  model: xai.responses('grok-4.7'),
  prompt: 'How are people reacting to the latest Tesla delivery numbers?',
  tools: {
    x_search: xai.tools.xSearch({
      excludedXHandles: ['Tesla'],
    }),
  },
});

日期范围

如需限制搜索数据的日期范围,请指定 from_date 和 to_date。仅包含从 UTC 00:00 开始的帖子,开始日期为 from_date,结束日期为 to_date(不含当天)。如需搜索单日,请将 to_date 设为次日。

使用 YYYY-MM-DD 作为两个字段的格式,例如 "2026-09-28"。其他格式(包括完整的日期时间)均不会生效。

const { text } = await generateText({
  model: xai.responses('grok-4.7'),
  prompt: 'How did people react to the Starship launch?',
  tools: {
    x_search: xai.tools.xSearch({
      fromDate: '2026-09-28',
      toDate: '2026-10-01',
    }),
  },
});

启用图像理解

将 enable_image_understanding 设置为 true,允许 Agent 分析搜索过程中遇到的 X 帖子中的图像。

const { text } = await generateText({
  model: xai.responses('grok-4.7'),
  prompt: 'Find X posts with images about AI',
  tools: {
    x_search: xai.tools.xSearch({
      enableImageUnderstanding: true,
    }),
  },
});

启用视频理解

将 enable_video_understanding 设置为 true,允许 Agent 分析 X 帖子中的视频。该功能仅适用于 X Search,不适用于 Web Search。

const { text } = await generateText({
  model: xai.responses('grok-4.7'),
  prompt: 'Find X posts with videos about AI',
  tools: {
    x_search: xai.tools.xSearch({
      enableVideoUnderstanding: true,
    }),
  },
});

X 搜索的工作原理

添加 x_search 到 tools 后,由模型决定何时调用以下函数以及调用次数。模型读取获取的帖子,并在回答中引用来源。每次调用在响应输出中对应一项 custom_tool_call,其名称与函数相同。响应还会报告用量计数。

函数模型用途计费单位
x_keyword_search使用 X 高级搜索运算符进行关键词搜索,排序方式为 Top 或 Latest获取的帖子数
x_semantic_search按含义检索,无需逐字匹配获取的帖子数
x_user_search按名称或描述查找用户获取的用户资料数
x_thread_fetch获取一条帖子及其上级帖子和回复获取的帖子数

启用图像 或 视频理解后,模型还可以查看帖子中的图像和视频,按图像 token 计费。

无论模型编写什么查询,账号和日期参数都适用于每次关键词搜索和语义搜索,但不适用于获取消息串。


示例

以下仅展示部分输出。模型会自行选择查询,因此结果可能不同。

控制成本

要降低费用,可缩小账号和日期范围,减少模型需获取的内容;使用 max_turns 要求减少搜索轮次,并检查响应中的获取数量。

import { xai } from '@ai-sdk/xai';
import { generateText } from 'ai';

const { response } = await generateText({
  model: xai.responses('grok-4.7'),
  prompt: 'What did SpaceX post about Starship in September 2026?',
  tools: { x_search: xai.tools.xSearch({ allowedXHandles: ['SpaceX'], fromDate: '2026-09-01', toDate: '2026-10-01' }) },
  providerOptions: { xai: { maxTurns: 2 } },
  include: { responseBody: true },
});

// response.body is the raw Responses API JSON.
const usage = Object(response.body).usage;
console.log(`x_posts_fetched: ${usage.server_side_tool_usage_details.x_posts_fetched}`);
console.log(`x_users_fetched: ${usage.server_side_tool_usage_details.x_users_fetched}`);

用量计数

每个运行了 X Search 的 Responses API 响应都会报告获取的条目数,便于根据 2026 年 9 月 21 日生效的按条目价格核对请求费用。这些计数位于 usage.server_side_tool_usage_details 下,与按调用次数统计的 x_search_calls 并列:

字段统计内容
x_posts_fetched由 x_keyword_search、x_semantic_search 和 x_thread_fetch 返回的帖子,包括上级帖子、引用帖子以及所获取帖子串中的每条帖子
x_users_fetched由以下工具返回的用户资料:x_user_search

两个计数都会累加请求中所有 X Search 调用的结果,不会去重;同一条帖子被两次搜索返回,就计为两条。流式传输时,usage 字段在终止事件(response.completed,或 response.incomplete,用于响应被截断的情况)中表示整个请求的总计。

执行两次 X 搜索后,server_side_tool_usage_details 是 /v1/responses usage 对象中的一个块,示例如下:

JSON

"server_side_tool_usage_details": {
  "web_search_calls": 0,
  "x_search_calls": 2,
  "x_posts_fetched": 44,
  "x_users_fetched": 3,
  "code_interpreter_calls": 0,
  "file_search_calls": 0,
  "mcp_calls": 0,
  "document_search_calls": 0,
  "image_generation_calls": 0
}

引用

有关如何获取和使用搜索结果引用的详情,请参阅 引用 页面。


最后更新:2026 年 10 月 10 日