LLM驱动的CAD:应用与挑战
将语言模型整合到传统的CAD流程中是否真的“轻而易举”,还是我们应该考虑可能阻碍采用的系统性挑战?让我们一起探索。
大型语言模型(LLMs)开始在机械计算机辅助设计(CAD)工作流程中找到角色。通过解释自然语言或高层次的规范,LLMs(包括较小的微调模型,或“SLMs”)可以帮助工程师完成从生成参数化模型到编写制造说明的各种任务。但将语言模型整合到传统的CAD流程中是否真的“轻而易举”,还是我们应该考虑可能阻碍采用的系统性挑战?让我们一起探索。
1、机械CAD工作流程中的LLMs
将LLMs集成到CAD工作流程中可以简化产品设计和制造的许多阶段。最近的研究将设计流程视为一系列语言翻译任务——本质上是在不同的设计形式表示之间进行转换[1]。例如,一个LLM可能会将文本规范转换为CAD脚本,然后将最终的设计转换为制造指令或模拟代码。GPT-4已经在端到端设计场景中进行了测试:一项研究使用它来创建一个简单的家具柜子,甚至是一个四轴飞行器框架,涵盖了从3D建模到零件采购、组装说明和性能评估的步骤[2]。

在这些实验中,LLM可以从文本提示生成设计规范,提出设计变体,建议制造步骤等——基本上充当整个生命周期中的CAD助手[2]。
LLM的一种具体应用是CAD代码生成。现代参数化CAD系统(如OpenSCAD、Onshape FeatureScript、CadQuery)以程序或脚本的形式表示模型。研究人员已经提示LLM从高层描述中编写此类代码。例如,给定一个提示“设计一个带有搁板的简单柜子”,GPT-4(通过OpenJSCAD,一个基于JavaScript的CAD库)生成了一个合理的脚本,其中包括有意义的变量名和注释[1]。

该模型甚至推断了未指定尺寸的合理默认值,展示了在设计提示中填补缺失细节的能力[1]。在交互式聊天设置中,LLM可以通过连续提示来完善模型——例如重新定位部件或调整大小——就像人类一样,但通过自然语言。这表明了一个新兴的工作流程,其中CAD工程师描述所需的部件或更改,而LLM输出相应的CAD编辑或代码。
除了纯粹的几何创建之外,LLM还可以协助其他与CAD相关的任务。它们已被用于生成文档,例如解释设计理由或生成制造的设置说明。它们可以帮助设计空间探索,通过生成基础设计的变体。例如,LLM可以根据基础模型和性能标准提出部分的不同配置(不同尺寸、特征等,通常称为“变量”)。它们还可以帮助将设计转换为制造工艺计划——例如,从CAD模型描述生成CNC刀具路径或3D打印机G代码——有效地将设计DSL(领域特定语言)转换为制造DSL[4]。尽管这些用途仍处于实验阶段,但早期结果表明,即使是一般用途的LLMs在正确引导下也可以与CAD数据格式进行交互[1]。
2、形式方法:L-系统、形状语法和LLM集成
在LLM兴起之前,工程师经常利用形式生成方法来进行设计自动化。L-系统(Lindenmayer系统) 和 形状语法 是两种规则形式主义的例子,它们编码了如何从简单形状构建复杂形状。L-系统本质上是一组递归生成几何的重写规则(著名地用于分形和有机图案),而形状语法定义了逐步转换初始形状的生产规则。这些方法允许表示一个设计空间——一系列可能的设计,而不是一个静态模型[4]。例如,一个简单的形状语法可能编码一个书架,其规则包括“将高度增加一个搁板单位”或“加宽一个隔间”,通过应用这些规则生成许多变体。L-系统和语法已被用于建筑、机器人技术和化学等领域,以系统地探索设计变体[4]。

