马年吉祥~蛇年的最后一篇:关于AI
关于提示词、氛围编程
前两年,AI 领域有一个很常见的“骗局”——逻辑误区:
Prompt 提示词/指令词。
尤其2022年 AIGC 生成图片、视频与生成文本的 NLP 自然语言模型、大语言模型还是分离的,
那时候“提示词”简直成了“魔法般的技术”。很多以次赚钱的立即推出各种“提示词课程”、“提示词工程师培训”。
为何不能让AI帮助生成“提示词”呢?
很简单的一个道理:AI/AGI 的进化之路,一定是让“AI越来越能理解人类”——从“自然交互”开始。
最自然的交互,就是直接理解文字(中间可以插入“语音转文字”)。
甚至进一步,人对需求的描述越来越简单。
这就是我常说的:AI 兼容人——聪明人兼容傻子。
(初学者、孩子们,不要依赖AI而放弃实践、成长的机会,最后被兼容成傻子)
很无奈?但这是必然的方向。
随着23/24年以来,越来越强调多模态的组合甚至从底层的融合——生成视频的模型,先经过语言模型,甚至本身就是多模态大模型,不再需要特别具体的各种指令,除了画面比例、风格等需要参数化的内容,最近SeeDance2.0就是典型的例子。
显而易见,必要的情况下,你的要求越具体、越明确,AIGC 的效果越满足你的需要。
——废话,你给人类安排工作不够具体,能满足你的期望是运气,不能满足才合理。
同理,
编程领域,所谓的“模糊的说出需求”然后去展开相对容易,因为它与生成图像、视频、音乐和小说不同
——“艺术是在一定的约束下发散”。
——产品设计和系统开发是“对笼统的需求,不断细化、明确,消除歧义后执行”。
解决这一问题的思路也很简单,我在23年写过一个 python 小工具做实验,
让AI模型在内置提示词的要求下让它一遍一遍的反复“思考”需求,尽可能“广度优先”,然后可能经过一个人类的确认,甚至讨论环节,然后再往下去分解任务,又展开去执行的过程。
模拟人类,让多个不同的“性格特点”的AI角色(提示词、RAG)互相挑战、争吵,甚至是多个不同的 AI 模型(MCP),以达到充分论证的目的。
——最后到什么程度可以进入下一步呢?
——交给人来审核、决定。
相当于是在应用层面模拟思维链,甚至“精分”。
但我很清楚的感受到:天花板永远在那里——AI不是真正理解,永远是根据统计计算的最优解。
当然,即便如此,在很长一段时间内、在大部分领域,它能带来的效率提、正收益,是显而易见的。
尤其,在产品设计尤其讨论、快速搭建原型、文档编写、测试用例的草稿等环节,往往只需简单修改,甚至是可以直接使用的。
在这个阶段,结果一定是我举的那个例子:
1个程序员只需要处理AI搞不定的问题,无论AI能力提升到什么程度,只要还需要“人”的干预:审核和决策、讨论提出意见、修正错误、在AI幻觉或者陷入死循环的时候打破僵局,那么就一定离不开人。
无非是效率高低问题:1 guy support 1000 AI NPC,还是 1 vs 100000000。
——过了那个阶段,就不需要人了。
——到时候不知道,是幸运,还是不幸。
简单分享一下25年使用 VibeCoding 的感受
很多人使用OpenCode,明显感觉接近年底的V3有了较大的效果提升(不过bug不少)
——AI没之前那么“偷懒”了,
——同时,明显体会到 token 爆炸。
显然,在“那条路上”,一步步迭代,“未来可期”。
然而,在我而言,依然是 AI 能力不足的问题——这很正常,因为我设计的是通用框架,对设计能力要求很高。
——AI 是相当不错的搭档,能够跟上我的设计思路,在很多细节上能帮我节约大量精力,而且很细心。传统情况下,要把这部分工作量分解给一般程序员是搞不定的,没个十年八年的团队经验和架构设计经验,很难跟上。
(在有的评论区会遇到设计模式、企业架构模式都不理解,没接触过的”编程爱好者“争论,都懒得理)
我一般的方法是不停引导AI深入讨论,直到基本没有明显的问题,先形成设计文档,我仔细检查、敲定,才让AI去生成代码。
但,已经不知道发生过多少次:对AI的代码,一眼发现问题,提出新的疑问,问 AI ——这样设计岂不是如何如何?如果这样是不是更好?
——AI化身马屁精,又觉得你说的有道理,应该如此,然后虚心接受。
——当然,也有钻牛角尖,死不悔改的情况:要么,它是真的遇到无法理解的部分,“来到了知识的荒漠”;要么,它甚至无法理解自己的行为是错误的,左右脑互搏。
其中有个最好笑的案例:26年以前的 Grok 的模型调优,推测是按阿三程序员性格调优的,说什么都是“你说得对,这里面的确有问题,按照这样如何如何解决。相信我,这次一定 100% 成功,你只要改了这一行,马上得到一个完美的、工业级的解决方案!”
——重复一百遍,脸皮非常厚。
偶尔,AI会陷入死循环,或者钻牛角尖,怎么都调不出来。
——只能亲自动手解决问题,然后让它对修改后的方案、代码继续讨论,跳过之前的问题。
最后,我向 AI 提了一个问题:
按照我设计的开发框架、最佳实践和约束,除了前端,80%的代码可以用模板生成。
那么,我是继续用 源代码生成器 + 模板生成,还是把这部分工作设计成 Skill(含模板)交给 AI 生成?
——不同 AI 答复:对,前者更优,稳定、可靠。
我继续问:这部分工作里,AI 的优势是“帮我写模板”?
——不同 AI 答复:没错,这正是 AI 的优势。
其实,这样的模板,一旦设计好,几乎不会变。
这就是现实。AI 擅长的部分,是那些“开放式”、“可以模糊”甚至“要求不高”的环节。
——能帮助人节约很多工作量。
至于具体的、确定的,需要可靠的部分,用传统代码生成,效率更高。
于是:优秀的开发框架、最佳实践,不需要 AI 出手,已经“淘汰”了大量程序员,吗?
——不,他们可以去做那些无法自动化的工作,扩大产出。
——除非,你所在的企业的产能过剩了。
二十年前如此,现在亦如此。
心有所感
PS:最近几个月,出于手痒,试试看在 AI 帮助下,把二十多年前的“最佳实践”+ 领域开发框架 + 分布式系统,重新设计、封装了一遍。
并用大量现有的成熟的开源项目,代替了当年手搓的一个个独立模块。
说实在的,挺爽。
只是对那些过分夸大AI能力、夸大对人尤其程序员的威胁的论调,有感而发,分享一点自己的感受。
近几年,一定会从AI辅助程序员,逐步变成少数程序员辅助大量AI开发。
要么需要人工介入调试、解决问题、低级确认和审核的工作;要么高级的引导、驱动AI去做的工作,还需要人。
——这个市场的需求如何满足?难道是某种新的岗位,如何培训有经验的程序员转岗?如何培训更低薪水的新手接替?
这也是实际的市场需求。
重点,从教育孩子的角度,尤其要注意:
在使用AI与依赖AI之间平衡,不要被“兼容成傻子”;
如何从AI手里争得成长的机会。