文章目录
零、前言

Claude 3.7 Sonnet(下面简称 Claude 3.7)由 Anthropic 发布,"全球首个混合推理模型"的 AI 大模型,并且通过一系列令人瞩目的基准测试成绩,在数学、编程、跨模态推理等多个领域表现出色。
虚竹哥系统已经集成了 Claude 3.7 , 今天跟虚竹哥一起来测评这个大模型。
一、操作指南
操作指导
ChatGPT 4o国内直接访问地址:https://sass.xiaoxuzhu.cn/
输入购买的授权码即可。
选择 Claude 3.7大模型。

二、小球弹跳
提示词:
使用 p5.js(无需 HTML)创建 10 个彩色球在旋转六边形内弹跳的效果,考虑重力,弹性,摩擦和碰撞。

p5js在线测试网站:
https://editor.p5js.org/
生成的完整代码如下:
let balls = [];
let hexagon;
let gravity;
let rotationSpeed = 0.005;
function setup() {
createCanvas(600, 600);
// 创建六边形
hexagon = new Hexagon(width/2, height/2, 200);
// 创建引力向量
gravity = createVector(0, 0.2);
// 创建 10 个彩色球
for (let i = 0; i < 10; i++) {
let radius = random(15, 30);
let x = random(width/2 - 100, width/2 + 100);
let y = random(height/2 - 100, height/2 + 100);
let vel = p5.Vector.random2D().mult(random(2, 5));
let color = [random(100, 255), random(100, 255), random(100, 255)];
balls.push(new Ball(x, y, radius, vel, color));
}
}
function draw() {
background(30);
// 更新六边形旋转角度
hexagon.update();
// 显示六边形
hexagon.display();
// 更新和显示球
for (let ball of balls) {
ball.applyForce(gravity);
ball.update();
ball.checkCollision(hexagon);
// 检查球之间的碰撞
for (let other of balls) {
if (ball !== other) {
ball.checkBallCollision(other);
}
}
ball.display();
}
}
class Ball {
constructor(x, y, radius, vel, color) {
this.pos = createVector(x, y);
this.vel = vel;
this.acc = createVector(0, 0);
this.radius = radius;
this.color = color;
this.elasticity = random(0.7, 0.9);
this.friction = 0.98;
}
applyForce(force) {
this.acc.add(force);
}
update() {
this.vel.add(this.acc);
this.vel.mult(this.friction);
this.pos.add(this.vel);
this.acc.set(0, 0);
}
display() {
noStroke();
fill(this.color);
ellipse(this.pos.x, this.pos.y, this.radius * 2);
}
checkCollision(hexagon) {
// 获取六边形的顶点
let vertices = hexagon.getVertices();
// 检查与六边形的每条边的碰撞
for (let i = 0; i < vertices.length; i++) {
let start = vertices[i];
let end = vertices[(i + 1) % vertices.length];
// 计算球到线段的最近点
let closest = this.closestPointOnLine(start, end);
let distance = p5.Vector.dist(this.pos, closest);
// 如果距离小于半径,发生碰撞
if (distance < this.radius) {
// 计算法线向量
let normal = p5.Vector.sub(this.pos, closest).normalize();
// 计算球的反弹
let dotProduct = this.vel.dot(normal);
let reflection = p5.Vector.mult(normal, dotProduct * 2);
this.vel.sub(reflection);
this.vel.mult(this.elasticity);
// 稍微将球移出边界以防止粘连
let correction = p5.Vector.mult(normal, this.radius - distance);
this.pos.add(correction);
}
}
}
closestPointOnLine(lineStart, lineEnd) {
let line = p5.Vector.sub(lineEnd, lineStart);
let len = line.mag();
line.normalize();
let v = p5.Vector.sub(this.pos, lineStart);
let d = v.dot(line);
d = constrain(d, 0, len);
return p5.Vector.add(lineStart, p5.Vector.mult(line, d));
}
checkBallCollision(other) {
let distance = p5.Vector.dist(this.pos, other.pos);
let minDist = this.radius + other.radius;
if (distance < minDist) {
// 计算碰撞法线
let normal = p5.Vector.sub(this.pos, other.pos).normalize();
// 计算相对速度
let relativeVelocity = p5.Vector.sub(this.vel, other.vel);
let velAlongNormal = relativeVelocity.dot(normal);
// 如果球体相对于彼此远离,则不处理碰撞
if (velAlongNormal > 0) return;
// 计算反弹速度
let e = (this.elasticity + other.elasticity) / 2;
let j = -(1 + e) * velAlongNormal;
j /= 1/this.radius + 1/other.radius;
// 应用冲量
let impulse = p5.Vector.mult(normal, j);
// 使用质量(半径)来计算速度变化
let thisImpulse = p5.Vector.div(impulse, this.radius);
let otherImpulse = p5.Vector.div(impulse, other.radius);
this.vel.add(thisImpulse);
other.vel.sub(otherImpulse);
// 防止球体重叠
let overlap = minDist - distance;
let correction = p5.Vector.mult(normal, overlap / 2);
this.pos.add(correction);
other.pos.sub(correction);
}
}
}
class Hexagon {
constructor(x, y, size) {
this.pos = createVector(x, y);
this.size = size;
this.rotation = 0;
}
update() {
this.rotation += rotationSpeed;
}
getVertices() {
let vertices = [];
for (let i = 0; i < 6; i++) {
let angle = this.rotation + i * TWO_PI / 6;
let vx = this.pos.x + cos(angle) * this.size;
let vy = this.pos.y + sin(angle) * this.size;
vertices.push(createVector(vx, vy));
}
return vertices;
}
display() {
push();
translate(this.pos.x, this.pos.y);
rotate(this.rotation);
// 绘制六边形
stroke(200, 200, 255);
strokeWeight(2);
noFill();
beginShape();
for (let i = 0; i < 6; i++) {
let angle = i * TWO_PI / 6;
let vx = cos(angle) * this.size;
let vy = sin(angle) * this.size;
vertex(vx, vy);
}
endShape(CLOSE);
pop();
}
}

