GLM 5.2(经智谱 AI API 以 glm-4-plus 提供)是一款 753B 参数的专家混合(MoE)模型,拥有 100 万 token 的上下文窗口。它开箱即用地支持代码、视觉、结构化输出与流式。但有一件事再多的预训练也无法彻底解决:发生在训练截止时间之后的事件。
本教程教你两种给 GLM 5.2 接上实时网络访问的方法——智谱原生的 web_search 工具(最快的路径)和一套自定义函数调用方案,可以接任意搜索 API(SerpAPI、Brave、Tavily 等)。两种方式都与 OpenAI SDK 兼容,如果你已经集成过这个模型,配置成本极低。
学完你将拥有一个能回答实时问题的可用 Python 脚本——当前股价、突发新闻、最新库更新日志——不需要任何浏览器自动化或爬虫。
痛点
每个大语言模型都凝固在时间里。GLM 5.2 的训练数据有截止点,意味着它无法回答关于昨天的财报、最新框架发布、或任何发生在其互联网快照之后的事件。
对许多生产用例来说,这是致命伤。引用过时退货政策的客服机器人、引用已废弃文档的研究助手、用陈旧价格数据的金融工具——都会立刻侵蚀用户信任。对私有文档做 RAG 流水线能帮助内部知识,但解决不了「今天发生了什么」的问题。
标准解法是让模型在查询时搭配实时网络搜索:模型判断自己需要最新信息,调用搜索工具,读取结果,把它们揉进一个有据可依的回答。GLM 5.2 原生支持这种模式。
GLM 5.2 联网搜索如何工作
GLM 5.2 的 API 端点(https://open.bigmodel.cn/api/paas/v4/)兼容 OpenAI。这意味着标准的 tools / 函数调用接口可用,而且智谱新增了一个第一方 web_search 工具类型,托管模型已经知道怎么用它。
调用流程是:
- 你在请求里带上
web_search工具。 - GLM 5.2 根据用户的问题判断是否需要实时搜索。
- 如果需要,智谱后端抓取搜索结果并注入模型上下文。
- 模型返回一个引用或融入了这些结果的最终答案。
第 3、4 步在原生工具下由服务端完成,这让集成变成单次请求操作。而自定义函数调用方案里,第 3、4 步由你的 Python 代码显式处理,让你完全掌控用哪家搜索服务商和什么排序逻辑。
方法 1:智谱原生 web_search 工具
智谱的 API 暴露了一个 web_search 工具类型,模型可以自动调用。启用它只需要在 tools 列表里多一项。不需要单独的搜索 API key。
from openai import OpenAI
client = OpenAI(
api_key="YOUR_ZHIPU_API_KEY",
base_url="https://open.bigmodel.cn/api/paas/v4/",
)
response = client.chat.completions.create(
model="glm-4-plus",
messages=[
{
"role": "user",
"content": "What are the top AI news stories from the past 24 hours?"
}
],
tools=[
{
"type": "web_search",
"web_search": {
"enable": True
}
}
],
)
print(response.choices[0].message.content)这就是完整的集成。模型自己判断问题是否需要联网查证。如果用户问的东西模型能用训练数据回答,它就直接回答。如果问题需要当前信息——新闻、实时价格、最近的软件发布——模型触发搜索、读取结果,并在一次 API 往返内返回有据回答。
你还可以针对特定轮次关闭搜索,把 "enable" 设为 False 即可。当你想要确定性、纯参数式答案时很有用(比如基于已经加载进上下文的检索数据生成结构化输出时)。
方法 2:用搜索 API 做自定义函数调用
原生工具是最快的路径,但有些场景你需要更多掌控:指定的搜索服务商、自定义排序、按日期或域名过滤,或者想在结果进入模型之前检查并记录原始结果。这时就把搜索实现为标准的 OpenAI 兼容函数调用。
五步循环是:定义函数结构、传给 GLM 5.2、收到模型的工具调用请求、在你的代码里执行真实搜索、把结果发回去让模型写出最终答案。
import json
import requests
from openai import OpenAI
client = OpenAI(
api_key="YOUR_ZHIPU_API_KEY",
base_url="https://open.bigmodel.cn/api/paas/v4/",
)
# --- Define the search tool schema ---
tools = [
{
"type": "function",
"function": {
"name": "web_search",
"description": (
"Search the web for current information. "
"Use this for recent events, live pricing, or the latest documentation."
),
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query to execute."
},
"num_results": {
"type": "integer",
"description": "Number of results to return (default 5).",
"default": 5
}
},
"required": ["query"]
}
}
}
]
def run_search(query: str, num_results: int = 5) -> list[dict]:
"""
Execute a real web search using your preferred provider.
Replace this stub with a call to SerpAPI, Brave Search, or Tavily.
"""
# Example stub — replace with your actual search provider:
# serpapi_key = "YOUR_SERPAPI_KEY"
# url = "https://serpapi.com/search"
# params = {"q": query, "num": num_results, "api_key": serpapi_key}
# data = requests.get(url, params=params).json()
# return [{"title": r["title"], "snippet": r["snippet"], "url": r["link"]}
# for r in data.get("organic_results", [])[:num_results]]
# Placeholder response for demonstration:
return [
{
"title": f"Search result for: {query}",
"snippet": "Live snippet from the web would appear here.",
"url": "https://example.com"
}
]
def chat_with_search(user_message: str) -> str:
messages = [{"role": "user", "content": user_message}]
# First turn: model may request a tool call
response = client.chat.completions.create(
model="glm-4-plus",
messages=messages,
tools=tools,
tool_choice="auto",
)
choice = response.choices[0]
# If the model wants to search, execute it and send results back
if choice.finish_reason == "tool_calls":
tool_call = choice.message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
search_results = run_search(
query=args["query"],
num_results=args.get("num_results", 5)
)
# Append the assistant's tool-call message and our results
messages.append(choice.message)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(search_results)
})
# Second turn: model writes final answer using search results
final_response = client.chat.completions.create(
model="glm-4-plus",
messages=messages,
)
return final_response.choices[0].message.content
# Model answered directly without searching
return choice.message.content
if __name__ == "__main__":
answer = chat_with_search(
"What is the current Python version and when was it released?"
)
print(answer)这个实现里的关键点:
tool_choice="auto"让模型自己决定何时搜索;如果总想让模型先搜索,就设成"required"。- 工具调用之后,你以
"role": "tool"的消息把搜索结果发回去——这是标准的 OpenAI 函数调用协议,在 GLM 5.2 上完全相同地工作。 - GLM 5.2 的 1M token 上下文窗口意味着你可以轻松传递几十条搜索结果(整页文本,不只是摘要片段)而不触达上限。
怎么选
想要最快集成、且不需要检查或控制搜索结果时,用原生 web_search 工具。智谱处理搜索后端,没有额外的 API key 或结果解析步骤。
当你需要指定搜索服务商(出于域名覆盖、地理过滤或价格原因)、想记录原始结果供审计、需要在模型看到结果之前按日期范围过滤、或者正在构建把搜索当作众多工具之一的智能体循环时,用自定义函数调用方案。
两种方法都支持流式——你可以在 create() 调用里加 stream=True,然后迭代 response.choices[0].delta.content 获得逐 token 输出,即便工具调用还在进行中。
真实用例
实时新闻摘要。 丢一个主题,让 GLM 5.2 总结最新报道。借助 1M 上下文窗口,你可以塞进完整文章文本而不是截断的片段,摘要质量大幅提升。
实时价格与可用性。 电商或旅行助手可以查询实时产品或航班数据,让模型格式化一份干净对比——不需要专门的爬虫流水线。
最新文档查询。 让模型去查某个库的最新 API 更新日志。模型抓取发布说明页面、阅读内容,并解释自你正在用的版本以来发生了什么变化。
金融数据查询。 对需要当前汇率、指数值或大宗商品价格的应用,查询时的一次搜索工具调用比把陈旧数据写进 system prompt 更可靠。
竞争差异化
好几款领先模型都支持函数调用,因此都可以搭配联网搜索工具。GLM 5.2 在这个用例上值得考虑,是三个因素叠加的结果。
第一,原生 web_search 工具不需要额外 API key、不需要搜索服务商账号、不需要结果解析代码。集成就是在 tools 列表里加一个 JSON 对象——相比那些必须自己搭建整个搜索循环的模型,这是实打实的接入摩擦削减。
第二,1M token 上下文窗口(截至撰写时是生产 API 模型里最大的)意味着你不必被迫截断搜索结果。你可以把 20 个完整网页塞进一个上下文,让模型综合它们——这在 128K 甚至 200K token 下都是不现实的。
第三,按每百万输入 token $1.40 计算,即使每轮注入几千 token 的搜索结果,联网增强查询也依然便宜。同样工作流在 $15/百万输入 token 的昂贵模型上,规模下成本约为十倍。
想深入了解 API 配置——鉴权、流式、JSON 模式与完整端点参考——参见 GLM 5.2 API 集成指南,那里覆盖了完整的开发者接入流程。
开始使用
如果你想在写任何代码之前测试 GLM 5.2 的联网搜索,glm5.app 让你直接在浏览器里对模型跑提示词。在投入后端集成之前,这是验证某个查询是否真的触发搜索工具、并看看有据回答长什么样的快捷方式。
准备好动手之后,跟着本教程走:最快的配置是启用原生 web_search 工具;想完全掌控结果,就用自定义函数调用模式接入你偏好的搜索服务商。无论哪条路,推理和综合都由 GLM 5.2 负责——你只需要提供实时数据。
正在评估 GLM 5.2 用于生产的团队,glm5.app 还提供了一个 playground:可以测试边界用例、对比不同 system prompt 的输出、在投入 API 预算前估算 token 成本。
Sources
- 智谱 AI API 文档与 web search 工具参考:https://open.bigmodel.cn/dev/api/thirdparty-frame/openai-sdk
- 智谱 AI 开放平台:https://open.bigmodel.cn/
- Hugging Face 上的 GLM-4 模型权重:https://huggingface.co/THUDM/GLM-4
- Artificial Analysis 基准榜单(速度与质量指数):https://artificialanalysis.ai/

