#生成式AI

2周前
转译:为什么生成式 AI 编程工具和智能体对我没用 作者:Miguel Grinberg 人们总是问我,我是否使用生成式 AI 工具来编程,以及我对它们有何看法。因此,我决定将我的想法写下来,这样以后再有人问起,我就可以直接把这篇文章甩给他们,而不必每次都重复自己的观点。 从标题你大概已经猜到,这不会是一篇吹捧 AI 的博文。但它也不是一篇反对 AI 的文章,至少我不这么认为。市面上已经有太多 AI 吹和 AI 黑写的文章了,我觉得没必要再多我这一篇。虽然在这个话题上我绝非中立,但在这篇文章里,我只想从纯粹技术的角度,分享我个人使用这些工具的真实体验。 AI 并不更快 说真的,生成式 AI 工具对我没用的最主要、也是最重要的原因是:它们并没有让我写代码变得更快。就这么简单。 使用生成式 AI 编程工具来为我写代码,听起来很容易。如果是一个 AI 智能体,那就更方便了,它在我做别的事情时就能直接编辑我的文件。原则上,这一切听起来都很美好。 但问题在于,我需要为这些代码负责。我不能盲目地把它们添加到我的项目中,然后祈祷一切顺利。只有在我彻底审查并确保完全理解了 AI 生成的代码之后,我才可能将其整合进我的项目。我必须有信心在未来能够修改或扩展这段代码,否则我就不能用它。 不幸的是,审查代码实际上比大多数人想象的要困难得多。审查一段不是我写的代码,至少要花掉我与亲手写这段代码相同的时间,甚至更多。我们行业里有句名言,大意是“读代码比写代码更难”。我记得最早将此概念理论化的人是 Joel Spolsky(Stack Overflow 和 Trello 的创始人),在他的文章《有些事你永远不该做,第一部分》中提到了。 你可能会说,可以把 AI 写的代码当成一个“黑箱”。我想,你可以说服自己,只要代码能按预期工作,就可以安全使用,无需审查,这样就能提升一些生产力。但在我看来,这是极不负责任的,因为如果这段代码将来出了问题,AI 是不会承担任何责任的。无论有没有 AI,我永远是我产出的代码的第一负责人。在我看来,承担如此巨大的风险是疯狂的。 这一点在我从事的某些工作中尤为重要,因为这些工作涉及签署合同、法律义务和金钱交易。如果我是以专业人士的身份被雇佣,那我别无选择,只能做到专业。AI 工具无法帮我赚更多钱,也无法让我在更短时间内完成工作。我唯一能通过它实现这些目标的方式,就是牺牲工作质量并引入风险,而这是我绝不愿意做的。 AI 不是生产力倍增器 我听过有人说,生成式 AI 编程工具对他们来说是生产力的“倍增器”或“赋能器”。基本上,持这种观点的人声称,使用生成式 AI 后,他们能工作得更快,也能处理更复杂的问题。可惜的是,这些说法仅仅基于使用者自身的感觉,并没有确凿的数据来支持。我猜,或许有些人审查代码的效率比我高,但我对此表示怀疑。我认为真实情况是,这些人之所以能节省时间,是因为他们只对 AI 生成的代码进行抽查,或者干脆跳过了整个审查阶段——正如我上面所说,这对我来说是绝对无法接受的。 另一个我常听到的论点是,当你需要用一种不熟悉的语言或技术编写代码时,生成式 AI 会很有帮助。对我来说,这同样没什么道理。作为一名软件工程师,我最享受的部分就是学习新事物,所以“不懂”从来都不是我的障碍。你越是练习学习,学习的速度就会越快、越容易!近年来,我为了不同的项目,不得不学习了 Rust、Go、TypeScript、WASM、Java 和 C#,我绝不会把这个学习的过程委托给 AI,哪怕它能帮我节省时间。当然,它也省不了,原因还是上面那些——我要为我产出的代码负责。抱歉,我在这点上有点啰嗦。 AI 代码不同于人类代码 前几天我和一个朋友聊起这些观点,他问我,既然如此,为什么我乐于接受人们为我的开源项目所做的贡献呢?那些不也是别人写的代码吗?为什么人类写的可以,AI 生成的就不行? 真相可能会让一些人感到震惊:用户提交的开源贡献其实也并不能节省我的时间,因为我同样觉得必须对它们进行严格的审查。但是我享受与那些对我的项目感兴趣并花时间报告 bug、请求新功能或提交代码修改的用户合作。这些互动首先是新思想的源泉,它们直接帮助我把工作做得更好。这正是我热爱开源工作的地方! 我的朋友仍然不服气,他建议我可以并行启动一堆 AI 智能体,为我所有未解决的 bug 创建拉取请求(PR)。“这会改变游戏规则的!”他说。不幸的是,这只会花掉我的钱,并且可能让我变得更慢,原因已如前述。即便我们假设 AI 编程工具已经足够成熟(实际上还差得远),能够在很少或没有监督的情况下修复我项目中的问题,我仍然是那个瓶颈,因为所有这些代码在合并之前都必须经过我的审查。 AI 编程工具唾手可得,其不幸的一面是,现在一些用户也用它们来生成低质量、敷衍了事的拉取请求。我已经收到过一些这样的 PR,有趣的是,当我开始阅读那些未经真人编辑和润色的 AI 代码时,一种“恐怖谷”效应在我心中油然而生。当我遇到这类 PR 时,我会开始向提交者追问他们代码中那些奇怪的部分,因为我认为他们需要为自己想要合并的代码负责。但他们,通常很少回应。 AI 不等于实习生 许多 AI 倡导者说,你应该把你的 AI 编程工具当作一个渴望取悦你的实习生。我认为说这话的人,大概从没带过实习生! 在初期,将工作委派给实习生会导致你的生产力下降,原因和我上面列举的差不多。实习生需要大量手把手的指导,他们产出的所有代码在被接受前都需要仔细审查。 但是,实习生会学习并随着时间的推移而进步。你花在审查代码或向实习生提供反馈上的时间并没有被浪费,这是对未来的投资。实习生会吸收你分享的知识,并将其用于你之后分配给他们的新任务中,随着实习期的推进,对他们进行密切监督的需求会逐渐减少。最终,实习生常常因为成长为成功的独立贡献者而被公司聘为全职员工。 而一个 AI 工具,最多只能算是一个患有“顺行性遗忘症”的实习生,这可不是什么好实习生。对于每一项新任务,这个“AI 实习生”都会重置回原点,什么也没学会! 结论 我希望通过这篇文章,我已经清楚地阐述了我在工作中应用生成式 AI 编程工具时遇到的技术性问题。 根据我的经验,AI 编程这回事,天下没有免费的午餐。我相信那些声称 AI 让他们更快或更高效的人,是为了实现这些收益而有意识地选择放宽了他们的质量标准。要么是这样,要么他们这么说,只是因为他们自己能从向你推销 AI 中获利。
1个月前
问:老师 我下学期要在国内的一所高职院校开设一门AI通识课(公共基础课),但需要全程在机房上课。现在无法平衡理论和上机操作,想听听您的建议(通识内容都是理论 无法实操。实操多又兼顾不了理论,高职院校的学生不需要了解太多理论) 答: 对于大学课程我也不太懂,就我的经验, AI 通识课,重点可以放在生成式 AI 的应用上,生成式 AI 的应用主要又在于文本的生成和图片视频的生成。它们的共同点是都要用好提示词。 所以上机操作,可以用 AI 完成系列贴近实际又有挑战的任务,比如: 初阶 - 问答:向 AI 提问,让 AI 回复,了解生成式 AI - 摘要:将长文本摘要,但是要注意长度,了解上下文窗口 - 翻译:将文本翻译成不同语言,但是要注意上下文长度,以及对比不同提示词翻译效果的差异 进阶 - 写作:利用提示词对文章润色、扩写、使用不同风格写作等等 - 数据提取:从大量文本中提取有价值的、结构化的数据 - 搜索:学习如何使用 AI 搜索,普及 RAG 的概念 高阶 - 写代码:借助 AI 写个简单的网页应用、Python 脚本,不会编程也能做出有价值的应用 - 数据分析统计:借助 AI 分析数据 以上只是我随便列的一些任务,实际可以灵活调整。 理论其实还好,做中学本身就是很好的学习 AI 的方法,重点是培养学生的兴趣,让他们知道学习 AI 能解决生活中的问题,这样他们会自主的去补齐所需要的理论知识。 以上仅作为参考。
3个月前
如何写好提示词?手把手教你用提示词玩转 AI(1) 如今,AI 已经无处不在,从聊天机器人、内容创作、程序开发,到工作学习中的各种辅助工具。但你有没有遇到过这样的情况? • AI 给出的答案文不对题? • 输出的内容一团糟? • 生成的文本不够具体,无法直接使用? 这些问题的根源,往往并不在 AI,而在于你写的「提示词」(Prompt)还不够清晰。要知道,AI 并不能真正理解你脑子里在想什么,它只能根据你输入的提示词,猜测你的需求。 本文将带你一步步学会写出高质量的提示词,从此让 AI 成为你的好帮手! 什么是提示词(Prompt)? 提示词是你告诉 AI 做什么、怎么做的一段描述。一个好的提示词,通常由四个关键要素组成: • 指令(Instruction):你想让 AI 做什么? • 上下文(Context):AI 完成任务需要哪些背景信息? • 输出格式(Output Format):你希望结果以什么样的形式输出? • 角色(Role):AI 应该以什么样的身份来执行任务? 掌握了这四个要素,你就能精确地控制 AI 生成的结果。 一、指令(Instruction)—— 清晰明确是关键! 指令到底是什么? 指令就像是你给 AI 下达的命令或提出的问题,比如: • 「帮我总结一下下面这篇文章的核心观点。」 • 「写一篇介绍人工智能发展历史的科普文章。」 但并不是所有的指令都是好指令。 什么样的指令算好的? ❌ 不好的指令示例: • 写篇文章 • 做一个小游戏 • 起个好名字 这些指令模糊不清,让 AI 无法确定你到底想要什么。 ✅ 好的指令示例: • 写一篇探讨人工智能在医疗诊断中应用的 1000 字文章,面向中学生,语言简单易懂,科普风格。 • 写一个可以在网页上运行的 3D 贪吃蛇小游戏,要求画面流畅,支持键盘操作。 • 为我的 AI 写作产品分别取 3 个创意、易记、突出主题的名字。 可以看到,清晰具体的指令能极大提升 AI 工作效果。 二、上下文(Context)—— 让 AI 更懂你 上下文是什么? 上下文指 AI 完成任务时所需要的额外背景信息,比如你正在写的论文草稿、公司过去的数据资料、具体任务的相关参考材料等。 举例来说: • 「以下是公司过去三年的销售数据,请分析后给出提升销售的建议。」 • 「我正在撰写人工智能方面的论文,这是我的初稿,请帮我完善,并添加适合引用的学术文献。」 上下文可以是你自己提供的内容,也可以是 AI 之前生成的内容。 为什么上下文很重要? AI 并不知道你脑子里的信息。缺乏上下文,它只能盲目地猜测,生成的内容自然会偏差甚至离题。 例如你说:「帮我写一份简历」。 AI 并不知道你的背景、技能、求职目标,只能泛泛而谈。但如果你给它提供上下文,例如: • 你的个人信息(姓名、学历、项目经验) • 目标职位和目标公司的文化背景 AI 就能轻松写出一份精准、适合你的简历。 如何提高上下文质量? • 检查自己有没有提供任务所需的全部信息。 • 主动向 AI 提问:「写好这篇文章,你还需要知道什么?」 • 提供参考案例或范文,让 AI 更清晰你的预期。 三、输出格式(Output Format)—— 让 AI 更好交作业 输出格式是告诉 AI 你想要结果以怎样的形式展现。例如: • 「请用表格展示以下信息,列分别为日期、事件、影响。」 • 「生成一份 500 字左右的摘要,要求分为引言、主要观点和结论三个部分。」 • 「请以 Markdown 格式输出,使用一级标题、二级标题和有序列表。」 常见易用的输出格式有哪些? • 文本类:Markdown、CSV、JSON、XML • 图示类:流程图(Mermaid)、思维导图 • 代码类:各类编程语言代码示例 • 数学公式:LaTeX 格式 如何精确指定格式? 最简单有效的方法: • 提供一个清晰的示例(few-shot):展示期望的输出模板。 • 详细描述每个部分的内容要求。 • 用伪代码或类型定义告诉 AI 结构。 例如你要 AI 生成一段 JSON: 请生成如下 JSON 格式: { "title": "文章标题", "content": [ { "heading": "一级标题", "paragraph": "内容段落" } ] } 这样 AI 就能轻松给你所需的精准格式。 四、角色(Role)—— 让 AI 拥有“灵魂” 角色就是 AI 在完成任务时扮演的身份。你可以不设置角色,但合适的角色能让 AI 更精准地把握你的需求,提供更专业的服务。 例如: • 「你是一位经验丰富的软件工程师,帮我审查并优化下面这段代码。」 • 「你是心理咨询师,请用温和、共情的语气帮我分析下面的问题。」 • 「你是一名苏格拉底式导师,请通过启发式的提问帮助我理解人工智能概念。」 角色设定的好处在于: • 明确 AI 的任务边界和思考角度。 • 让 AI 更精准地使用它训练过的特定领域知识。 综合示例:用好这四个要素,你就掌握了提示词的精髓 现在我们结合上面所有要素,看一个完整的高质量提示词示例: 任务:帮我写一个关于人工智能在医疗领域应用的总结。 「你是一位擅长用通俗语言讲解科技的科普作家(角色)。 请结合下方提供的两篇学术论文的摘要(上下文), 写一篇适合初中生阅读的 500 字以内的总结文章(输出格式)。 文章要通俗易懂,举至少两个具体的例子来说明人工智能如何改善医疗诊断效率(指令)。」 这样的提示词,AI 就会迅速准确地生成你想要的内容。 总结:写好提示词的秘诀 你要牢牢记住提示词的四大要素: ✅ 指令清晰具体 ✅ 上下文完整充分 ✅ 输出格式明确 ✅ 角色定位精确 下次再用 AI 时,不妨拿出这套方法练一练,相信你会得到意想不到的满意结果!
4个月前
看到篇讲大模型 temperature和top_p设置的文章,好奇为什么默认是0.7 和 (0.5-0.8)的设置,Gemini Flash thinking给的解释 1. 为什么 0.7 常常作为 temperature 的默认值? temperature = 0.7 通常被认为是 在创造性和可靠性之间取得较好平衡 的一个值。 在这个温度下,模型在各常见任务 (例如:对话、文本生成、摘要等) 中,都能产生相对令人满意的、质量和多样性兼顾的输出。 2. 为什么 top_p 的常用建议范围是 0.5 - 0.8? top_p 的主要作用是控制采样范围,降低 top_p 可以约束模型的生成方向,使其更聚焦、更可控。 0.5 - 0.8 这个范围,被认为是既能有效控制发散程度,又能保留一定的多样性和创新性的一个平衡区间。 top_p 过高 (例如 0.9 - 1.0),采样范围过大,可能导致模型生成内容过于发散、主题不明确、跑题等。 在高 temperature 的情况下,这种 “失控” 的风险更高。 top_p 过低 (例如 0.3 或更低): 采样范围过窄,会导致生成内容过于保守、重复、缺乏新意,甚至出现 “卡壳” 或循环的情况。 对于需要较高准确性和可靠性的任务 ,例如:事实性问答、代码生成,top_p 可以适当调低一些,例如 0.3 - 0.6 对于需要较高创造性和多样性的任务 ,例如:故事创作、头脑风暴。 top_p 可以适当调高一些,例如 0.7 - 0.9 top_p 值越低,要考虑的词语数量越少,计算效率相对越高。 在某些对延迟敏感应用场景下,适当降低 top_p 也有一定的性能优化作用。
6个月前
日本文部科学省发布初等中等教育生成式 AI 指南,非常详细切有借鉴意义。 使用生成式 AI 的基本原则: - 人类中心原则:AI的目标是扩展人类能力,而不是取代人类判断; - 学校需认识到生成式AI的输出是“参考之一”,最终决策和责任应由人类承担; 培养学生的核心能力: - 结合《学习指导纲要》中的能力要求,利用生成式AI培养-学生的信息素养和问题解决能力; - 鼓励学生使用AI工具来提炼自己的观点,提升批判性思维能力; 教师的角色: - 教师需成为学生与生成式AI之间的“引导者”,帮助学生正确使用这些工具; - 教师需要具备一定的 AI 知识与技能; 应用场景: - 教师的校务工作:用于教学资料准备、时间表制定、活动计划等,提高工作效率; - 学生的学习活动:帮助学生进行个性化学习、提供多样化的学习视角,但需注重信息真实性和道德教育; - 教育委员会的指导:提供政策支持,确保生成式AI的安全使用。 安全与法律合规: - 使用生成式 AI 时需遵守相关法律法规,特别是在隐私保护、著作权和公平性方面。 - 避免在生成式 AI 中输入敏感信息,如个人隐私和成绩数据。 道德教育和信息素养培养: - 强化学生的信息素养和道德教育,使其能够正确使用AI工具,同时提高批判性思维能力。 - 指导学生在引用生成式AI的内容时,注明来源,避免抄袭或不当使用。 教师与AI的关系: - 教师需要掌握生成式AI的基本知识,并在教学中适时引入,以支持学生学习; - AI 的使用不能替代教师的人文关怀和教育职责;