智谱开源最快推理模型,附MCP应用实践代码

智谱开源最快推理模型,附MCP应用实践代码

智谱今天开源啦!

国产大模型真实太卷了,即Llama4倒下之后,感觉国外的开源已经没落了,而国内开源蒸蒸日上!雄起!

本次智谱开源了9B和32B两个尺寸级别的模型,共计6个模型,GLM-4-9B-0414、GLM-Z1-9B-0414、GLM-4-32B-Base-0414、GLM-4-32B-0414、GLM-Z1-32B-0414、GLM-Z1-Rumination-32B-0414。PS:是MIT协议呦。


xg.zhihu.com/plugin/ab5

其中,Z1为推理模型、Rumination为沉思模型、Base为基模。注意:沉思模型相较于推理模型均有更长的深度思考,并且可以在深度思考过程中结合搜索工具处理复杂任务。

HF Link:huggingface.co/collecti

说实话,之前一直吐槽说GLM系列都是小模型,10B以下,不够用,这次智谱真开源了32B级别模型(尺寸很合适),我真是爱了爱了!

GLM-4-32B-0414模型是经过15T Tokens数据训练,在很多benchmark上超过了GPT4o、DeepSeek-V3、R1、Qwen2.5-max,如下图所示。

智谱开源最快推理模型,附MCP应用实践代码

GLM-Z1-32B-0414 是在GLM-4-32B-0414的基础上,在数学、代码和逻辑等任务上对模型的进一步强化学习。当然GLM-Z1-9B-0414 也是很能打,效果也是远好于DeepSeek-R1-Distill-Qwen-14B。

智谱开源最快推理模型,附MCP应用实践代码

除模型开源外,基座、推理两类模型也已同步上线智谱BigModel开放平台(bigmodel.cn),面向企业与开发者提供API服务,GLM-4-Air-、GLM-4-Flash-、GLM-Z1-AirX、GLM-Z1-Air、GLM-Z1-Flash,其中,GLM-4-Flash-和GLM-Z1-Flash免费,免费,免费,重要的事情说三遍!当然不免费的价格也很便宜,GLM-Z1-Air价格是R1的三十分之一。

同时GLM-Z1-AirX的推理速度,可以达到200tokens/秒,简直是速度的天花板。

最近MCP也是很火,MCP网上也有很多资料,其实MCP并不深奥,就是让大模型调用外部工具变得更加轻松便捷。虽然传统的 Function calling 功能不错,但即便是一个简单的外部函数,可能也需要编写上百行代码,还得附上 JSON Schema 的说明文档,再费心设计提示词模板,整个过程繁琐又耗时。

并且现在有很多MCP社区,里面有很多大家写好的工具,我们可以直接拿来使用。

今天就用高德地图的MCP服务+GLM-Z1-AirX、GLM-4-AirX,来搭建一个旅游规划应用,模型我直接通过bigmodel调用api了,比较方便。

智谱开源最快推理模型,附MCP应用实践代码


xg.zhihu.com/plugin/ab5

先说一下为什么要调用高德地图的MCP,如果是纯依赖提示词+大模型,进行的旅游规划,会存在很大概率的幻觉,因为很多地点信息会随着时间的变化而改变,大模型在预训练和微调阶段,用的都是历史信息,很容易出现信息滞后或偏差。

而高德MCP服务可以根据给定的地理位置提供通勤方案,根据地理位置可以给出周边内容。

MCP服务端端有studio和sse两种,为了方便,我们就直接调用高德地图的sse服务了,不本地调用再次搭建服务端了。

先通过sse来链接高德map服务,

async def connect_sse_server(self, url: str): """连接到MCP服务器并初始化会话""" print(f"尝试连接到: {url}") self.exit_stack = AsyncExitStack() sse_cm = sse_client(url) streams = await self.exit_stack.enter_async_context(sse_cm) print("SSE 流已获取。") session_cm = ClientSession(streams[0], streams[1]) self.session = await self.exit_stack.enter_async_context(session_cm) print("ClientSession 已创建。") await self.session.initialize() print("Session 已初始化。")

而mcp调用的本质还是tool的使用,通过session获取整个tool list,并且将claude格式的tool转换一下,就是parameters部分。