claude 3.7 表现出色------色彩鲜艳、碰撞精准、摩擦顺畅,完美满足各种需求。
而且输出的速度非常快,这个就牛逼了。
三、生成 Mandelbrot set 集
提示词:
用 p5js 生成 Mandelbrot set.


claude 3.7 生成很轻松,一次提示直接命中,干净利落搞定,毫不拖泥带水。
四、文本总结能力
提示词:
分析这份文档,有什么用处,有什么特色和优点

这份文档是一个为IT专业学生量身定制的、结构化、实用性强的论文研究指导工具。它通过提供清晰的阶段性指令和模板,帮助学生更规范、高效地完成学术研究和论文写作。
牛啊,这份文档是我们团队为了IT专业特别研究编写的AI指令提示词,总结的内容跟我们的初衷是一致的。
五、智力推理题
提示词:
一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石。问怎么才能拿到最大的一颗?
这是一个经典的"最优停止问题",类似于"秘书问题"或"相亲问题"。在这种问题中,我们需要在有限的选择中制定一个停止规则,从而最大化选择最佳选项的概率。
对于这个问题,结论如下:
在前 3 层(即第一层、第二层和第三层),我们只观察钻石的大小,并记录下这三层中的最大钻石,但不做出选择。
从第四层开始(即第四层到第十层),如果遇到比前三层最大钻石更大的钻石,就立即选择该钻石。
如果在第四到第十层之间都没有遇到比前三层最大钻石更大的钻石,那么必须在第十层做出选择,尽管此时不一定能选到最大的钻石。
采用这种策略,能够使我们获得最大钻石的概率最大,约为 39.87%。

claude 3.7 答对了,很像学霸。直接说重点,不啰嗦,直接说答案。"答案就是这样,爱信不信!"。
六、感受
Claude 3.7 为不同领域的用户提供了强大而灵活的支持,无论是技术性工作还是创意写作,均能高效完成任务。无论是快速代码生成、精确的学术写作,还是高效的创意创作,它们都能够充分满足不同场景的需求,成为众多专业人士的得力助手。
好用的功能太多太多,我就不在这个一一列举了,有兴趣的可以自行尝试。
有提供免费的授权码可体验~
有提供免费的授权码可体验~
有提供免费的授权码可体验~
私信虚竹哥,获取体验码~
国内可直接使用~
我是虚竹哥,目标是带十万人玩转AI。