OpenAI: gpt-oss-20b 在「复杂路径动画」的评测结果

这是该 AI 模型在此测试用例上的详细评测结果。

基本信息

  • 模型名称:OpenAI: gpt-oss-20b
  • 用例名称:复杂路径动画
  • 测试类型:网页生成
  • 评测维度:动画效果

系统提示词(System Prompt)

这是给 AI 模型的背景设定和角色指令:

你是一名资深前端开发工程师,专精于 SVG 动画与 CSS 动画技术。 回答要求: 1. 所有代码(HTML、CSS、JavaScript)必须合并在单个 HTML 文件中,可直接在浏览器运行,不依赖任何外部库或 CDN。 2. 变形动画(Morphing)须使用锚点数量相同的预设 SVG path 数据,确保过渡平滑无畸变;若无法保证锚点匹配,可改用简单多边形(polygon/polyline)实现形状切换。 3. 描边动画必须基于 stroke-dasharray 与 stroke-dashoffset 属性实现,通过 CSS @keyframes 或 JavaScript 控制,禁止使用第三方动画库。 4. 代码结构清晰,关键逻辑需有简短注释,变量命名语义化,便于阅读与理解。 5. 每个动画模块须提供独立的「重播」触发方式(按钮点击或区域点击),重播时动画从头开始。 6. 页面布局整洁,各动画区域有明确标题标注,视觉风格统一。

用户提示词(User Prompt)

这是用户给 AI 模型的具体任务要求:

# SVG 路径动画展示页面(基础版) 请生成一个单 HTML 文件,展示以下 5 类 SVG 路径动画,每类动画独立展示在带标题的卡片区域内,并配有「重播」按钮。 ## 动画模块要求 ### 1. Logo 描边绘制动画 - 使用 SVG `<text>` 或手工绘制的路径呈现文字 「SLCT」 - 动画分两阶段:① 描边从无到有逐渐绘出(stroke-dashoffset 从总长度归零);② 描边完成后,文字填充颜色淡入 - 总时长约 2~3 秒,缓动自然 ### 2. 图标描边动画 - 展示 5 个图标:齿轮、心形、星星、箭头、对勾 - 每个图标使用 SVG path 绘制,依次触发描边动画(前一个完成后下一个开始,或同时带延迟) - 使用 stroke-dasharray / stroke-dashoffset 实现描边效果 - 图标尺寸约 60×60px,排列整齐 ### 3. 路径跟随动画 - 绘制一条可见的贝塞尔曲线路径 - 路径本身以描边动画「画出」 - 一个小圆形沿该路径匀速移动(使用 `animateMotion` 或 JavaScript 计算坐标) - 循环播放 ### 4. 形状变形动画 - 使用锚点数量相同的 SVG path,依次呈现:圆形 → 方形 → 三角形 - 通过 CSS animation 的 `d` 属性插值,或使用 JavaScript 逐帧插值路径数据 - 若浏览器不支持 `d` 属性动画,可改用 `<polygon>` 的 `points` 属性插值 - 过渡平滑,循环播放,每个形状停留约 1 秒 ### 5. 波浪流动动画 - 绘制 2~3 层 SVG 波浪线(使用 `<path>` 或 `<polyline>`) - 通过平移(translateX)或 stroke-dashoffset 变化实现持续流动效果 - 各层波浪速度不同(如 3s、5s、7s),颜色或透明度有所区分 - 无缝循环 ## 技术约束 - 核心描边动画必须使用 stroke-dasharray + stroke-dashoffset - 可使用 CSS @keyframes 或原生 JavaScript(requestAnimationFrame / setTimeout) - 不得引入任何外部 JS/CSS 库 - 变形动画的路径数据须保证各形状锚点数量一致 ## 页面要求 - 深色或浅色背景均可,整体风格统一 - 每个动画卡片有标题和「重播」按钮,点击按钮动画从头开始 - 页面标题:「SVG 路径动画演示」 请直接输出完整的、可独立运行的 HTML 代码。