tools_response = await self.session.list_tools() for tool in tools_response.tools: print(f"Tool Name: {tool.name}") print(f"Tool Description: {tool.description}") tools_data = [{"type": "function", "function": {"name": tool.name, "description": tool.description, "parameters": tool.inputSchema}} for tool in tools_response.tools] print("tools_data: ", tools_data)
  • 通过出发地和目的地,获取合适的交通方式,依旧交通时间
  • 再获取目的地周边好玩的地方
  • 最后利用GLM-Z1-AirX模型,结合上面工具查询的信息,进一步思考,规划出详细的旅游出行计划

首先,规划出行的交通工具,

print("step1") prompt = "请根据提问内容,抽取出旅游计划的出发地和目的,同时调用工具,自行获取所需要的交通工具及时长。" messages = [{"role": "user", "content": prompt + "用户问题:" + query + "调用提供的工具判断问题中出发地和目的地之间采用交通工具"}] messages = await self.think(messages, tools_data)
async def think(self, messages, tools_data): response = self.client.chat.completions.create( model=self.model2, messages=messages, tools=tools_data) max_tool_calls = 5 call_count = 0 while (response.choices[0].message.tool_calls and call_count < max_tool_calls): tool_call = response.choices[0].message.tool_calls[0] tool_name = tool_call.function.name tool_args = json.loads(tool_call.function.arguments) if type(tool_args) is not dict: tool_args = json.loads(tool_args) try: print(f"\n[正在调用工具 {tool_name}, 参数: {tool_args}]") result = await self.session.call_tool(tool_name, tool_args) messages.append(response.choices[0].message.model_dump()) messages.append({"role": "tool", "content": result.content[0].text, "tool_call_id": tool_call.id, }) messages.append({"role": "user", "content": "工具调用结束,请继续规划,思考是否需要继续调用工具,需要则继续,不需要则直接结束,回答言简意赅。", }) response = self.client.chat.completions.create( model=self.model2, messages=messages, tools=tools_data) call_count += 1 except Exception as e: print(f"调用工具 {tool_name} 失败") messages.append(response.choices[0].message.model_dump()) messages.append({"role": "tool", "content": str(e) + "调用工具失败,请检查参数,请重新规划,或者更换工具!", "tool_call_id": tool_call.id, }) response = self.client.chat.completions.create( model=self.model2, messages=messages, tools=tools_data ) call_count += 1 messages.append({"role": "assistant", "content": response.choices[0].message.content}) return messages
print("step2") prompt = "结合上文内容,获取目的地周边的著名游玩景点" messages.append({"role": "user", "content": prompt}) messages = await self.think(messages, tools_data)

最后,规划整体计划,

print("step3") prompt = "结合上文内容,根据出发地目的地交通情况,周围景点,制定详细出行计划,注意高铁车次不需要提供,天数严格遵循用户问题的天数。" messages.append({"role": "user", "content": prompt, }) [message.pop("tool_calls") for message in messages if "tool_calls" in message] response = self.client.chat.completions.create( model=self.model1, messages=messages, tools=tools_data)

上面的整个逻辑就是旅游规划应用的整体逻辑,其他部分代码涉及,初始化,对话等

def __init__(self): self.exit_stack: Optional[AsyncExitStack] = None self.session: Optional[ClientSession] = None self.api_key = "" self.model1 = "GLM-Z1-AirX" self.model2 = "GLM-4-AirX" self.client = ZhipuAI(api_key=self.api_key) async def chat(self): query = input("\n提问: \n").strip() print("\n处理中...") response = await self.process_query(query) print(f"\n回复: \n{response}")

其中,高德的sse服务,mcp.amap.com/sse?你的key

最终呈现效果,如下,

