CATIA到底能不能接入Deepseek?
内容声明:
本文作为小狼近期对LLM与CATIA结合的一些研究心得分享,仅代表作者个人观点。本人纯理工男,非专业程序员,如有错误之处还请理解指正,谢谢!
成果展示:
而这,是AI将我的指令拆分成了三个命令:建草图,在草图里画线,拉伸凸台,与人类手动用CATIA建模时的理解与思路一致。并且,基于以上绘图思路,AI可以直接调用对用的Tools,执行CATIA中的建模动作,我们得到了以下模型。
往期回顾
今年早些时候,我曾经发过一篇文章,或者在某种意义上叫“论文”,里面详细介绍了如何通过调用Deepseek api,结合function calling功能,来实现简单的自然语言指令控制CATIA建模。
提出问题
仔细思考,你会发现,如果想让上述内容在实际的工作中产生意义,那么还存很多问题问题:1、我在问问题时,要预先假设,我这个问题,恰好是AI可以调用现有工具满足的;换句话说,我问它的问题,前提是我知道它能实现,这就给代码和对话带来了很大的局限性。2、很多时候,AI并不能直接调用某个工具完成用户的需求。它可能先调用工具A,再把工具A的处理结果用作工具B的参数,再把工具B的处理结果用作工具C的参数…最终满足用户的需求。那么这个调用工具的轮次是不确定的,也就是说,大模型并不知道什么时候应该停止调用工具,来最终给出回答3、和AI对话时,我们的输入,和它的输出,都只能是文字。而对于CATIA二次开发,我们用的都是一个object(通常是comobject),那就涉及到一个问题:比方说,create_sketch创建了一个草图,我们如何将这个草图传递给AI,让它作为拉伸凸台的轮廓参数。事实上,上面只是几个比较大的逻辑上需要解决的问题,我们在实际的执行中,还会有更多的细节需要处理考虑。
解决方案
为了解决上面的问题,首先我们会引入一个叫做Agent(智能体)的概念。如果说LLM只是一个会思考的大脑,那么Agent则是给这个大脑装备了“手脚”和“记忆”的功能。它可以自主理解任务、规划执行步骤、调用外部工具,从而自主地完成复杂的目标。对于文章开头提到的案例,这个Agent很简单,就是个简单的循环。对于用户的一个指令,我们通过和大模型的若干次交互,判断每次交互是否返回了Tools,来判断是否与大模型继续交互,还是停止交互,给出最终回答。而关于参数的传递,我们则是通过一个公共的字典实现:当一个sketch的comobject被创建时,我们将它存入字典,并生成一个uuid(一个独一无二的ID)作为它的key。这样后续tools通过这个uuid就可以访问到对应的sketch对象。对于上述全部内容,小编已经录制了6h的视频课程,包含了最终,课程以画凸台为例,大模型自动将用户“画一个六棱柱”的任务,像人类用CATIA建模一样,拆分成“创建草图”-->在草图里画六根直线,形成六边形-->用这个草图拉伸凸台;并于大模型多次交互,调用对应的Tools,最终实现用户的建模需求。