在 lablab.ai 举办的 AMD 开发者黑客松上构建——2026 年 5 月
我们解决的问题
走进任何一家小型 CNC 机加工车间,问问经理他们如何决定是否承接客户的订单。
答案几乎如出一辙:他们打印图纸,手动读取每一个尺寸,在车间里走一圈检查有哪些刀具可用,估算自己的机床能否达到所需的公差,然后在记事本上写下备注。整个过程每张图纸需要 30 到 60 分钟。对于一个每周收到 10 到 20 份询价单的繁忙车间来说,仅可行性分析一项就要耗费熟练经理 5 到 20 小时的时间。
有时他们会判断失误。接下一个订单,开始生产,做到一半才发现没有合适的丝锥,或者铣床无法满足某个关键特征的公差要求。零件报废,客户不满,机床时间白白浪费。
我们构建了 MachinaCheck 来彻底消除这个问题。
MachinaCheck 的功能
MachinaCheck 是一个多智能体 AI 系统。你上传一个 STEP 文件——这是客户发送给机加工车间的标准 CAD 格式——以及三个简单的输入项:材料类型、所需公差和任何螺纹规格。三十秒后,你就能收到一份完整的可制造性报告,精确告诉你能否制造这个零件、需要哪些刀具、缺少什么,以及在开始生产前需要采取哪些行动。
无需手动读取图纸,无需在车间里来回走动,无需猜测。
为什么我们选择在 AMD MI300X 上构建
在解释架构之前,这一点值得单独说明,因为它不仅仅是一个技术选择——更是一项业务需求。
制造行业的客户会签署保密协议。他们的 STEP 文件包含专有几何结构,代表着多年的工程工作和数百万美元的研发投入。医疗设备上的孔位布局或航空航天部件上的凹槽几何结构,都是机密知识产权。
将这些数据发送给 OpenAI、Anthropic 或任何商业 API 端点,都构成保密违规。没有商量余地。
AMD Instinct MI300X 彻底改变了这一局面。凭借 192GB HBM3 显存和 5.3 TB/s 的内存带宽,我们完全在本地运行 Qwen 2.5 7B Instruct。没有任何数据离开工厂的基础设施。没有任何 STEP 几何数据被传输到第三方服务器。客户的 IP 始终留在它该在的地方。
这就是“设计即隐私”在制造场景中的真正含义——不是一个勾选框,而是一项根本性的架构决策,让产品对真正的企业客户变得可行。
智能体架构
MachinaCheck 采用基于 LangChain 构建并通过 FastAPI 编排的五组件流水线。
组件 1——STEP 文件解析器(纯 Python,无大语言模型)
我们使用 cadquery(一个基于 OpenCASCADE 构建的 Python 库)直接解析 STEP 文件。这使我们能够进行数学上精确的特征提取:
- 所有圆柱孔及其直径和深度
- 平面及其面积
- 倒角和圆角
- 边界框尺寸
- 总体积和表面积
这种提取是 100% 准确的,因为它直接读取数学几何数据——无需视觉模型、无需 OCR、无需近似。一个 Ø6.0mm 的孔在输出中就是精确的 Ø6.0mm。
def extract_features(step_file_path: str) -> dict:
model = cq.importers.importStep(step_file_path)
shape = model.val()
bb = shape.BoundingBox()
holes = {}
for face in model.faces().vals():
adaptor = BRepAdaptor_Surface(face.wrapped)
if adaptor.GetType() == GeomAbs_Cylinder:
radius = adaptor.Cylinder().Radius()
diameter = round(radius * 2, 3)
holes[diameter] = holes.get(diameter, 0) + 1
return {
"bounding_box_mm": {"length": round(bb.xlen, 3), ...},
"holes": [...],
"flat_surfaces_count": len(flat_surfaces),
}
智能体 1——操作分类器(Qwen 2.5 7B)
提取出的几何数据以及用户输入(材料、公差、螺纹)被传递给通过 vLLM 在 AMD MI300X 上运行的 Qwen 2.5 7B。
该智能体回答:“制造这个零件需要哪些 CNC 操作和刀具?”
它应用了制造领域的知识:304 不锈钢需要硬质合金刀具。圆柱孔需要钻头,而不是立铣刀。±0.005mm 的公差需要精密机床,而不是标准铣床。
智能体 2——刀具匹配器(纯 Python)
该智能体不使用大语言模型。它查询工厂的刀具库存数据库,并将每种所需刀具与现有库存进行核对。纯确定性逻辑——数据库查找、比较、得出结果。数据库查询不需要大语言模型,在这里使用它们只会增加不必要的延迟和模型幻觉风险。
智能体 3——可行性决策智能体(Qwen 2.5 7B)
匹配结果被送回 Qwen。该智能体对整体情况进行推理,并生成一个结构化的决策:
{
"decision": "CONDITIONAL",
"confidence": "HIGH",
"reason": "All tools available except M10x1.5 tap",
"action_items": ["Purchase M10x1.5 tap ($15)"],
"risk_flags": ["Verify spindle speed for Steel 304"],
"estimated_setup_hours": 2.5
}
智能体 4——报告生成器(Qwen 2.5 7B)
最终智能体将所有信息整合成一份专业的可制造性报告,包含总体状态、执行摘要、零件分析、工具状态、机器状态以及最终建议。
AMD 技术栈
在 AMD MI300X 上通过 ROCm 和 vLLM 运行 Qwen 2.5 7B 非常简单。AMD 开发者云上的 vLLM 快速启动镜像已预配置好一切。
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--dtype float16 \
--gpu-memory-utilization 0.5
通过设置 `gpu-memory-utilization 0.5`,我们使用了约 96GB 的可用 192GB 显存,留有充足余量。智能体调用的推理延迟平均低于 3 秒。
LangChain 通过兼容 OpenAI 的端点连接到 vLLM:
from langchain_community.llms import VLLMOpenAI
llm = VLLMOpenAI(
openai_api_base="http://localhost:8000/v1",
openai_api_key="EMPTY",
model_name="Qwen/Qwen2.5-7B-Instruct",
temperature=0.1,
max_tokens=1000
)
结果
使用来自 GrabCAD 的真实 STEP 文件进行测试:
- 特征提取:对于最多包含 50 个特征的零件,耗时不到 1 秒
- 完整流水线(全部 4 个智能体):端到端耗时 25 到 40 秒
- 决策准确性:对所有测试零件的可制造性评估均正确
- 隐私保护:零字节的 STEP 几何数据被传输到外部
经验教训
仅在需要推理的地方使用大语言模型。智能体 2(工具匹配)是纯 Python 实现。在那里使用大语言模型会更慢、更昂贵且更不可靠。数据库查询才是数据库查找的正确工具。
面向结构化输出的提示词工程至关重要。要让 Qwen 可靠地输出有效 JSON,需要在提示词中设置细致的规则——明确说明圆柱孔需要钻头而非立铣刀,直径必须精确匹配,丝锥仅在指定螺纹时出现。
AMD MI300X 在此用例中表现确实令人印象深刻。192GB 的显存意味着我们可以在需要时运行更大的模型。对于生产部署,Qwen 2.5 72B 可以轻松容纳,并提供显著更优的推理质量。
立即尝试
- HF Space:huggingface.co/spaces/lablab-ai-amd-developer-hackathon/MachinaCheck
- GitHub:github.com/SyedMuhammadSarmad/Manufacturing-Agent
上传任意 STEP 文件,即可查看完整流水线的实际运行。
由 Syed Muhammad Sarmad 和 Sabari Doss R 在 2026 年 5 月的 AMD 开发者黑客松上构建。
技术栈:Qwen 2.5 7B · AMD Instinct MI300X · ROCm · vLLM · LangChain · cadquery · FastAPI · Next.js · Hugging Face Spaces