智谱开源最快推理模型,附MCP应用实践代码
提问: 从南京到上海玩3天 处理中... Tool Name: maps_direction_bicycling Tool Description: 骑行路径规划用于规划骑行通勤方案,规划时会考虑天桥、单行线、封路等情况。最大支持 500km 的骑行路线规划 Tool Name: maps_direction_driving Tool Description: 驾车路径规划 API 可以根据用户起终点经纬度坐标规划以小客车、轿车通勤出行的方案,并且返回通勤方案的数据。 Tool Name: maps_direction_transit_integrated Tool Description: 根据用户起终点经纬度坐标规划综合各类公共(火车、公交、地铁)交通方式的通勤方案,并且返回通勤方案的数据,跨城场景下必须传起点城市与终点城市 Tool Name: maps_direction_walking Tool Description: 根据输入起点终点经纬度坐标规划100km 以内的步行通勤方案,并且返回通勤方案的数据 Tool Name: maps_distance Tool Description: 测量两个经纬度坐标之间的距离,支持驾车、步行以及球面距离测量 Tool Name: maps_geo Tool Description: 将详细的结构化地址转换为经纬度坐标。支持对地标性名胜景区、建筑物名称解析为经纬度坐标 Tool Name: maps_regeocode Tool Description: 将一个高德经纬度坐标转换为行政区划地址信息 Tool Name: maps_ip_location Tool Description: IP 定位根据用户输入的 IP 地址,定位 IP 的所在位置 Tool Name: maps_around_search Tool Description: 周边搜,根据用户传入关键词以及坐标location,搜索出radius半径范围的POI Tool Name: maps_search_detail Tool Description: 查询关键词搜或者周边搜获取到的POI ID的详细信息 Tool Name: maps_text_search Tool Description: 关键字搜索 API 根据用户输入的关键字进行 POI 搜索,并返回相关的信息 Tool Name: maps_weather Tool Description: 根据城市名称或者标准adcode查询指定城市的天气 tools_data: [{'type': 'function', 'function': {'name': 'maps_direction_bicycling', 'description': '骑行路径规划用于规划骑行通勤方案,规划时会考虑天桥、单行线、封路等情况。最大支持 500km 的骑行路线规划', 'parameters': {'type': 'object', 'properties': {'origin': {'type': 'string', 'description': '出发点经纬度,坐标格式为:经度,纬度'}, 'destination': {'type': 'string', 'description': '目的地经纬度,坐标格式为:经度,纬度'}}, 'required': ['origin', 'destination']}}}, {'type': 'function', 'function': {'name': 'maps_direction_driving', 'description': '驾车路径规划 API 可以根据用户起终点经纬度坐标规划以小客车、轿车通勤出行的方案,并且返回通勤方案的数据。', 'parameters': {'type': 'object', 'properties': {'origin': {'type': 'string', 'description': '出发点经纬度,坐标格式为:经度,纬度'}, 'destination': {'type': 'string', 'description': '目的地经纬度,坐标格式为:经度,纬度'}}, 'required': ['origin', 'destination']}}}, {'type': 'function', 'function': {'name': 'maps_direction_transit_integrated', 'description': '根据用户起终点经纬度坐标规划综合各类公共(火车、公交、地铁)交通方式的通勤方案,并且返回通勤方案的数据,跨城场景下必须传起点城市与终点城市', 'parameters': {'type': 'object', 'properties': {'origin': {'type': 'string', 'description': '出发点经纬度,坐标格式为:经度,纬度'}, 'destination': {'type': 'string', 'description': '目的地经纬度,坐标格式为:经度,纬度'}, 'city': {'type': 'string', 'description': '公共交通规划起点城市'}, 'cityd': {'type': 'string', 'description': '公共交通规划终点城市'}}, 'required': ['origin', 'destination', 'city', 'cityd']}}}, {'type': 'function', 'function': {'name': 'maps_direction_walking', 'description': '根据输入起点终点经纬度坐标规划100km 以内的步行通勤方案,并且返回通勤方案的数据', 'parameters': {'type': 'object', 'properties': {'origin': {'type': 'string', 'description': '出发点经度,纬度,坐标格式为:经度,纬度'}, 'destination': {'type': 'string', 'description': '目的地经度,纬度,坐标格式为:经度,纬度'}}, 'required': ['origin', 'destination']}}}, {'type': 'function', 'function': {'name': 'maps_distance', 'description': '测量两个经纬度坐标之间的距离,支持驾车、步行以及球面距离测量', 'parameters': {'type': 'object', 'properties': {'origins': {'type': 'string', 'description': '起点经度,纬度,可以传多个坐标,使用分号隔离,比如120,30;120,31,坐标格式为:经度,纬度'}, 'destination': {'type': 'string', 'description': '终点经度,纬度,坐标格式为:经度,纬度'}, 'type': {'type': 'string', 'description': '距离测量类型,1代表驾车距离测量,0代表直线距离测量,3步行距离测量'}}, 'required': ['origins', 'destination']}}}, {'type': 'function', 'function': {'name': 'maps_geo', 'description': '将详细的结构化地址转换为经纬度坐标。支持对地标性名胜景区、建筑物名称解析为经纬度坐标', 'parameters': {'type': 'object', 'properties': {'address': {'type': 'string', 'description': 智谱 AI GLM 教程'待解析的结构化地址信息'}, 'city': {'type': 'string', 'description': '指定查询的城市'}}, 'required': ['address']}}}, {'type': 'function', 'function': {'name': 'maps_regeocode', 'description': '将一个高德经纬度坐标转换为行政区划地址信息', 'parameters': {'type': 'object', 'properties': {'location': {'type': 'string', 'description': '经纬度'}}, 'required': ['location']}}}, {'type': 'function', 'function': {'name': 'maps_ip_location', 'description': 'IP 定位根据用户输入的 IP 地址,定位 IP 的所在位置', 'parameters': {'type': 'object', 'properties': {'ip': {'type': 'string', 'description': 'IP地址'}}, 'required': ['ip']}}}, {'type': 'function', 'function': {'name': 'maps_around_search', 'description': '周边搜,根据用户传入关键词以及坐标location,搜索出radius半径范围的POI', 'parameters': {'type': 'object', 'properties': {'keywords': {'type': 'string', 'description': '搜索关键词'}, 'location': {'type': 'string', 'description': '中心点经度纬度'}, 'radius': {'type': 'string', 'description': '搜索半径'}}, 'required': ['keywords', 'location']}}}, {'type': 'function', 'function': {'name': 'maps_search_detail', 'description': '查询关键词搜或者周边搜获取到的POI ID的详细信息', 'parameters': {'type': 'object', 'properties': {'id': {'type': 'string', 'description': '关键词搜或者周边搜获取到的POI ID'}}, 'required': ['id']}}}, {'type': 'function', 'function': {'name': 'maps_text_search', 'description': '关键字搜索 API 根据用户输入的关键字进行 POI 搜索,并返回相关的信息', 'parameters': {'type': 'object', 'properties': {'keywords': {'type': 'string', 'description': '查询关键字'}, 'city': {'type': 'string', 'description': '查询城市'}, 'citylimit': {'type': 'boolean', 'default': False, 'description': '是否限制城市范围内搜索,默认不限制'}}, 'required': ['keywords']}}}, {'type': 'function', 'function': {'name': 'maps_weather', 'description': '根据城市名称或者标准adcode查询指定城市的天气', 'parameters': {'type': 'object', 'properties': {'city': {'type': 'string', 'description': '城市名称或者adcode'}}, 'required': ['city']}}}] 请求: 从南京到上海玩3天 step1 [正在调用工具 maps_direction_driving, 参数: {'origin': '南京', 'destination': '上海'}] [正在调用工具 maps_text_search, 参数: {'keywords': '南京到上海', 'citylimit': True}] [正在调用工具 maps_direction_driving, 参数: {'origin': '南京', 'destination': '上海'}] step2 [正在调用工具 maps_text_search, 参数: {'keywords': '上海旅游景点', 'city': '上海'}] step3 回复: <think> 好的,我需要帮用户制定从南京到上海3天的详细出行计划。首先,用户之前提到过出发地是南京,目的地是上海,但之前调用工具获取交通工具时遇到了参数错误,可能需要忽略这部分,直接根据现有信息规划。 接下来,用户希望结合周围景点和交通情况制定计划。之前已经获取了上海的景点列表,包括迪士尼、豫园、东方明珠等。需要确保3天的行程合理,覆盖主要景点,避免太赶。 第一天可以安排市内经典景点,比如外滩、南京路步行街、豫园和城隍庙,这些地方集中,适合步行或短途交通。第二天推荐迪士尼度假区,需要一整天时间,适合家庭或喜欢主题公园的游客。第三天可以选自然景点,如野生动物园或植物园,或者去金山城市沙滩放松。 交通方面,南京到上海的高铁虽然用户说不提供车次,但需要提到交通方式,比如高铁大约1小时,市内地铁或公交方便。景点之间的交通建议地铁或打车,注意时间安排,避免高峰。 还要注意用户可能的需求,比如餐饮推荐,但用户没特别提到,可能不需要。重点在景点和交通衔接,确保每天行程不过于紧凑,有休息时间。最后提醒提前订票,特别是迪士尼和热门景点,确保顺利游玩。 </think> 南京→上海3天详细出行计划 交通总览:南京至上海高铁约1小时,市内地铁/公交为主,景点间打车/步行结合。 Day1:经典城市文化游 - 上午:上海站→地铁2号线直达南京东路(外滩)→步行游览外滩万国建筑群+陆家嘴天际线(东方明珠外观)。 - 中午:南京东路步行街午餐(推荐本帮菜:绿波廊、老正兴)。 - 下午:地铁10号线至豫园站→游览豫园(古典园林)+城隍庙(小吃:南翔小笼包)。 - 晚上:地铁2号线至人民广场→步行至新天地(夜景+酒吧)。 Day2:迪士尼深度游 - 全天:上海站→地铁11号线直达迪士尼站→畅玩园区(建议提前订门票,推荐创极速光轮、飞跃地平线)。 - 午餐:园区内餐厅或自带简餐(部分区域可外卖配送)。 - 晚上:烟花秀后返程,地铁11号线至龙阳路站→打车/地铁回市区酒店。 Day3:自然与历史体验 - 上午:酒店→地铁9号线至徐家汇→上海植物园(江南园林+温室展)。 - 中午:植物园周边午餐(推荐徐汇区本帮菜)。 - 下午:地铁1号线至莘庄→七宝古镇(明清建筑+茶馆体验)。 - 返程:下午5点前地铁/打车至上海站→南京高铁返程。 Tips: 1. 提前下载“Metro大都会”APP扫码乘地铁,迪士尼/热门景点建议早入园。 2. 市内打车起步价14元(3公里),跨江/高峰时段建议地铁。 3. 3天可覆盖上海核心文旅资源,如需调整可替换为野生动物园/朱家角古镇等。 