形式语法的结构使其成为语言模型的自然补充。LLM擅长操作符号和遵循模式,因此它们可以潜在地学习或应用以文本形式表达的设计语法。一种集成方式是让LLM输出一组用于构建零件的语法规则。例如,LLM可以被提示生成一个类似桁架的梁的L-系统描述:它会生成一系列规则应用,当由CAD程序解释时,创建3D晶格结构。另一种方法是使用语法来约束LLM的输出。通过向模型提供一个形式语法(使用上下文无关语法或领域特定语言定义的方法),我们可以迫使LLM的输出在CAD约束范围内保持有效。研究人员已经开始设计针对LLM生成的DSL。最近的一个例子是AIDL,这是一种专为AI生成设计的分层CAD领域特定语言,嵌入了几何约束和模块化结构。通过引导LLM输出AIDL代码而不是无约束的代码,他们将精确的几何计算交给了求解器,让LLM专注于高层次的设计决策[3]。这种形式方法与LLM的结合可以产生更可靠的结果:LLM在语法的界限内“自由”生成,确保结果在CAD系统中是有效的设计。
在实践中,将LLM与基于语法的设计集成可能涉及向模型提供形状规则或参数模板的库。LLM可以根据用自然语言描述的目标选择要应用的规则(“使部件更高并添加遵循规则X的孔模式”)。由于形式语言紧凑地捕捉了设计意图,即使是一个较小的语言模型也可以利用它们来生成复杂的几何结构,而无需显式建模每个细节。LLM实际上充当了一个高层次的规划者,决定要调用哪些形式规则以实现所需的设计。这一领域正在进行积极的研究,探讨形状语法、基于图的CAD表示和L-系统如何为LLM驱动的设计生成提供结构化的骨架[4]。这可以显著增强LLM生成模型的可编辑性和有效性,因为语法规则内在地强制某些几何关系和约束。
3、苦涩的部分:在CAD中使用LLM的挑战
尽管有前景,当前的LLM在应用于机械CAD时面临重大技术挑战:
- 空间和几何推理
LLM缺乏对三维空间的内置理解。它们常常难以像CAD系统或工程师那样进行几何推理[3]。例如,在一次实验中,GPT-4错误地放置了柜子的部件——它将搁板垂直放置而不是水平放置,或者让板子相互交叉[2]。