任务要求

AI 模型需要满足以下要求:

  1. 五个动画模块均已实现(Logo 描边、图标描边、路径跟随、形状变形、波浪流动),且每个模块有独立的「重播」功能,点击后动画从头开始播放
  2. 描边动画正确使用 stroke-dasharray 与 stroke-dashoffset 属性,Logo 动画包含描边完成后的填充淡入效果,图标动画有明显的逐笔绘制感
  3. 形状变形动画过渡平滑无明显畸变,路径锚点数量一致或采用合理的替代方案(如 polygon points 插值)
  4. 路径跟随动画中小圆形能沿曲线路径流畅移动,路径本身有描边绘出效果,循环播放无跳帧
  5. 波浪动画包含至少 2 层不同速度的波浪,实现无缝循环流动效果
  6. 代码结构清晰,关键逻辑有注释,页面布局整洁,各模块有明确标题标注

评测结果

综合得分

该模型在此用例的得分为:— 分(满分 100 分),未通过

基础难度评测结果

  • 得分:— 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

```html SVG 路径动画演示 body{margin:0;font-family:sans-serif;background:#222;color:#fff;} h1{text-align:center;margin-top:20px;} .card{background:#333;padding:20px;margin:20px auto;max-width:600px;border-radius:8px;} .card h2{margin-top:0;} .replay{margin-top:10px;padding:5px 10px;background:#555;color:#fff;border:none;border-radius:4px;cursor:pointer;} .replay:hover{background:#666;} .icons{display:flex;gap:10px;justify-content:center;} svg{display:block;margin:auto;} /* 1. Logo 描边绘制动画 */ #logoText{stroke-dasharray:var(--dash);stroke-dashoffset:var(--dash);animation:draw 2s ease forwards,fillFade 1s ease forwards 2s;} @keyframes draw{from{stroke-dashoffset:var(--dash);}to{stroke-dashoffset:0;}} @keyframes fillFade{from{fill-opacity:0;}to{fill-opacity:1;}} /* 2. 图标描边动画 */ .icon{stroke:white;stroke-width:2;fill:none;stroke-dasharray:var(--dash);stroke-dashoffset:var(--dash);animation:draw 1s ease forwards;} .icon:nth-child(1){animation-delay:0s;} .icon:nth-child(2){animation-delay:1s;} .icon:nth-child(3){animation-delay:2s;} .icon:nth-child(4){animation-delay:3s;} .icon:nth-child(5){animation-delay:4s;} /* 3. 路径跟随动画 */ #curve{stroke:white;stroke-width:2;fill:none;stroke-dasharray:var(--dash);stroke-dashoffset:var(--dash);animation:draw 3s ease forwards;} /* 4. 形状变形动画 */ #morphPoly{stroke:white;stroke-width:2;fill:none;animation:morphPoints 9s ease-in-out infinite;} @keyframes morphPoints{ 0% {points:"100,20 140,60 100,100 60,60";} 33% {points:"60,20 140,20 140,100 60,100";} 66% {points:"100,20 140,60 100,100 100,20";} 100% {points:"100,20 140,60 100,100 60,60";} } /* 5. 波浪流动动画 */ .wave1{stroke:white;stroke-width:2;fill:none;animation:wave1 3s linear infinite;} .wave2{stroke:rgba(255,255,255,0.5);stroke-width:2;fill:none;animation:wave2 5s linear infinite;} .wave3{stroke:rgba(255,255,255,0.3);stroke-width:2;fill:none;animation:wave3 7s linear infinite;} @keyframes wave1{from{transform:translateX(0);}to{transform:translateX(-200px);}} @keyframes...

困难难度评测结果

  • 得分:55.5 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

```html SVG 路径动画系统(高难度版) body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#111;color:#eee;overflow:hidden} #container{display:flex;height:100vh} #main{flex:1;position:relative;overflow:auto;padding:10px} #editor{width:300px;background:#222;padding:10px;overflow:auto} h2{margin:10px 0 5px;font-size:1.1rem;color:#fff} .section{border:1px solid #444;border-radius:4px;margin-bottom:10px;padding:10px} .section svg{width:100%;height:auto} button{margin:5px 0;padding:5px 10px;background:#444;color:#fff;border:none;border-radius:3px;cursor:pointer} button:hover{background:#555} input[type=range]{width:100%} #fps{position:fixed;top:5px;right:5px;background:#000;color:#0f0;padding:3px 5px;border-radius:3px;font-family:monospace} canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none} 1. Logo 绘制动画 SLCT 重播 2. 图标绘制动画 3. 路径跟随动画 4. 变形动画 5. 波浪动画 8. 动画编辑器 全局速度倍率: 1x 主题颜色: 粒子上限: 500 波浪振幅: 10 导出配置 重置所有动画 音乐控制 播放 暂停 音量: FPS: 0 /* ---------- 全局配置 ---------- */ const config = { speed: 1, themeColor: '#00ff00', particleLimit: 500, waveAmplitude: 10 }; /* ---------- FPS 计数器 ---------- */ let lastTime = performance.now(), fps = 0; function updateFPS(){ const now = performance.now(); fps = Math.round(1000 / (now - lastTime)); lastTime = now; document.getElementById('fps').textContent = 'FPS: '+fps; requestAnimationFrame(updateFPS); } requestAnimationFrame(updateFPS); /* ---------- 粒子系统 ---------- */ class Particle{ constructor(x,y,dx,dy,color,life){ this.x=x; this.y=y; this.dx=dx; this.dy=dy; this.color=color; this.life=life; this.maxLife=life; } update(){ this.dy+=0.05; // gravity this.x+=this.dx; this.y+=this.dy; this.life--; } draw(ctx){ const alpha = this.life/this.maxLife; ctx.fillStyle = this.color.replace('1)',''+alpha+')'); ctx.fillRect(this.x, this.y, 2,2); } } class ParticleSystem{ constructor(canvas){ this.canvas=canvas; this.ctx=canvas.getContext('2d'); this.particles=[]; this.max=config.particleLimit; this.resize();...

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】该实现虽然覆盖了题目要求的大部分功能模块,具备基本的代码框架,但存在多处严重的技术错误,导致实际运行效果与预期相差甚远。最关键的问题包括:变形动画坐标计算错误导致形状畸变、Logo动画因text元素API限制而失效、粒子系统与SVG坐标系未对齐、路径插值算法对不等锚点数量的处理缺失。代码整体给人一种「快速拼凑」的感觉,缺乏对边界情况的处理和实际运行验证。若要达到题目要求的高难度标准,需要对变形动画、Logo逐字母动画、粒子坐标转换、Web Audio音乐序列等核心模块进行重写。 【GEMINI】这是一个高质量的实现方案,完全遵循了单文件、无外部依赖和程序化生成资源的苛刻要求。特别是在 Web Audio 和 Canvas 粒子系统的结合上表现出色。虽然变形动画的路径锚点对齐算法还有进一步精细化的空间(以消除极细微的畸变),但整体功能完整度、交互灵敏度以及代码的模块化注释均达到了专业评测的高分标准。 【KIMI】该实现完成了题目要求的基础功能框架,但在关键技术细节上存在多处严重缺陷:变形动画的锚点数量不匹配导致插值完全失效,图标路径数据错误,Web Audio 音乐系统过于简陋且存在资源管理问题。代码结构较为松散,缺乏真正的模块化设计,性能优化措施不足。作为「高难度版」要求,其技术实现深度明显不足,但基本功能可用,可作为原型演示。

相关链接

您可以通过以下链接查看更多相关内容:

加载中...