还有就是这个GLM-Z1-AirX模型速度也太快了吧,比之前用的think都快,官方说200tokens/s,我这里实测也有106tokens/s,并且现在还是白天高峰期。反正就是主打一个快字,天下武功唯快不破!

智谱开源最快推理模型,附MCP应用实践代码
智谱开源最快推理模型,附MCP应用实践代码

而快速响应结果的模型,在应用阶段是十分重要的,如果耗时太长,很多时候会让客户失去耐心,尤其是我所在的客服等场景。

之前网上有个测试速度的图,加上GLM-Z1-AirX是这样的,哈哈哈,就是快

智谱开源最快推理模型,附MCP应用实践代码

PS:说个题外话,BigModel现在新用户注册可领取2000万tokens,老用户也可以领100万tokens,我玩了半天Tokens还没消耗完,哈哈哈,白嫖的快乐!


zhipuaishengchan.datasink.sensorsdata.cn

最后,我想说一下,智谱这波开源+免费真的是挺良心的,我之前老是吐槽智谱不开源更大的模型,现在没没法说了,现在已经准备开始在业务上批量测试智谱的模型了。

又开源,又免费,感觉跟智谱各种融资有关,现在真是不差钱了,没有后顾之忧了!!!感觉跟政府玩的国家队,啥都不怕呀!还有今天刷到智谱准备ipo,感觉这波开源也会是一大助力,口碑嗷嗷飙升。

对了今天openai也是发布了4.1模型,我就奇怪为啥先发4.5再发4.1,哈哈哈,不过感觉智谱这波开源也是狙击到closeai了,哈哈哈!

PS: 4.1模型在 ComplexFuncBench(智谱团队搞得) 的function call能力不足70,说明大模型工具调用仍需要继续提高!

现在国产大模型越来越好,无限利好我们从业人员!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:Ai探索者,转载请注明出处:https://javaforall.net/269247.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月12日 下午4:19
下一篇 2026年3月12日 下午4:19


相关推荐

关注全栈程序员社区公众号