模型本身并不理解搁板应该水平放置,或者部件不应该占据相同的体积。这源于LLM无法可视化或完全模拟物理;它只通过文本模式了解几何。另一个例子是,使用OpenJSCAD的LLM忘记了形状默认相对于自己的中心定位,导致放置不对齐,直到用户提示纠正[2]。复杂的空间关系(例如部件之间的配合、间隙、对称性)对于语言模型来说很难始终正确,除非经过多次迭代。
- 语法和语义正确性
当生成CAD代码(如OpenSCAD脚本、FeatureScript等)时,模型可能会产生语法错误或无效操作。用户报告说,朴素的ChatGPT输出对于OpenSCAD通常需要修复——缺少分号、错误的模块名称等,这表明模型并不完美地遵循DSL语法。即使语法正确,语义也可能出错:模型可能会调用不存在的函数或误用参数,特别是如果CAD API在训练数据中没有很好地表示的话。例如,GPT-4在生成Onshape的FeatureScript代码时遇到困难;由于缺乏对该专有语言的足够示例,它生成了不一致或部分正确的代码,需要手动调整[2]。这个挑战在较小的模型中尤为明显:如果SLM没有经过CAD数据的微调,它可能会幻觉函数或生成与真实CAD操作无关的乱码代码[10]。
- 长设计序列和规划
设计一个机械部件可能涉及一系列步骤(草图、拉伸、倒角、阵列等)。标准的LLM有有限的上下文窗口,可能在长序列中失去设计意图。它们可能会引入不一致的步骤或忘记早期的约束。一篇论文指出,LLM需要通过长距离规划来生成复杂的几何结构,否则它们往往会混淆或中途卡住[4]。将设计任务分解成较小的子任务(或使用分层DSL)是缓解这个问题的一种方法,但如果没有这种结构,原始的LLM在要求详细多步骤设计时可能会陷入困境。
- 缺乏工程领域知识
虽然LLM具有通用知识(GPT-4甚至知道杯子或齿轮的定义),但它们缺乏特定的工程判断。它们可能不会尊重可制造性约束或典型比例,除非被告知。例如,ChatGPT生成了一个“水壶”的模型,只是一个带盖的圆柱体——省略了喷嘴或把手,导致设计不可用[6]。它有一个基本的圆柱形容器的想法,但没有关于什么使水壶可用的见解。同样,它生成了一个“盘子”,没有底部表面,显然不了解盘子的功能要求。LLM还可能混淆需求:研究人员看到GPT-4有时会混设计参数与性能指标,表明它没有完全理解工程背景(例如,将目标重量视为输入维度而不是结果)[5]。如果没有仔细提示,LLM可能会生成违反物理或标准的设计(例如,螺栓不适合螺母,或不现实的材料选择)。
- 非确定性输出
实际上的问题是LLM是随机的。同一个提示可能会产生略有不同的输出[4]。在CAD中,这可能是有问题的——你希望给定规格的结果是一致的。需要额外的提示约束或少量示例来减少方差。此外,如果LLM用于迭代设计循环,确保可重复性(或至少验证每个输出)很重要,这样最终的CAD模型每次都能满足规格。这种LLM的不可预测性意味着工程师必须以审视的态度对待其输出,就像对待初级设计师的建议而不是真相一样。另一方面,虽然随机性本身可以作为一种功能——在生成“实时”设计时,这在生物和仿生建筑3D模型中很受欢迎。
- 工具和格式兼容性
机械CAD数据通常存在于STEP、IGES或专有二进制文件等格式中,这些格式对语言模型不友好。LLM不能直接操作这些低级表示。因此,我们依赖于中间的文本表示(脚本、参数化特征列表、基于JSON的CAD描述等)。这种间接性可能会引入错误或限制——不是CAD模型的每一个方面(例如,复杂的自由曲面)都可以通过简单的脚本轻松描述。此外,从文本到最终CAD文件的桥梁可能需要一个后处理步骤(例如,生成脚本并在CAD内核中运行以生成实体模型)。每个额外的步骤都是一个潜在的故障点,如果输出不完美。
- 训练数据限制
也许最大的挑战是高质量的训练数据稀缺,将语言与机械设计联系起来。不像互联网上丰富的自然文本,相对较少公开可用的CAD模型与描述或CAD代码的语料库。GPT-4有一些关于CAD概念的知识,但较小的模型可能没有任何知识,并且需要大量的微调,例如LoRA-based。一项研究发现许多开源LLM根本无法识别专门的CAD语言(CadQuery),返回无关或错误的答案,直到它们被微调或给出示例[10]。模型在CAD任务中的能力直接取决于它是否见过类似的数据。因此,如果底层模型在训练期间没有接触到参数化CAD代码或几何语言,它将表现不佳(“幻觉”几何或犯编码错误)。确保LLM具备足够的CAD素养是一个非 trivial 的障碍——它需要收集CAD操作、形状和技术描述的数据集,这些数据通常是专有的或难以收集。
在实际方面,数据隐私和格式的问题也出现了。工程公司对使用云上的LLM持谨慎态度,因为知识产权——设计数据是敏感的。这创造了对较小的本地模型(“SLMs”)的需求,这些模型可以微调公司自己的CAD数据。 但这样的模型可能需要数万个示例设计才能有效学习,而整理这些数据(并清理错误)成为一个主要任务。此外,任何将LLM集成到现有CAD软件中的尝试都必须处理版本控制(如何跟踪AI所做的更改?)、互操作性(AI驱动的工具能否可靠地输出标准CAD文件?)和用户界面(如何最好地允许工程师提示模型并审查其建议?)。这些问题是可以克服的,但它们增加了在实际生产环境中采用LLM的摩擦。
4、示例:LLM生成的机械零件OpenSCAD代码
为了说明语言模型如何生成参数化CAD内容,考虑一个使用OpenSCAD(一个开源的基于脚本的3D建模工具)的简单例子。OpenSCAD通过代码描述模型,使其成为LLM代码生成的直接目标。假设一个工程师要求LLM“创建一个带有两个螺栓孔的矩形支架”,指定了长度、宽度、厚度和孔径及间距等参数。一个有能力的LLM可能会输出如下OpenSCAD脚本:
// Parametric bracket generated by LLM
bracket_length = 60;
bracket_width = 20;
bracket_thickness = 5;
hole_diameter = 5;
hole_spacing = 40;
difference() {
// Base block of the bracket
cube([bracket_length, bracket_width, bracket_thickness]);
// Subtract two cylindrical holes
translate([bracket_length/2 — hole_spacing/2, bracket_width/2, 0])
cylinder(d = hole_diameter, h = bracket_thickness * 2);
translate([bracket_length/2 + hole_spacing/2, bracket_width/2, 0])
cylinder(d = hole_diameter, h = bracket_thickness * 2);
}
在这段代码中,LLM选择了有意义的变量名(例如,bracket_length、hole_diameter)并以清晰的方式构建了模型。基础支架是一个简单的矩形立方体,孔通过减去两个圆柱体(使用difference() CSG操作)创建。值得注意的是,代码是参数化的:尺寸和孔间距可以通过更改变量轻松调整。一个经过训练或提示了解OpenSCAD语法的LLM可以基于合适的描述生成这样的代码。事实上,GPT-4已经证明它可以为简单的对象(如这个)生成结构良好的OpenJSCAD/OpenSCAD代码,语法正确且有合理的默认值[1]。
除了生成,LLM还可以协助编辑CAD代码。如果工程师意识到支架需要第三个孔位于其他两个之间,他们可以指示LLM:“添加第三个孔在中间。” LLM将通过插入另一个圆柱体在支架中间来修改脚本(或输出差异)。由于初始代码是参数化编写的,这可能只是在支架中添加一个额外的translate/cylinder。同样,可以要求模型调整尺寸:“将支架改为80毫米长而不是60毫米”,模型可以直接调整bracket_length值(或输出让用户执行的指令)。这突出了一种有用的操作模式:自然语言提示用于CAD编辑,LLM将其转换为精确的代码更改。
让我们再看一个例子。参数化设计在设计空间创建中至关重要。然而,从零开始时,往往很难预先想到所有参数和变量。因此,设计师可能会从非参数化模型开始,观察其发展,然后使用LM将其转换为参数化模型。
// Non-Parametric Shelf Model
// Base
cube([80, 2, 30]); // Width, Thickness, Depth
// Top
translate([0, 100–2, 0])
cube([80, 2, 30]);
// Left Side Panel
cube([2, 100, 30]);
// Right Side Panel
translate([80–2, 0, 0])
cube([2, 100, 30]);
// Back Panel
translate([0, 0, 30–2])
cube([80, 100, 2]);
// Shelves
translate([0, 33, 0])
cube([80, 2, 30]);
translate([0, 66, 0])
cube([80, 2, 30]);
Press enter or click to view image in full size

