Grok 内置工具怎么选

2026-11-04 17:14 更新

「我要接搜索,是自己写爬虫调 API,还是让模型自己搜?」——这个问题问错方向时,常见的结果是:花两周写了一个搜索函数,接上后发现模型本来就有内置搜索,而且在服务端直接执行,不需要你回传结果。

区分内置工具与自定义函数,是选型的第一步。

一、问题不是「有没有工具」,而是「在哪一侧执行」

官方把工具分成两类,执行位置不同:

  • 内置工具:在服务端自动执行。模型决定搜索后,平台自己完成,你只拿到最终结果。包括网页搜索、X 搜索、代码执行、图像生成、集合检索、附件检索等。
  • 自定义函数:在你的环境执行。模型返回 tool_call 后暂停,等你执行并把结果回传,它才继续。

这个区别决定了三件事:你要不要写执行代码、失败由谁负责、以及成本怎么算。把内置工具当自定义函数接,会多写一套永远用不上的执行逻辑。

二、最小可运行示例:按需求选工具

下面的脚本不联网、不需要真实密钥。它把常见需求映射到「内置还是自定义」,并给出理由。

"""工具选型:按需求返回内置工具或自定义函数。"""

def choose_tool(need: str) -> str:
    table = {
        "实时网页信息": "web_search(内置,服务端执行)",
        "X 平台讨论": "x_search(内置)",
        "计算与数据处理": "code_execution(内置)",
        "生成图片": "image_generation(内置)",
        "内部文档检索": "collections_search(内置)或自定义检索",
        "写入你的数据库": "自定义 function(本地执行)",
        "调用内部审批接口": "自定义 function(本地执行)",
    }
    return table.get(need, "无直接匹配:评估自定义 function")

def offline_check() -> None:
    needs = ["实时网页信息", "X 平台讨论", "写入你的数据库", "订机票"]
    for n in needs:
        print(f"{n} -> {choose_tool(n)}")

if __name__ == "__main__":
    offline_check()

真正选型时,先问一句「这个动作能不能在服务端完成」。能,就用内置;不能(要访问你的内网、要写你的库),才写自定义函数。

三、内置与自定义的分工

工具 执行侧 典型用途
网页搜索 / X 搜索 服务端 实时信息、舆情
代码执行 服务端 计算、数据处理
图像生成 服务端 出图
集合检索 服务端 内部文档语义搜索
自定义函数 你的环境 写库、调内部接口

三件要强调的事:

  • 两类可以混用。官方示例里 web_search 与自定义 save_to_database 出现在同一个 tools 数组:内置的自动执行,自定义的暂停等你处理。混用时要想清楚「哪一步需要你介入」。
  • 计价按两部分。官方写明工具调用由 token 用量 + 调用次数 组成,一次请求可能触发多次调用。所以「让模型多搜几次」不是免费的,估算时要单独列一条(见 5.1)。
  • 不要为内置能力重复造轮子。能搜就别自己爬,能算就别自己写沙箱;自定义函数的价值在「只有你能做」的那部分。

四、预期输出与异常分支

运行选型器,预期输出:

实时网页信息 -> web_search(内置,服务端执行)
X 平台讨论 -> x_search(内置)
写入你的数据库 -> 自定义 function(本地执行)
订机票 -> 无直接匹配:评估自定义 function

换成真实接入时,若出现异常,按下面顺序定位:

现象 优先怀疑 第一步动作
工具调了但没结果 内置工具未在请求里声明 检查 tools 数组
循环卡在等待 自定义函数没回传结果 确认 function_call_output 已发
成本高于预期 工具调用次数被忽略 按 token + 次数分开记
重复实现已有能力 没先查内置清单 对照官方工具页

最后一行尤其重要:选型失误的成本往往不在代码,而在维护——你写了一个能用的搜索函数,却要长期为它的稳定性、限流和合规负责。

五、判据卡

判断项 该这么做 不该这么做
先看内置 能服务端完成就用内置 默认自己写
自定义边界 只做「只有你能做」的 重复实现搜索与计算
混用工具 明确哪步需你介入 全部当成自动执行
成本估算 token + 调用次数分开 只算 token
扩展前 对照官方工具清单 凭印象判断有没有

这张卡的重点是先问执行侧。五条里有四条都在回答同一个问题:这个动作发生在谁的环境里。

六、来源与核验

  • 官方 Tools Overview:https://docs.x.ai/developers/tools/overview(核验日期 2026-11-04)。内置工具分类、服务端执行与自定义函数的区别、工具调用由 token 与调用次数两部分计价的口径,均以该页为准。
  • 官方 Function Calling:https://docs.x.ai/developers/tools/function-calling(核验日期 2026-11-04)。内置工具与自定义函数混用的说明、tools 数组写法来自该页。
  • 具体单价不在此节断言;价格以官方定价页与控制台当前显示为准。

七、动手试

  1. 列出你项目里准备自己写的三个「工具」,逐个对照官方工具页,判断哪些其实内置已有。
  2. 设计一个混用场景:先用内置搜索拿到资料,再用自定义函数写入你的库。写出两次调用的顺序与各自的返回形态。
  3. 估算一次「让模型搜 3 次」的成本:分别列出 token 部分与调用次数部分,说明哪一部分更可控。
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号