整个12月AI领域真是热闹非凡,OpenAI 连续12天发布会,谷歌冲破OpenAI截胡屡次登上头条,各种新技术层出不穷,看得人眼花缭乱。不过,就在2024年的最后一天,智谱公司又给我们带来了一个惊喜——他们发布了GLM-Zero的初代版本:GLM-Zero-Preview,一个主打深度推理的模型,据说在数理逻辑、代码编写这些方面表现相当亮眼
根据智谱的介绍,这个模型基于扩展强化学习技术训练,主要探索并验证了强化学习在增强模型深度推理能力方面不可取代的作用。随着强化学习训练量的增加,模型在深度推理等方面的效果稳步提升
智谱深入探究了模型在推理阶段的 scaling law,随着模型可以思考的 token 数变多以及更多的计算量,模型给出的结果质量也稳步提升,体现了“自我反思和优化、复杂问题分解、尝试用不同方法解决问题”等能力——这与人类的思考决策过程类似
模型表现
GLM-Zero-Preview 是 GLM 家族中专注于增强 AI 推理能力的模型,擅长处理数理逻辑、代码和需要深度推理的复杂问题。同基座模型相比,GLM-Zero-Preview 在不显著降低通用任务能力的情况下,在专家任务能力方面表现大幅提升。其在 AIME 2024、MATH500 和 LiveCodeBench 评测中,效果与 OpenAI o1-preview 相当
实测
我第一时间就去体验了一番。说实话,最初我是带着几分怀疑的,毕竟现在市面上各种模型满天飞,真正能让人眼前一亮的并不多。但体验过GLM-Zero-Preview之后,不得不承认,它确实有点东西
体验过程中我最深刻的感觉是与现有模型不同,GLM-Zero-Preview 能够初步实现推理过程中自主决策、问题拆解和尝试多种方式解决问题 ,这一点尤其在编程解决较为复杂复杂问题上表现的淋漓尽致,我看到并且真实的感受了GLM-Zero-Preview实时思维过程详细到令人发指,这也让我对推理模型信心更为坚定,尽管现在还有不完美,但推理模型一定会把人类带到难以想象的地步
咱们直接上实测!
数学,这可是很多AI模型的“老大难”问题。
先测一个最经典问题:
8.2和8.1215那个大?(这个是现编的,9.8和9.11那个估计很多推理模型已经训练过了)
现在上难度
根据智谱的测试GLM-Zero-Preview居然在2025年考研数学一(2024年12月21日刚刚结束)的模拟测试中拿到了126分的高分!要知道,这可是优秀研究生的水平了。我上网搜了一下2025年考研数学一真题,就拿第20道题练练手
解答过程:
我对了一下答案,结果是正确的,这是最新的考研数学题,很让人惊喜(测试一次性成功)
在逻辑推理方面,我特意找了一个刁钻的题目来“为难”它,看看它会不会被绕晕
题目:S先生、P先生、Q先生他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4 黑桃J、8、4、2、7、3 草花K、Q、5、4、6 方块A、5。约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉 P先生,把这张牌的花色告诉Q先生。这时,约翰教授问P先生和Q 先生:你们能从已知的点数或花色中推知这张牌是什么牌吗?于是,S先生听到如下的对话:
P先生:我不知道这张牌。
Q先生:我知道你不知道这张牌。
P先生:现在我知道这张牌了。
Q先生:我也知道了。
请问:这张牌是什么牌?
结果一次性正确
这次我重点测试了一下GLM-Zero-Preview的代码能力
题目1:用html+js+css设计一个赛博朋克主题的贪吃蛇游戏,保持经典玩法
这是GLM-Zero-Preview经过思考给出的设计方案(思考过程太长了,就不放了)
要设计一个赛博朋克主题的贪吃蛇游戏,可以采用HTML、CSS和JavaScript相结合的方式。以下是完整的实现步骤和代码:
1. HTML结构
创建一个基本的HTML页面,包含两个Canvas元素:一个用于背景动画,另一个用于游戏绘制。此外,添加一个用于显示得分的Div元素。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cyberpunk Snake Game</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="scoreDisplay">得分: 0</div>
<canvas id="bgCanvas" width="400" height="400"></canvas>
<canvas id="gameCanvas" width="400" height="400"></canvas>
<script src="script.js"></script>
</body>
</html>
2. CSS样式
设计赛博朋克风格的背景和元素样式,包括深色调背景、闪烁的灯光效果以及霓虹色彩。
body {
background-color: #000;
display: flex;
flex-direction: column;
align-items: center;
height: 100vh;
margin: 0;
overflow: hidden;
background-image: radial-gradient(at top, #000000, #444444, #000000);
}
#scoreDisplay {
color: #0ff;
font-size: 24px;
margin-bottom: 10px;
}
canvas {
border: 2px solid #ff00ff;
background-color: #000;
}
3. JavaScript逻辑
实现贪吃蛇的基本玩法,包括蛇的移动、食物的生成与吃掉、碰撞检测、得分增加以及背景动画。
const bgCanvas = document.getElementById('bgCanvas');
const bgCtx = bgCanvas.getContext('2d');
const gameCanvas = document.getElementById('gameCanvas');
const ctx = gameCanvas.getContext('2d');
const scoreDisplay = document.getElementById('scoreDisplay');
let score = 0;
let speed = 100; // 蛇的移动速度,毫秒
// 蛇类
class Snake {
constructor() {
this.size = 10;
this.body = [
{ x: 200, y: 200 },
{ x: 190, y: 200 },
{ x: 180, y: 200 }
];
this.direction = 'right';
}
draw() {
ctx.shadowColor = '#0ff';
ctx.shadowBlur = 5;
this.body.forEach((segment, index) => {
ctx.fillStyle = `rgba(0, 255, 255, ${1 - index / this.body.length})`;
ctx.fillRect(segment.x, segment.y, this.size, this.size);
});
}
update() {
const head = { x: this.body[0].x, y: this.body[0].y };
if (this.direction === 'right') head.x += this.size;
if (this.direction === 'left') head.x -= this.size;
if (this.direction === 'up') head.y -= this.size;
if (this.direction === 'down') head.y += this.size;
this.body.unshift(head);
this.body.pop();
}
changeDirection(newDirection) {
const opposite = { 'up': 'down', 'down': 'up', 'left': 'right', 'right': 'left' };
if (newDirection !== opposite[this.direction]) {
this.direction = newDirection;
}
}
eat() {
this.body.push({ x: -10, y: -10 });
score += 10;
scoreDisplay.textContent = `得分: ${score}`;
speed = Math.max(50, speed - 2);
}
checkEat(food) {
if (this.body[0].x === food.x && this.body[0].y === food.y) {
this.eat();
return true;
}
return false;
}
checkCollision() {
const head = this.body[0];
if (head.x < 0 || head.x >= gameCanvas.width || head.y < 0 || head.y >= gameCanvas.height) {
return true;
}
for (let i = 1; i < this.body.length; i++) {
if (head.x === this.body[i].x && head.y === this.body[i].y) {
return true;
}
}
return false;
}
}
// 食物类
class Food {
constructor(size) {
this.size = size;
this.generateNewPosition();
}
draw() {
ctx.shadowColor = '#f0f';
ctx.shadowBlur = 5;
ctx.beginPath();
ctx.arc(this.x + this.size / 2, this.y + this.size / 2, this.size / 2, 0, Math.PI * 2);
ctx.fillStyle = '#f0f';
ctx.fill();
}
generateNewPosition() {
this.x = Math.floor(Math.random() * 39) * 10;
this.y = Math.floor(Math.random() * 39) * 10;
}
}
// 背景动画
function drawBackground() {
bgCtx.fillStyle = '#000';
bgCtx.fillRect(0, 0, bgCanvas.width, bgCanvas.height);
for (let i = 0; i < 100; i++) {
const x = Math.random() * bgCanvas.width;
const y = Math.random() * bgCanvas.height;
const size = Math.random() * 2;
bgCtx.fillStyle = `rgba(0, 255, 255, ${Math.random()})`;
bgCtx.fillRect(x, y, size, size);
}
}
function animateBackground() {
drawBackground();
requestAnimationFrame(animateBackground);
}
animateBackground();
// 游戏初始化
const snake = new Snake();
const food = new Food(snake.size);
function gameLoop() {
ctx.clearRect(0, 0, gameCanvas.width, gameCanvas.height);
food.draw();
snake.draw();
snake.update();
if (snake.checkEat(food)) {
food.generateNewPosition();
}
if (snake.checkCollision()) {
alert('Game Over!');
document.location.reload();
}
setTimeout(gameLoop, speed);
}
// 键盘事件监听
document.addEventListener('keydown', event => {
if (event.key === 'ArrowUp') snake.changeDirection('up');
if (event.key === 'ArrowDown') snake.changeDirection('down');
if (event.key === 'ArrowLeft') snake.changeDirection('left');
if (event.key === 'ArrowRight') snake.changeDirection('right');
});
gameLoop();
4. 音效(可选)
可以添加音效增强游戏体验,例如蛇移动和吃掉食物的声音。首先,准备音效文件move.mp3
和eat.mp3
,然后在JavaScript中加载和播放:
const moveSound = new Audio('move.mp3');
const eatSound = new Audio('eat.mp3');
// 在snake.update()方法中播放移动声音
snake.update = function() {
moveSound.play();
// ... 更新逻辑保持不变 ...
}
// 在snake.eat()方法中播放吃掉声音
snake.eat = function() {
eatSound.play();
// ... 吃掉逻辑保持不变 ...
}
5. 进一步优化
• 得分显示:已经实现得分的实时显示。
• 难度提升:随着得分增加,蛇的移动速度逐渐加快。
• 视觉效果:蛇身和食物添加了阴影和透明度效果,背景有闪烁的灯光动画。
• 碰撞检测:实现了蛇与墙壁及自身的碰撞检测,游戏over时提示并刷新页面。通过以上步骤,一个赛博朋克主题的贪吃蛇游戏就完成了。玩家可以通过键盘方向键控制蛇的移动,吃掉食物增加得分,同时躲避碰撞,享受经典贪吃蛇游戏的乐趣。
以下是最终效果,注意这是一次提示直接结果,没有做任何修改,有人说贪吃蛇游戏有设么么了不起的,哈哈,重点就在这个赛朋克,很多推理模型也许可以一次实现贪吃蛇游戏,但是相信我你加上赛朋克三个字再试试
题目2:用html+js+css设计一个动态运行的太阳系,模拟宇宙的太阳系,要尽量感觉就像身处太空一样
这是GLM-Zero-Preview经过思考给出的设计方案
要创建一个动态运行的太阳系模拟,可以使用HTML、CSS和JavaScript结合实现。以下是完整的代码和说明:
HTML结构
首先,构建太阳系的基本HTML结构,包括太阳和多个行星,每个行星还可以有卫星和行星环。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dynamic Solar System</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="solar-system">
<div class="sun"></div>
<!-- 行星1 -->
<div class="planet" data-distance="400" data-speed="1" style="background-color: #ff8c00;">
<div class="ring"></div>
<div class="ring" style="width: 120px;"></div>
<div class="moon" data-distance="30" data-speed="5"></div>
<div class="moon" data-distance="40" data-speed="3"></div>
</div>
<!-- 行星2 -->
<div class="planet" data-distance="350" data-speed="1.5" style="background-color: #32cd32;">
<div class="moon" data-distance="20" data-speed="7"></div>
</div>
<!-- 行星3 -->
<div class="planet" data-distance="300" data-speed="2" style="background-color: #ff1493;">
<div class="ring"></div>
<div class="ring" style="width: 120px;"></div>
<div class="moon" data-distance="15" data-speed="10"></div>
<div class="moon" data-distance="25" data-speed="8"></div>
</div>
<!-- 行星4 -->
<div class="planet" data-distance="250" data-speed="2.5" style="background-color: #00ced1;">
<div class="moon" data-distance="10" data-speed="12"></div>
</div>
<!-- 行星5 -->
<div class="planet" data-distance="200" data-speed="3" style="background-color: #ba55d3;">
<div class="moon" data-distance="5" data-speed="15"></div>
<div class="moon" data-distance="15" data-speed="10"></div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
CSS样式
使用CSS设置太阳、行星、卫星和行星环的样式,以及背景星星效果。
/* styles.css */
body, html {
height: 100%;
margin: 0;
display: flex;
justify-content: center;
align-items: center;
background:
radial-gradient(circle, rgba(255,255,255,0.05) 1px, transparent 1px),
radial-gradient(circle, rgba(255,255,255,0.03) 2px, transparent 2px),
radial-gradient(circle, rgba(255,255,255,0.01) 3px, transparent 3px);
background-size: 40px 40px, 80px 80px, 160px 160px;
}
.solar-system {
position: relative;
width: 800px;
height: 800px;
}
.sun {
width: 150px;
height: 150px;
background-color: #ffeb3b;
border-radius: 50%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
box-shadow: 0 0 100px #ffeb3b, 0 0 200px #ffeb3b;
}
.planet {
width: 20px;
height: 20px;
border-radius: 50%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.moon {
width: 8px;
height: 8px;
background-color: #d3d3d3;
border-radius: 50%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.ring {
width: 150px;
height: 1px;
background-color: rgba(211, 211, 211, 0.5);
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) rotate(90deg);
}
.ring:nth-child(2) {
width: 120px;
background-color: rgba(211, 211, 211, 0.3);
}
.ring:nth-child(3) {
width: 90px;
background-color: rgba(211, 211, 211, 0.1);
}
JavaScript动画
使用JavaScript计算每个行星和卫星的运动轨迹,并实时更新它们的位置。
// script.js
const planets = document.querySelectorAll('.planet');
const moons = document.querySelectorAll('.moon');
let lastTime = Date.now();
function animate() {
const currentTime = Date.now();
const deltaTime = currentTime - lastTime;
lastTime = currentTime;
[planets, moons].forEach(group => {
group.forEach(celestial => {
const speed = parseFloat(celestial.getAttribute('data-speed'));
const angle = parseFloat(celestial.getAttribute('data-angle') || 0);
const newAngle = (angle + deltaTime * speed / 1000) % 360;
celestial.setAttribute('data-angle', newAngle);
const distance = parseFloat(celestial.getAttribute('data-distance'));
const x = distance * Math.cos(newAngle * Math.PI / 180);
const y = distance * Math.sin(newAngle * Math.PI / 180);
celestial.style.transform = `translate(-50%, -50%) translate(${x}px, ${y}px)`;
});
});
requestAnimationFrame(animate);
}
animate();
说明
1. HTML结构:创建了一个包含太阳和多个行星的容器,每个行星可以有卫星和行星环。
2. CSS样式:
• 设置了背景星星效果,使用径向渐变和多个背景层创造深空效果。
• 定义了太阳、行星、卫星和行星环的样式,包括大小、颜色和定位。
3. JavaScript动画:
• 使用
requestAnimationFrame
实现流畅的动画效果。• 根据每个 celestial object 的
data-distance
和data-speed
属性计算其运动角度和位置,并更新transform
属性以实现旋转效果。通过以上代码,可以创建一个动态运行的太阳系模拟,给人以身处太空的沉浸感。
程序一次性运行正确,没有做任何修改,没有bug,基本达到了我的要求,但是宇宙中太阳系的背景模拟的不太对,行星数量也不对,效果如下:
我想更进一步,以期达到我的我要求,所以再加了一些提示,提示如下:
提示:太阳系是漆黑的,太阳系有八大行星,8大行星的大小是不一样的,你要考虑太阳系八大行星符合实际大小比例,还有太阳系行星的运动轨道要清晰可见,最后太阳系每个行星的名字要显示出来,注意每个行星的轨道远近要符合实际,行星运行的速度要非常快,看起来行星在快速运动
这次实现效果如下,经过两次迭代,基本达到了要求
未来可期
当然,目前的GLM-Zero-Preview还不是完美的,毕竟还只是初代版本。智谱也坦诚地表示,它与OpenAI的o3模型相比还有不少差距。但他们也承诺,会持续优化迭代强化学习技术,让GLM-Zero变得越来越强大,将深度思考的能力从数理逻辑扩展到更多更通用的领域。
从目前的结果来看,GLM-Zero-Preview已经展现出了强大的潜力,特别是它的“自我反思和优化、复杂问题分解、尝试用不同方法解决问题”的能力,简直就像一个真正会思考的“大脑”。
想体验?链接给你准备好了!
智谱清言:
https://chatglm.cn/main/gdetail/676411c38945bbc58a905d31?lang=zh
智谱开放平台:
https://bigmodel.cn/dev/api/normal-model/glm-zero-preview
2000万token免费体验资源包领取地址:
https://zhipuaishengchan.datasink.sensorsdata.cn/t/7K
⭐星标AI寒武纪,好内容不错过⭐
用你的赞和在看告诉我~