从代码中可以看到,设计是非参数化的,任何更改都需要几乎全部重写。
现在,让我们让LM将非参数化设计转换为参数化设计。

模型输出如下:
// Parametric Shelf Model
// User-defined parameters
shelf_width = 80; // X-axis width
shelf_depth = 30; // Z-axis depth
shelf_height = 100; // Y-axis total height
material_thk = 2; // Panel and shelf thickness
num_shelves = 3; // Number of interior shelves (excluding top/bottom)
clearance = 0.1; // Small gap for fit
// Derived values
total_shelf_planes = num_shelves + 2; // bottom + top + interior
shelf_spacing = (shelf_height — 2 * material_thk) / (num_shelves + 1);
// Main shelf assembly
module shelf_unit() {
// Bottom panel
cube([shelf_width, material_thk, shelf_depth]);
// Top panel
translate([0, shelf_height — material_thk, 0])
cube([shelf_width, material_thk, shelf_depth]);
// Side panels (left & right)
cube([material_thk, shelf_height, shelf_depth]);
translate([shelf_width — material_thk, 0, 0])
cube([material_thk, shelf_height, shelf_depth]);
// Back panel
translate([0, 0, shelf_depth — material_thk])
cube([shelf_width, shelf_height, material_thk]);
// Interior shelves
for (i = [1 : num_shelves]) {
y = i * shelf_spacing;
translate([0, y — material_thk/2, 0])
cube([shelf_width, material_thk, shelf_depth]);
}
}
// Render
shelf_unit();
正如您所见,LM成功完成了任务,现在设计师可以轻松调整设计的参数。
值得一提的是,虽然上述例子是直接的,但更复杂的部分(涉及多个特征或条件逻辑)增加了难度。LLM有时会产生几乎正确但需要轻微修复的代码——例如,早期试验显示聊天机器人经常忘记OpenSCAD中的分号或误用坐标轴。像OpenSCAD脚本生成器(一个专门的基于GPT的工具)这样的倡议试图通过确保AI受限于已知模式并对接收到的输出进行验证来减轻这一问题[8]。在我的例子中,可以想象LLM内部检查圆柱体是否不会超出支架(通过确保翻译后的坐标保持在边界内),尽管当前模型只有在明确指导时才会这样做。尽管存在缺陷,从纯英语请求获取工作CAD代码的能力是LLM在CAD中能力的强大展示——它将高层次的想法转化为参数化模型,可以立即可视化和制造(例如3D打印)。
5、将LLM/SLM集成到CAD工具链中
CAD和ML工程师如何实际将LLM与现有的CAD工具结合起来?几种解决方案架构正在出现:
- CAD协作者(交互式助手)
在这种设置中,LLM被集成到CAD软件的UI中——例如,作为一个聊天窗口或命令接口。工程师可以提问或给出指令(“在这个板上打一个10mm的孔”),然后LLM调用CAD系统的API或生成相应的脚本来执行操作。这类似于IDE中的代码助手插件,但针对CAD操作。LLM可能是一个经过微调的较小模型,熟悉CAD API,因此知道创建草图、拉伸、倒角等的函数调用。关键在于将模型与实际CAD工具的能力联系起来。早期原型已经使用FreeCAD的Python API或Onshape的FeatureScript与ChatGPT实现了简单的结果[6],尽管需要大量迭代修正。助手架构通常涉及一个反馈循环:CAD软件可以返回错误或甚至结果图像给LLM,模型使用这些信息来改进其下一步建议。这种闭环集成已被证明是有效的——一项实验使用自动循环,LLM的CAD代码被执行,任何错误(或形状不匹配)被反馈以进行修正,显著提高了成功率[10]。
- DSL + 求解器混合方法
如前所述,一种有前途的架构是设计一个领域特定的CAD语言,适合LLM生成,并与几何求解器配对。AIDL项目是一个典型的例子:团队创建了一个自定义的CAD语言,让LLM指定高层次的几何(带有名称和约束),而外部求解器确保这些约束(对齐、相等性等)在最终模型中得到满足[4]。这将精确计算从LLM转移到求解器。架构看起来是:提示 → LLM(生成高层次的CAD DSL代码)→ 约束求解器(生成详细的几何)→ CAD模型。这种系统可以更稳健地处理空间关系。DSL的层次结构也使得可编辑性更容易:LLM可以改变一部分的描述而不必重写整个代码,求解器会局部调整模型[4]。总体而言,这种架构承认了LLM在数学/几何方面的弱点,并通过与传统CAD计算引擎结合来弥补。它是将AI驱动的创造力与CAD内核的可靠性相结合的蓝图。
- 微调的CAD模型(离线SLMs)
对于关心数据隐私或想要领域特定优化的公司,一个吸引人的解决方案是将较小的语言模型在内部CAD数据上进行微调。而不是依赖于巨大的云端模型,人们可能会在数千个CAD草图或脚本上训练一个7B参数的模型,使其成为一个专业的CAD助手。Autodesk和其他公司的研究表明,预训练的LLM 可以被微调以理解CAD几何,甚至在一些专业模型上表现更好[11]。在一种方法中,一个预训练的语言模型在工程草图的文本表示上进行了微调,使其能够预测草图的下一步或生成变体[11]。另一项研究(Text2CadQuery)构建了一个大规模的CAD模型与自然语言配对的数据集,并用于在文本到CAD代码任务上微调各种大小的模型[10]。他们发现较大的模型通常能生成更准确的CAD代码,但微调过的7B模型可以在该领域达到合理的性能[10]。这里的架构是:收集一个CAD特定的数据集(例如,模型的JSON或脚本加上描述),在该数据上微调模型,然后部署为内部服务。微调赋予模型对语法的熟悉度以及与机械设计相关的某些几何推理。缺点是训练和维护这种模型所需的努力和专业知识,但回报是能够流利地使用公司“设计语言”的AI。例如,一个专门为OpenSCAD设计的基于GPT的工具被创建出来,通过训练在许多OpenSCAD示例上并包括验证,可以生成无错误的脚本,指向每个CAD领域的高度优化的小型LLM[8]。
- 多模态和反馈驱动系统
一个强大的架构可以结合视觉或分析反馈来补充LLM。例如,一个系统可能使用LLM和视觉模型:LLM生成一个CAD模型,系统渲染为图像,然后由人类或AI视觉模块检查是否符合要求(形状匹配预期,没有碰撞等)。前面提到的CadQuery管道就是这样做的——在生成代码后,他们渲染了一个STL,并让模型(和人工验证者)确认形状的正确性[10]。如果形状错误,模型会被提示进行修复。这种AI在环仿真确保设计不仅在文本上正确,而且在几何上也是正确的。展望未来,具有内置多模态能力的LLM(如GPT-4V或未来的模型)可以设想通过分析预览图像或通过插件或工具进行计算来验证自己的输出。将经典CAD分析工具——例如有限元分析(FEA)或干涉检查——作为LLM的反馈提供者是另一个强大的想法。例如,LLM提出一个设计,求解器计算该设计在应力测试中失败,LLM相应地修改设计。结合LLM“大脑”和一套CAD/CAM工具(用于分析、可视化、优化)的架构可以显著自动化设计循环[1]。
在选择架构时,一个关键的考虑因素是规模/能力的权衡。大型模型(如GPT-4)在第一次尝试中表现出卓越的能力来生成正确的CAD代码——一份报告指出,GPT-4在没有微调的情况下在CAD生成任务中达到了超过90%的可执行代码成功率[10]。然而,依赖这样的模型有缺点:成本、延迟和数据治理问题。较小的模型(SLMs)可以在本地运行并针对特定的CAD领域进行微调,但它们可能需要上述的辅助策略(额外的提示、求解器集成、验证步骤)才能达到高准确性。因此,行业可能的解决方案是使用最大可用模型进行初步原型设计和理解可能性,然后将较小的模型提炼或微调用于生产使用,将其嵌入到一个强大的工具链中,以捕捉错误。在这些架构中,提示工程和指令设计的重要性不应被忽视——通过提供结构化的提示(例如,包括CAD DSL语法,或设计任务的分步分解),工程师可以显著提高LLM输出的质量[4]。
6、数据质量和数据集整理的重要性
为了让LLM在机械设计中发挥作用,它们所学习或被引导的数据质量至关重要。不同于一般的文本或代码,CAD数据体现了物理约束和特定领域惯例,模型必须掌握这些。一个高性能的CAD导向LLM必须在有意义的例子上进行训练或微调——例如,许多机械部件模型、它们的参数以及相关的描述或使用上下文。质量差或有限的训练数据会导致模型可能使用正确的语法但不理解设计的语义,从而导致无意义的输出或不现实的建议。
数据质量的一个方面是代表性。训练数据应涵盖模型将面临的各种情况。如果我们想让AI助手设计齿轮、支架、外壳等,我们应该包括这些部件的许多例子,有变化。一个精心策划的数据集是Text2CAD语料库,它结合了约178k的真实CAD模型(从CAD平台的建模操作序列中捕获)和每个模型的注释文本描述[10]。这个数据集为每个CAD模型提供了多种自然语言提示,从抽象摘要到分步指令,总计超过60万对文本-模型对[10]。在这样的丰富数据上进行训练可以让LLM学习文字和几何之间的对应关系——例如,“圆形孔”意味着圆柱体减法,或“4个均匀分布的孔”意味着360度模式特征。多样性(不同的提示风格、不同的部件类型)有助于模型不过度拟合某种说法。事实上,通过这个数据集,研究人员可以微调模型并广泛测试;它显示了更大的模型更好地利用数据,但即使是较小的模型在有针对性的数据上也有显著改善[10]。
数据质量还意味着准确性和一致性。如果模型是从CAD代码中学习的,那么这些代码必须是正确的并遵循一致的惯例。训练示例中的小错误(如缺少约束或应切开而不是连接的拉伸)可能会混淆模型。整理数据集通常涉及清理CAD文件,标准化输入/输出格式,并可能通过附加上下文来增强数据。在CadQuery研究中,团队通过让AI将中间CAD表示(JSON)翻译成CadQuery代码,然后通过执行和形状比较来验证这些代码,生成了大量的增强训练数据[10]。这种自动整理确保了微调数据大部分包含有效的代码,产生了预期的形状,从而提高了模型的可靠性。这是一个使用AI监督的流程来大规模整理数据的绝佳例子(170k模型在几小时内标注)[10]。
另一个关键因素是数据中的领域知识。CAD不仅仅是几何;它还涉及材料、标准、要求和使用案例。包含材料属性引用(如“钢与铝”)或标准组件(如“ANSI #8螺丝”)的训练数据可以使LLM更了解实际的设计选择。如果我们整理来自工程教科书或在线仓库(如McMaster-Carr目录中的部件描述与部件图纸)的部件描述数据集,LLM可以学习例如“法兰轴承”是什么,或“I型梁”的典型几何结构。高质量的数据集甚至可能包含分析结果——例如,一个设计与其FEA结果配对——以教授形状与性能之间的相关性。虽然这样的详细数据集很少见,但一些努力正在编制开放的工程数据库。
最后,数据质量不仅对训练重要,也对推理时的提示重要。在实践中,用户可能会在提示中提供一些上下文或示例(少样本学习)。确保这些示例选择得当(正确、有代表性、涵盖边缘情况)会影响输出。目前LLM输出中看到的许多限制可以追溯到数据缺口——例如,GPT-4知道一般事实但不知道具体的CAD API,因为这些不在它的训练中。通过补充模型参考文档或在公司CAD标准上微调它,我们实际上是在使用时间提供高质量的数据。一项研究的一句精辟的话:“模型依赖高质量的数据来生成准确和有价值的结果。重要的是确保训练数据代表制造行业的特定上下文和目标。”[4]。简而言之,如果你用无意义的数据训练你的CAD-AI,它将产生无意义的结果;但如果你用精心整理的工程智慧语料库训练它,它可以成为一个令人惊讶的熟练设计助手。
7、LLM驱动的CAD案例研究和项目
LLM和CAD的交汇是一个热门的研究领域,几个显著的项目已经展示了可能的成果:
- MIT的“LLMs for Design & Manufacturing”工作流程(2023)
MIT、哈佛大学和华盛顿大学的一组研究人员进行了一项全面的研究,使用GPT-4自动化设计到制造过程的每个阶段[2]。他们展示了两个端到端的例子:一个木制柜子和一个四轴飞行器机架。GPT-4被要求生成3D模型(在OpenJSCAD代码中),建议现成的零件(对于无人机,如电机和电池),编写制造说明(柜子面板的CNC刀具路径),甚至提供组装指南。结果好坏参半但发人深省。柜子经过几次迭代后成功生成,GPT-4处理了当用户指出错误时调整设计的任务(例如,修复搁板方向)[2]。对于四轴飞行器,GPT-4设法纳入了预建的组件模型,并围绕它们创建了一个基本的框架。最终的设计确实被制造出来了——柜子用木头制作,无人机框架3D打印——展示了现实世界的可行性。关键的教训是GPT-4可以处理许多设计步骤,但需要仔细提示和人工反馈进行修正[2]。该项目还突出了挑战,如GPT-4在隐含几何惯例上的挣扎,以及有时需要简化设计任务(四轴飞行器框架被简化为基本几何以确保成功)。总体而言,这个案例研究是一个里程碑,展示了LLM协调一个多步骤CAD工作流程,最终导致实物硬件。
- AIDL — AI设计语言(2024)
MIT CSAIL和Adobe的研究人员开发了AIDL,这是一种用于LLM的求解器辅助CAD语言[3]。他们发现传统的CAD语言是假设有人工介入(设计师获得视觉反馈并调整代码),这对于AI生成代码来说并不是理想的情况。AIDL引入了隐式引用几何和声明约束等功能,AI可以使用这些功能而无需精确的数字指定——解决这些约束的繁重工作由外部引擎完成。在实验中,他们使用GPT-4(和类似的模型)在少样本设置中从提示生成AIDL脚本。值得注意的是,即使模型以前从未见过AIDL(这是一个新语言),它在实现预期形状方面比标准OpenSCAD表现更好[3]。生成的对象更具可编辑性(得益于AIDL中的分层分组)并且更接近提示的意图。这个项目是一个语言/接口设计的案例研究,以适应AI:通过改变CAD编程语言以适应LLM的优势,他们实现了更好的结果。它指向了未来可能包含“AI友好”脚本选项的CAD软件。
- Autodesk的CAD-LLM用于工程草图(2023)
Autodesk的AI实验室探索了在工程CAD数据上微调语言模型。一篇题为“CAD-LLM”的论文专注于二维草图,这是许多三维模型的基础[11]。他们利用了一个参数化草图的数据集(点、线、弧及其约束),将其序列化为一个序列形式,并在该数据上微调了一个预训练的语言模型。目标是让模型生成新的草图或完成部分草图。他们报告说,微调后的LLM可以捕捉草图的结构,甚至在某种程度上推理约束[11]。例如,给定对称草图的一半,模型可以生成另一半。他们还引入了特定的指标(如“草图准确性”和“CAD F1分数”)来定量评估AI生成的设计与地面实况的匹配程度[11]。虽然完整的细节需要访问出版物,但这个案例研究展示了在专用CAD任务上训练较小模型的可行性——在这种情况下,一个远小于GPT-4的模型学会了处理机械草图,表现出惊人的性能[11]。这可能为AI在CAD中协助繁琐的部分铺平道路,比如创建重复的草图几何或建议约束。
- LLM4CAD和Text2CadQuery(2024–2025)
这些是针对文本到3D模型生成的学术努力。LLM4CAD(由Li、Sun、Sha的研究人员开发)被描述为一种多模态LLM方法,用于3D CAD生成,结合文本和一些图像或图形输入[9]。作者使用语言和部分几何(或用户草图)作为输入来引导3D模型的生成。如果成功,这意味着一个AI可以接受手绘草图加上口头描述并输出一个精炼的CAD模型,这将是设计师工作的非常自然的方式。Text-to-CadQuery,我们之前看到的方法,因其大规模数据标注和不同模型大小的评估而脱颖而出[10]。其背后的团队(很可能在NVIDIA或类似实验室)基本上创造了一个新模式,即CadQuery(一种Python CAD DSL)是模型的输出语言。他们展示了适当提示的GPT-4大多数时候可以生成正确的CadQuery代码,并进一步推动微调较小的模型来完成这项任务[10]。一个引人注目的结果:通过使用自动反馈循环(执行代码,纠正错误,验证形状),他们显著提高了可靠性[10]。这个案例研究验证了一个可以应用于其他CAD语言的工作流程,而不仅仅是CadQuery。它是一个构建“文本到CAD”模型的模板,具有高精度,结合了LLM智能和程序验证。
- 社区和商业努力
在学术界之外,创客社区和初创公司一直在尝试使用LLM进行CAD。我们之前看到的Hackaday实验中,一个爱好者引导ChatGPT创建了一个FreeCAD的飞机模型——它奏效了,但*“秘密成分是耐心”*,意味着需要大量的手动反馈[6]。这强调了在没有领域微调的情况下,当前的LLM需要一个人在循环中进行迭代纠正。在商业方面,Onshape等公司拥有公共数据集(例如Onshape的FeatureScript和Sketch数据用于研究),并且有传言说他们可能会在其云CAD平台上集成AI助手。开源CAD工具FreeCAD也可能受益于AI插件,事实上,社区中已有早期尝试使用GPT宏。同时,专门的服务已经出现——例如,YesChat推出的“OpenSCAD脚本生成器”,我们讨论过,它自称是一个可靠地从描述中编写OpenSCAD代码的AI[8]。这表明对领域特定的LLM解决方案的需求。大型CAD供应商(Autodesk、SolidWorks等)显然观察到了这些趋势;Autodesk自己的研究和一些CAD公司与AI公司的合作暗示我们将很快看到主流CAD中更多的AI功能。
在反思这些案例研究时,很明显我们现在处于早期阶段——主要是原型和概念验证。然而,过去两年的进步令人印象深刻。从需要几十个提示才能正确生成一个简单模型,我们现在有了能够在一次尝试中正确生成复杂部件的模型(在适当的训练下)。每个项目解决了问题的一个方面:数据、语言设计、工作流程集成或多模态输入。当这些线索汇聚时,未来的CAD工程师可能会常规地使用AI伙伴来卸载琐碎的工作,甚至激发创意解决方案。
8、结束语
将LLM应用于机械CAD和制造既具有挑战性又充满希望。一方面,工程中所需的精度和空间推理将当前模型推向极限——提醒我们LLM默认不是CAD专家。另一方面,我们已经看到,通过适当的支援(形式语法、约束DSL、微调数据和求解器的整合),语言模型可以在设计工作中发挥重要作用。它们可以从抽象想法中起草设计,帮助探索变体,并在设计、分析和制造的语言之间进行转换。较小的专用模型(SLMs)的使用很可能增长,特别是当组织寻求私有、高效的AI工具,专门针对自己的设计任务时。所有这一切的关键是高质量的数据和仔细的系统设计——我们越能将我们的工程知识编码给LLM,它就能越有效地应用这些知识。
对于CAD和ML工程师来说,前沿现在是完善这些技术并建立可靠的流水线:将LLM的创造力和灵活性与工程软件的严谨性结合起来。在实践中,一个增强的CAD工具链可能允许工程师花费更多时间在高层次的设计决策上,而AI则处理常规建模、文档甚至对要求的交叉检查。回顾的案例研究表明,从自动柜子设计到AI建议的无人机框架,已经可以实现很多。随着研究的继续(以及模型随着更多几何意识的提升),我们可以期待LLM成为机械设计的日常部分——不是取代人类工程师,而是增强他们的能力。最终愿景是CAD工作流程,只需说出或输入一个设计想法即可启动一个完整的设计过程,AI副驾驶确保该想法高效且正确地实现。实现这一点将需要克服所讨论的挑战,但迄今为止的进展表明,每个挑战都是在AI和CAD交汇处创新的机会。
汇智网翻译整理,转载请标明出处