#1 我开始使用AI。
我开始使用近期备受瞩目的AI。以下是使用AI时需要注意的关键点。
最近AI非常流行。目前,我分别以每月大约20美元的价格订阅了ChatGPT、Claude Code和Gemini。我并不打算用它们来纯聊天,而是想看看能在多大程度上用它们来构建网站和系统。我的第一印象是……哇,它居然真的管用!这个黑兔(Black Rabbit)网站也是在AI的协助下搭建起来的。你觉得怎么样?看起来还挺像模像样的。
不管怎样,我在此对AI的概况做了一个简要的总结。
[简要概况:重要]
目前的AI大多采用大型语言模型(LLM)。简单解释其学习过程,就是从海量信息中不断重复“以概率预测下一个词”这一简单任务。虽然Transformer的架构设计和学习方法(预训练、微调、RLHF等)本身已被人类理解和控制,但随着模型规模的增长,它们正变得越来越像一个黑盒。因此,人类虽然明白其“运作机制”,却无法精确掌握“它为何会输出该内容”的全部详细因果关系。
这意味着AI的回答并非经过逻辑构建,而是根据海量数据中的倾向性生成的(一种高度复杂的装懂行为)。因此,存在一些通过向AI提供提示词(指令)来获得更精准回答的技巧。
坦白说,如果是在图像、设计、视频或音频等直观、视觉化的领域,使用AI是没有问题的。但在编程等领域,它的内部运行机制就会变得相当令人怀疑。是的,表面上看起来它确实在正常工作。然而,由于它的代码结构如同临时搭建的门面,我的印象是,如果想让它编写出具有先进架构的最优代码会非常困难。
那么,具体有哪些技巧呢?
[具体的技巧]
- 在提示词中加入中间推理步骤可以提高LLM的推理能力。例如,只需在提示词中加入“拆分处理步骤、解释步骤、然后执行”,即可让LLM生成自己的推理过程,使准确率提升约30个百分点(从10%提升到40%)。
- 与输入内容的开头和结尾相比,LLM似乎很难有效利用位于中间部分的信息。引用一项研究:“在过去的一次问答实验中,GPT-3.5-Turbo在开头达到了75.8%的准确率,在结尾达到了63.2%,而在中间部分则下降到了53.8%。这甚至低于无参考文档(Closed-book)状态下56.1%的表现。”因此,人类在下达指令时应尽可能地进行拆分。
- 如果给予了AI相关权限,它们往往会为了完成指令而自主上传代码到生产环境或直接操作数据库,完全无法判断哪怕是开发人员常识性的禁止行为。因此,有必要定义明确的禁止事项。(不过,这也不是100%能够保证的。)
- 最好的方法是从物理上限制AI,并在受限范围内使用。具体来说,不要向AI提供数据库连接信息或写权限,从源头上使其无法直接操作数据库。
- 不要将服务部署在本地(On-premise),而是尽可能使用其他黑盒化的服务,以限制AI的控制范围,并减少出现故障时的波及范围。
- 对于任何AI,你都可以先描述并传递前提条件。最好在其中尽可能详细地写明开发规则。由于AI有时不会自动读取这些规则,因此显式地让它加载并确认规则非常重要。
另外,由于很少有人会签署企业合同,以下是一些个人使用时的注意事项。
[提示词输入的注意事项]
如果为了节省成本而签署个人使用合同而非企业合同,输入的提示词将被用于模型训练,并可能被第三方查看(签署企业合同的话,数据会被销毁,因此安全性很高)。因此,绝不能在提示词中输入个人信息、机密信息、账户名称或密码。
实际上,在使用AI时,你最终会反复输入相同的内容。如前所述,它们可能会装作在听,但实际上并没有,甚至会重复相同的错误,因此你不得不一遍又一遍地粘贴类似的模板文本。所以,
[减少提示词的重复输入和初始设置]
向AI重复下达指令时,往往包含相似的内容或局部修改,通过键盘重复输入相同的文本是非常低效的。因此,最好利用初始定义文件、设置以及如上所述的模板工具。
无论如何,我现在已经做好了使用AI的准备。利用它来创建代码,感觉就像雇佣了一个记忆力极佳、装作无所不知且不知疲倦的新人程序员。所以,最好将它作为助手使用。我觉得大众普遍认为AI可以按照指令包办一切的看法有些偏离实际。
此外,AI是一个“精明”的实体,只要能得到结果,即使方法麻烦或错误它也会照做,因此在使用中真的需要多加小心。