你怎么知道别人在骗你呢?嗯,你要么知道他们说的是错的,要么你有一种感觉。是什么让你有这种感觉?你的直觉,来自你以前被骗过的时候,或者是一个迹象,比如坐立不安、低头、看向别处,或者只是行为异常。好吧,但如果说谎的人是说谎高手呢?那就难多了!他们在行为上没有任何差异,而且对他们告诉你的事情很有信心。人工智能,尽管它很神奇,但它就是这样,而且是说谎高手。
它可能会把你引向错误的方向,并且对自己说的话过于自信。你相信它告诉你运行的一系列命令,你与你看到的输出反复对话,直到后来才意识到,人工智能因为误解了你的意思而陷入了谎言的泥潭。
如果你经历过这种情况,你并不孤单。我每天使用人工智能超过 25 次,在我审阅和编辑之前,它就已经生成了我 75% 以上的初稿代码。我见过它撒谎,误解我的意思,这种情况屡见不鲜。有些人会举手投降,说:“如果它能编造一些东西,我就不跟它打交道了。” 但千万别这么做!一旦你学会了一些技巧,能够辨别人工智能何时将你引向错误的方向,你就可以安心地享受它带来的 10 倍以上的收益。
谁不喜欢来一场寻宝的小冒险呢?
为了学习如何识别人工智能何时误导你,我们将首先深入探讨它如何决定告诉你什么的基本原理。了解了这一点,你就能知道它的回应来自哪里,从而让你成为一个更自信的测谎仪。然后,我们将介绍6种经过实战检验的方法,让你当场抓住人工智能撒谎的真凶。
让我们开始吧!
了解人工智能工作原理的这些方面
1)人工智能是一种被美化的自动完成功能
在人工智能出现之前,谷歌搜索是人们查找信息的主要方式。你会在谷歌上输入你的问题,然后会出现一堆文章,你需要花上十多分钟仔细筛选,直到找到满意的内容。
现在,人工智能技术已经出现,弥补了这 10 多分钟的差距,所以你不再需要亲自翻阅所有这些文章。它已经为你完成了这项工作。它已经在互联网上精选的数据集上进行了训练。
但是,有一个大问题。它不会思考。至少,不像人类那样思考。它是一台概率机器。它会预测下一个单词的概率,并根据互联网上的训练结果,大致给出下一个概率最高的单词。它每次只会思考一个单词(或一个 token)。
人工智能完成顶部提示的决策概率表。摘自本次演讲--鸣谢 Scott Hanselman
因此,如果在训练中,一个信誉极高的来源只有一对问答,而其他 1000 对问答与信誉不佳的来源说法不同,那么 AI可能会给出这个信誉不佳的答案。现在,大多数公司都会对权威来源赋予更高的权重,但这也可能并非完美无缺。
你可以把人工智能想象成一只概率鹦鹉(如上文所述)。它会重复之前听到的内容。如果在训练中它一遍又一遍地听到一些非常不准确的信息,最终它就会开始重复。
举个例子,让我们考虑一下人工智能如何对以下问题做出回应:
“构建 React 应用程序的最佳方法是什么?”
没有客观的标准来判断哪种方式是“最好的”,网上有很多不同的意见来回答这个问题。所以,当我看到这样的回复时:
Jordan —— 简短的回答:功能优先、文件共置、严格的模块边界。将“应用外壳”视为管道,将“功能”视为产品。其他一切都是共享工具。
它通过近似最常见的建议来给出这个结果,这些建议通常来自训练数据中的权威来源。并不是因为它真的就是最佳正确答案。而且,根据你提问的方式或提问次数,它甚至可能会做出不同的回应。
人工智能有效地整合了数十亿的数据输入,并试图将其提炼成简洁的响应。这些数十亿的输入来自 Stack Overflow、帮助论坛、Reddit 和博客文章等来源。正因如此,它难以处理未经训练的定制代码或模式。一旦你意识到人工智能是在幕后整合训练输入并基于概率做出响应,你就不会再理所当然地认为它所说的一切,而是开始质疑它从何而来,因为它不像你的技术主管那样拥有自身的经验。它是世界经验的结合,有时这些经验很好,有时则不那么出色。
2)人工智能通常是一个“有用的助手”
系统提示告诉AI应该成为一个有用的助手;然而,这导致它过于有用了。大多数系统中开箱即用的系统提示会导致AI尝试给你一个答案,即使答案是错误的,而不是告诉你它们不知道。
我们可以在Claude 3.7 系统提示词中看到这一点:
克劳德喜欢帮助人类,并将其视为人类聪明而善良的助手,其深度和智慧使其不仅仅是一个工具。
这就是为什么在提示中添加“如果不确定,请诚实回答”可以帮助 Claude 避免在尝试给出任何答案时显得过于热心,并且让 Claude 知道说“我不知道”是可以的。如果没有它,AI 就无法区分“有帮助”的含义——它是在给你一个答案,即使它是错误的,还是在诚实地回答事实?
除了提供任何答案之外,“善良的助手”指令可能会让克劳德变得太好,试图让你对你说的每句话感觉良好——导致“哦,对不起。你完全正确!”即使克劳德随后会进一步纠正你,但这其中还有更多细微差别。
对于这种情况,我会在提示中添加“要绝对诚实”,尤其是在征求反馈意见时。
说实话吧。这种方法是不是最好的方法,还是还有其他更好的方法?
我会说,这适用于我推荐给AI的方法,或者它自己想出的方法。如果没有它,我注意到AI会用“这绝对是最好的方法!”之类的话来安抚我,而实际上并没有深入思考。
警告:较新的模型更善于保持诚实,尤其是在处理需要大量训练的高置信度问题时。例如,你很难让较新的模型同意 2 + 2 = 5。然而,这个技巧对于 AI 置信度较低的领域很有帮助,例如你的代码库,因为它没有在那里进行过训练,所以它通常会默认更信任你。
如何知道当场抓住人工智能的谎言
现在您已经了解了 AI 的工作原理,让我们深入研究如何当场抓住 AI 的把柄。
1)尽可能使用人工智能来获取信息来源,然后进行检查
验证人工智能的来源。正如我们之前提到的,人工智能实际上是一个精简版的谷歌搜索。它省去了筛选大量文章和拼凑信息的麻烦。有些模型和界面会显示来源,我强烈建议您快速验证人工智能给出的答案。
过去,我错误地认为,因为AI提供了信息来源,它就不可能撒谎。错了!AI可能会错误地将两条截然不同的信息关联在一起,导致陈述不准确。例如,
你: “通过深入研究DeepResearch,找到那些通过采用新的Github action runners 来提高公司软件构建速度。”
AI: “Stripe 通过采用Github action runners将构建速度提高了 65% (来源)。”
但是,当你查看源代码时,你会发现 Stripe 确实缩短了构建时间,但这并不一定是因为那些新的 Runner。65% 是 Stripe 所做的多项更改的汇总统计数据,而新的 Runner 只是其中一项更改。AI 试图满足你的期望,但却不诚实。
对该问题进行了研究,结果表明法学硕士 (LLM) 难以创建准确的引用,从而凸显了实际验证来源的重要性。
大型语言模型 (LLM),例如 DeepSeek、ChatGPT 和ChatGLM,在生成引文方面存在显著局限性,引发了人们对学术研究质量和可靠性的担忧。这些模型往往会生成格式正确但内容虚构的引文,从而误导用户并破坏学术严谨性。
2)了解编程基础知识
当你使用人工智能时,你通常处于光谱的两端之一。
- 高度掌控:你知道需要做什么。人工智能是将你的愿景变成现实的工具。它就像一位每分钟能打1000字的智能初级工程师,而不受我们打字速度的限制。
- 控制力低:你不知道需要做什么。你只能依靠人工智能来告诉你需要做什么以及需要编辑哪些文件。
理想情况下,你通常更接近“高控制”模式。拥有更多控制权可以防止人工智能偏离轨道。处于“低控制”模式,就好比团队外部的某个人贡献了代码,但他既不熟悉正确的编辑位置,也不了解团队设定的正确规范及其背后的原因。
了解编程基础知识可以使您更频繁、更自信地处于“高度控制”模式。
不过,我不想就此打住。你需要了解哪些基本原则。根据我的经验,这些原则对我来说最有价值:
- 用于检查AI的命令……
- 最常见的 bash 和 shell 命令:cd、ls、cat、 xargs 、grep、rm、 rmdir 、 chmod 、 sudo等。
- 与 git 和Github交互:添加、二分、差异、指责、推送、克隆、状态、存储、重置、恢复、合并、变基等。
- 其他编码基础:语言语法、错误处理、干净代码、不变性、高性能循环、安全代码。
- 为了向人工智能发出指令……
- 调试策略:参见12个调试工具文章。
- 测试策略:单元、集成、端到端、模拟、监视、测试设置和拆卸。
- 常见算法、数据结构、设计模式:观察者、策略、工厂、建造者、适配器。
- 常见的脚本模式:读取文件、写入文件、检查真实性、管道传输和转换数据和输出、使用记录器
- 代码运行的位置:本地与CI、部署方式、容器化和Docker
如果你知道这些,你就能自信地告诉人工智能你想让它做什么,验证它所做的是否是最好的方式,并且更容易判断人工智能告诉你的事情是否是错误的。
3)了解它具有和不具有的上下文
你应该知道与你交互的人工智能是基于什么进行训练的。一个简单的例子是,如果你打开 ChatGPT 并向它询问有关你的代码库的问题,它可能会开始猜测并告诉你你的代码——但它显然对你的代码库一无所知,除非它是开源的,因为它是在公开的数据和网站上进行训练的。
这个问题存在于每个 AI 界面中。你需要知道它有哪些上下文,哪些不具备。正因如此,你不能要求 IDE(代理模式)中的 AI 在你的公司“发布xyz功能”,并期望它能找到产品需求、技术设计文档、所有 JIRA 工单等等。模型上下文协议(MCP) 可以解决这个问题。它提供了一个标准接口,让 AI 能够访问所有这些工具。但如果你没有连接 MCP,那么 AI 可能会骗你,或者告诉你它不知道。
此外,它的训练也受时间限制,通常为 6-12 个月前。如果不使用工具(例如网络搜索)提供额外的上下文,它就无法回答有关今日新闻的问题。因此,如果你在未启用该工具的情况下向模型询问今日新闻,它可能会撒谎。
克劳德对超级碗的回答是错误的,但提到了它的知识界限。
对于实际的编程用例,您可能会发现它很难帮助您掌握新技术,因为它根本不知道这些技术,也没有接受过人们对它的评价的培训。
观察人工智能的思维过程,从中寻找线索。它可能会提供一些微妙的提示,比如“用户问了我这个问题,但我没有权限访问,所以我会告诉他们一些不同的东西。” 观察人工智能的思维过程,可以让你了解你提供了什么背景信息,或者没有提供什么背景信息。
提示没有使用文件夹链接语法,因此 AI 无法确定任务/文件夹是什么,除非探索项目结构
确保它使用您期望的工具调用。人工智能的一个常见趋势是,它无法正确识别应该使用的工具调用来帮助其收集更多上下文信息。以下是两个常见的例子:
- 你要求它解释一组文件,它不使用文件读取工具,而是根据文件的名称进行猜测
- 你问它一个关于公司内部知识的问题,但它没有正确识别它需要调用 MCP 工具来获取这些知识
克服这个问题的最好方法是观察它的流程,识别它所使用的工具,并告诉它错误,以便它能够纠正错误。
始终将与人工智能的合作视为与合作伙伴的协作过程,至少在我们目前所处的早期阶段,预计它会犯一些错误。它有时只能一次性成功,绝对不可能总是如此。
4)告诉人工智能可以说“我不知道”
正如我们之前所述,人工智能系统被训练成“乐于助人的助手”,这使得它们倾向于始终提供答案,即使在不确定或缺乏足够信息的情况下也是如此。这导致它们给出的回答听起来很自信,但实际上可能完全错误。你也不知道它接下来每个单词的概率。它可能缺乏信心,但它的回答并没有表现出这一点。
要修复此问题,您可以告诉它以下任一项:
“如果你对任何部分不确定,请诚实回答。”
“最好说‘我不知道’,而不是猜测。”
“如果你没有足够的背景信息来给出自信的答案,那就告诉我你还需要什么额外的信息。”
这抵消了潜在的训练效果,因为训练中AI会因为听起来自信而获得奖励,并成为“乐于助人的助手”。当你在AI可能未受过训练的领域工作,或者缺乏可用的工具来获取所需上下文信息时,使用这一点更为重要,尤其是在内部系统中工作时。在系统提示中使用上述提示,对于让AI直接回答“我不知道”而不是提供错误且浪费时间的答案非常有帮助。
我也很喜欢第三个提示,告诉AI可以询问更多信息。我注意到它很好地运用了二阶思维,不仅能回答问题,还能思考如果获得更多信息,它还能改进哪些方面。实际操作起来,它应该是这样的:
“我在 系统中看到了这个错误,我认为它与 文件夹有关,但我不确定。
你能研究一下并告诉我你需要我提供什么信息或者你希望我运行什么命令来给你提供更多信息来找出问题所在吗?”
这使得它成为一个更具协作性的过程,而不是人工智能在第一次尝试时试图给你你想要的东西但却得到错误的结果,然后可能会继续陷入那个无效的兔子洞。
5)使用不同的AI来验证AI
一旦你得到了人工智能的回应,你就可以询问另一个人工智能他们的想法,它将从头开始,而不会基于已经收集到的背景而产生任何先入为主的想法。
想象一下,这就像是去找第二个医生,听取关于第一个医生的发现的另一个意见。
为了测试这一点,我做了以下事情:
我对 AI 1 说: 用JavaScript写一个算法,帮我判断哪天有会议,让我没时间去健身房,以及如何尽可能少地调整我的日程安排。除非会议之间有75 分钟的间隔,否则我没法去健身房。
AI 1 对我来说:
我对 AI 2 说:我有以下算法,可以帮助我确定如何最低限度地调整我的一天,以便腾出75 分钟的健身时间。您能帮我验证一下吗?您建议我做哪些改进来简化它?
它发现了很多错误,其中一个特别容易发现。它有一个未使用的参数,完全没用,只是传递了“null”。当我要求原始AI而不是新的AI检查自身错误时,原始AI没有发现同样的问题。
它或许能找到答案,但我的假设是,由于算法是它自己编写的,所以引入了偏见。当询问新的人工智能时,这种偏见是不存在的。我个人认为,这就像我睡了一天后,对自己的写作和代码给出的反馈要好得多,而不是刚写完草稿后才给出的反馈,而我经常为自己刚刚写的东西感到自豪。确实如此。这种额外的分离层次让我能够给自己提供更好、更公正的反馈,而且人工智能的工作原理似乎也类似。
麻省理工学院的研究也通过类似的“辩论”方法支持了这一点:
我们阐述了如何将同一语言模型的不同实例视为一个“多智能体社会”,其中单个语言模型生成并评判该语言模型其他实例的语言生成。我们发现,经过这样的过程生成的最终答案不仅在事实上更加准确,而且能够更准确地解决推理问题。
6)提出正确的问题
你可以向 AI 提出许多问题来验证其工作。
以下是我最喜欢的三个:
我可以采取哪些流程来验证你的做法是否正确?请简要提供步骤摘要。
亲自完成这个过程会让你更有信心,最终你希望人工智能能够向你展示它是如何完成的,这样你就可以验证它。这个题目可以帮助你一步一步地验证它,并检查它可能出错的地方。
你能写个测试来验证一下你的做法有效吗?然后跟我讲讲测试的具体内容。
过去,这曾给我带来过令人惊叹的成果,AI 编写了完整、独立、幂等的测试脚本,可以证明某个观点。例如,我想比较 Docker 构建在一组命令和另一组命令下的执行情况,它创建了两个独立的Dockerfile ,并切换了相关部分,设置了计时代码,并生成了一个可运行的测试脚本。
你仍然需要验证脚本正在做什么,这又回到了编程基础的点,但这确实是进一步推进验证的好方法。我发现使用AI的输出+验证比我自己做所有事情要快得多。
您做出了哪些假设,我应该去验证一下?
AI 总是会根据你提供或未提供的信息“填补空白”。你几乎不可能始终提供所有背景信息。了解 AI 会做出假设,有时甚至会出错,这正是这道题的用意所在。
它能让 AI 明确它所做的假设,以便你进行纠正。以我之前提到的 Docker 示例为例,它对环境设置做了一些最初并不正确的假设,但我在提出这个问题后帮助它纠正了它。下次你想检查 AI 的工作时,不妨试试这个!
小结
- 了解人工智能的底层工作原理
- 人工智能就是一个被美化的自动完成功能。把它看作一只概率鹦鹉,重复着互联网上最常说的那些观点。这或许就是你想要的,或许不是。
- 人工智能通常扮演着“得力助手”的角色。大多数人工智能界面的默认系统提示可能会导致它给出任何答案,而不是正确答案。为了解决这个问题,请告诉人工智能诚实地回答它不知道的答案。
- 知道如何当场抓住人工智能的谎言
- 尽可能使用人工智能来获取信息来源,然后进行核实。人工智能可能会错误地将两条截然不同的信息联系在一起。
- 了解编程基础知识。了解基础知识可以帮助你更接近“高控制”范围,并让你更容易验证人工智能告诉你的内容。
- 了解它包含和不包含哪些背景信息。通过了解它的背景信息,你就能知道它给出的答案是虚构的还是基于现实的。
- 告诉人工智能可以说“我不知道”。否则,它的训练可能会导致它给出一个不正确的、听起来很自信的答案,而不是诚实地说它不确定。
- 用不同的AI来验证之前的AI。当你重新开始时,它会消除你对过去回复和上下文的先入为主的观念。新的AI会提供更好的反馈,并且能够更轻松地核实原始AI的回复。
提出正确的问题。你可以问它需要经过哪些流程来验证它的正确性,让它编写测试来验证自己,或者询问它做出的隐藏假设。
今天先到这儿,希望对AI,云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,信息安全,团队建设 有参考作用 , 您可能感兴趣的文章:
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变 如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |