解码 AI TOPS:理解 AI 芯片的关键指标与性能对比 • Ernest Chiang

(插图: 幕后付出了诸多努力。 Le Bouchon Ogasawara,位于东京涩谷。 图片来源:Ernest) tl;drTOPS (每秒万亿次运算, Trillions of Operations Per Second) 是衡量 AI 芯片和 NPU 芯片计算能力的重要指标,它表示处理器每秒能执行的万亿次运算次数。我们可以用“煎鸡蛋”来形象理解 TOPS: 普通 CPU 就像一位每次只能煎一个鸡蛋的厨师,而高 TOPS 值的 AI 芯片则像一位可以同时煎无数鸡蛋的超级厨师。TOPS 是对比 AI 芯片性能的重要参考,但在评估 AI 硬件时,我们还应该综合考虑能效、内存带宽等因素。 此外,TOPS 值通常代表的是理论峰值性能,实际性能还需要结合具体应用场景进行评估。什么是 TOPS(通俗易懂版)TOPS,全称 每秒万亿次运算 (Trillions of Operations Per Second),是衡量人工智能 (AI) 芯片或神经处理单元 (NPU) 计算能力的关键指标。它表示处理器每秒能够执行的最大运算次数,以万亿为单位。 随着计算能力的不断提升,未来可能会出现更大的单位来替代 “万亿”。 为了更直观地理解 TOPS,我们可以用一个生活化的例子来解释: 将 AI 计算 想象成 煎鸡蛋的过程,而 数据 则是 待煎的鸡蛋。 一个普通厨师(相当于普通 CPU)可能一次只能煎一个鸡蛋,而一个超级厨师(相当于 AI 芯片)则可以同时煎一万亿个鸡蛋! TOPS 就好比衡量这位 “超级厨师” 能力的指标,告诉我们他每秒可以 “处理” 多少个 “数据鸡蛋”。 TOPS 是理解和比较 AI 芯片性能的重要参考之一,但并非唯一标准。...

January 9, 2025 · 10 min · fisherdaddy

Agents 白皮书 • Google

简介 人类在处理杂乱无章的模式识别任务方面非常擅长。然而,他们往往会借助工具,例如书籍、Google 搜索或计算器,来补充已有知识,从而得出最终结论。同样,生成式 AI (Generative AI) 模型也可以通过训练学会使用工具,以获取实时信息或提供实际行动建议。比如,一个模型可以使用数据库检索工具来获取特定信息,例如客户的购买记录,从而生成个性化的购物推荐。又或者,模型可以根据用户的需求调用 API,完成发送邮件回复同事或代表用户进行金融交易等操作。 为了实现这些功能,生成式 AI 模型不仅需要能访问外部工具,还必须具备自我规划和执行任务的能力。这种结合推理能力、逻辑分析与外部信息访问功能的方式,进一步引入了智能体 (Agent) 的概念。智能体是一种可以扩展生成式 AI 模型能力的程序,使其功能超越了单一模型的局限。本白皮书将深入探讨这些概念及其相关内容。 摘要 本文探讨了生成式 AI 代理(Agents)的核心概念、组成结构及其在认知架构中的应用。代理通过结合语言模型(Language Models, LMs)、工具(Tools)和编排层(Orchestration Layer)来扩展语言模型的能力,使其能够执行复杂任务、自主决策并与外部世界交互。代理不仅能通过推理和规划完成目标,还能利用外部工具(如 API、数据存储等)获取实时信息或执行具体操作,从而弥补单一语言模型的局限性。 代理的定义与核心组成 代理的定义:代理是一个能够观察世界、使用工具并采取行动以实现目标的应用程序,具有自主性和主动性。 核心组成: 模型(Model):代理的核心决策引擎,通常是语言模型(如 GPT 系列)。支持多模态、通用或经过微调的模型。 工具(Tools):弥补模型无法直接与外界交互的缺陷,允许代理访问实时数据和执行操作。 编排层(Orchestration Layer):负责信息处理、推理、规划和决策,支持循环执行直到目标达成。 代理与模型的区别 模型:仅限于训练数据,无法与外界交互,且不具备持续上下文管理能力。 代理:通过工具扩展知识范围,支持多轮推理和上下文管理,并内置逻辑层(如 ReAct、Chain-of-Thought)。 认知架构与推理框架 认知架构:代理通过信息收集、内部推理、执行和调整的循环流程实现目标。 推理框架: ReAct:结合推理和行动的框架,适用于动态任务。 Chain-of-Thought (CoT):通过中间步骤实现推理能力,适合多步推理。 Tree-of-Thoughts (ToT):适用于探索性或战略性任务。 工具的作用与类型 工具的定义:工具是代理与外界交互的关键,可分为以下三种类型: 扩展(Extensions):代理与 API 的桥梁,直接在代理端执行 API 调用。 函数(Functions):在客户端执行的代码模块,提供更高的控制灵活性。 数据存储(Data Stores):通过向量数据库为代理提供动态、实时的数据支持,适用于结构化和非结构化数据。 应用示例 扩展的使用:通过示例教学让代理调用 API(如航班预订 API)。 函数调用:代理生成函数参数,由客户端执行 API 调用,适用于需要额外数据处理或安全性要求的场景。 数据存储的实现:通过向量搜索(如 RAG 方法)实现动态知识扩展,使代理能够访问实时信息。 模型性能提升 方法: 上下文学习(In-context Learning):通过少量示例实时学习任务。 基于检索的上下文学习:动态从外部存储中检索相关信息。 微调(Fine-tuning):通过特定数据集训练模型以提升任务表现。 结合优势:通过组合上述方法,代理可以在速度、成本和准确性之间取得平衡。 工具与平台支持 LangChain 示例:通过 LangChain 和 LangGraph 构建多阶段任务代理,结合工具(如 SerpAPI 和 Google Places API)实现复杂查询。 Vertex AI 平台:提供全面的托管环境,支持代理的开发、测试、评估和优化,简化生产级应用的构建。 8....

January 8, 2025 · 1 min · fisherdaddy

2025 年 AI 展望 • Andrew Ng

本文展望了 2025 年人工智能(AI)的发展趋势和希望,通过多位领域专家的观点,探讨了 AI 在技术、应用和社会影响方面的潜力与挑战。 技术进步与应用前景 快速原型开发与生产力提升 AI 辅助编码显著降低了构建软件原型的成本与时间。例如,用 AI 构建教育工具或金融分析工具只需数小时。 平台如 Bolt 和 Replit Agent 不仅提高代码质量,还简化了应用的部署流程。 生成式 AI 的未来 创意与定制化:生成式 AI 将解放创作者的时间,使其专注于创造性工作。未来将出现更多小型、专用模型以满足特定需求。 多模态生成:结合视频、音频的生成模型将推动电影制作等领域的创新,例如同时生成视频和音轨的工具。 用户控制:未来的生成工具将提供更多控制选项,例如音乐的旋律、和声或视频的场景细节。 AI 通用性与代理型 AI 当前的 AI 系统已具备“通用性”,能够完成广泛任务并适应不同场景。 “代理型 AI”即具有执行具体任务能力的人工智能,将成为未来的核心,帮助用户完成日常任务并提升生产力。 数据效率与模型优化 当前 AI 模型依赖大规模数据,未来的重点是通过更高效的算法和架构减少数据需求。 数据效率的提升将解决模型的解释性、鲁棒性和多模态学习等问题,同时降低开发成本,促进技术民主化。 社会与文化影响 AI 的社会价值 AI 应优化推荐算法,优先展示“桥梁内容”,帮助不同群体找到共同点。 通过参与式方法(如 Polis 工具),AI 可以促进社会共识,减少偏见与分裂。 安全与责任 生成式 AI 的部署需要高标准的安全性和责任感,特别是在“代理型 AI”执行任务时。 减少“幻觉”问题(即 AI 输出错误信息)是 2025 年的关键任务,未来 AI 将比搜索引擎更可靠。 教育与学习的变革 AI 正在改变学习方式,例如生成个性化的考试题目或重新解释课程内容。2025 年,AI 可能成为人们首选的学习助手。 社会团结与治理 AI 平台需嵌入社会价值指标(如促进建设性对话),以推动民主和社会和谐。 开发和治理 AI 的过程中,应广泛吸纳多元声音,确保技术公平性与包容性。 通过技术创新与社会责任的结合,2025 年的 AI 发展将不仅推动生产力和创造力,还可能重塑人与人之间的互动方式,成为促进社会进步的重要力量。...

January 8, 2025 · 3 min · fisherdaddy

大型语言模型如何工作。从 0 到 ChatGPT • Andreas Stöffelbauer

本文由微软数据科学家 Andreas Stöffelbauer 撰写,旨在以直观的方式解释大型语言模型(Large Language Models, LLMs)的工作原理,从基础的机器学习概念到 ChatGPT 的核心机制,帮助读者理解 LLMs 的训练过程、能力以及应用场景。作者通过分层讲解人工智能、机器学习、深度学习和 LLMs 的发展路径,揭示了这些模型如何从大规模数据中学习语言规律,并通过生成式方法实现自然语言处理任务。文章还探讨了 LLMs 的局限性(如“幻觉”现象)及其在未来改进的潜力。 关键细节 1. 人工智能的层次结构 人工智能 (AI):涵盖所有智能机器的研究。 机器学习 (ML):AI 的子领域,专注于从数据中发现模式。 深度学习 (DL):机器学习的分支,处理非结构化数据(如文本、图像),依赖人工神经网络。 大型语言模型 (LLMs):深度学习的应用,专注于文本数据处理。 2. 机器学习基础 核心目标:发现输入与输出之间的模式关系。 分类任务:如音乐流派分类,基于输入特征(如节奏和能量)预测输出类别。 复杂性提升:输入变量数量、类别数量的增加使模型复杂度上升,需要更强大的模型和更多数据。 3. 深度学习与神经网络 神经网络:模仿人脑结构,由多层神经元组成,能够建模高度非线性关系。 深度学习:通过多层神经网络处理复杂任务,如图像分类和情感分析。 规模化的突破:现代 LLMs(如 GPT-4)拥有数十亿到上万亿参数,能够处理极其复杂的输入输出关系。 4. 大型语言模型的核心机制 语言建模:通过预测下一词,学习语言的语法、语义和上下文关系。 训练数据:基于大量文本数据进行自监督学习,无需人工标注。 生成式 AI:通过逐词生成文本,实现自然语言生成。 5. ChatGPT 的三阶段训练 预训练:使用大规模文本数据训练模型预测下一词,掌握语言规则和世界知识。 指令微调:通过高质量的指令-响应对,训练模型理解并响应用户指令。 人类反馈强化学习 (RLHF):优化模型输出,使其更符合人类价值和偏好。 6. LLMs 的应用与能力 文本生成:通过逐词预测生成连贯的文本。 任务解决: 零样本学习 (Zero-shot):无需示例即可完成新任务。 Few-shot 学习:通过提供少量示例提升任务表现。 链式思维 (Chain-of-thought):逐步推理解决复杂问题。 幻觉问题:LLMs 有时会生成错误信息,因其训练目标并非事实准确性。 7. LLMs 的未来与局限 潜在问题:幻觉现象、知识更新滞后、对真伪信息的区分能力不足。 改进方向:通过上下文补充、搜索引擎集成(如 Bing Chat)等方法增强模型的准确性和实时性。 发展潜力:LLMs 展现了超越训练数据的新兴能力(如零样本任务),未来可能进一步接近通用人工智能。 8....

January 7, 2025 · 3 min · fisherdaddy

2024年顶级 AI 故事!AI 智能体崛起,价格下跌,模型缩小,以及更多 • Andrew Ng

本文是吴恩达对 2024年 AI 的总结。2024 年是人工智能(AI)领域快速发展的一年,技术和应用均取得了显著进步。AI 模型变得更快、更便宜、更小,且多模态和推理能力更强。AI 应用的普及速度超过了技术本身的发展,特别是在自动化、客户服务和问答等领域。与此同时,生成式视频、代理系统(agentic systems)和小型模型成为焦点,价格战加剧了竞争,技术巨头通过创新合作模式获取技术和人才。 关键细节 1. 代理系统崛起 发展概况:代理系统(agentic systems)通过迭代提示大语言模型(LLMs),显著提升了任务执行能力。多个工具和框架支持代理工作流,例如: 微软 Autogen 和后续衍生的 AG2。 CrewAI 提供多代理系统的开源框架。 LangChain 的 LangGraph 通过循环图优化代理行为。 Meta 的 Llama Stack 提供记忆、对话和道德约束。 技术进步:新技术如链式思维(Chain of Thought)、自我一致性(Self-consistency)和反思机制(Reflexion)推动了代理 AI 的发展。 现状:代理系统已成为主流,显著提高了 AI 的效率和个性化服务能力。 2. 价格下降 价格战:从 2023 年 3 月到 2024 年 11 月,OpenAI 的模型使用价格下降了近 90%。其他公司如 Google、Meta、亚马逊和中国企业也纷纷降价。 开源模型的影响:Meta 的 Llama 3 和 3.1 系列显著降低了高性能模型的价格门槛。 闭源模型竞争:OpenAI 推出更便宜的 GPT-4o 和 mini 版本,Google 降价 Gemini 系列,亚马逊推出 Nova 系列以低价竞争。 背后原因:开源模型和更高效的计算硬件(如 Cerebrus 和 SambaNova)推动了价格下降。 意义:价格下降反映了健康的技术生态,但高需求模型仍维持较高价格。 3....

January 6, 2025 · 5 min · fisherdaddy

2024 年我们从大语言模型 (Large Language Model, LLM) 中学到的 • Simon Willison

本文是 Django 联合创始人 Simon Willison 所写,他主要回顾了2024 年,大语言模型 (LLMs) 领域经历了显著的发展和变革,以下是主要的趋势与关键事件: GPT-4 壁垒被突破:多家机构开发的模型超越了 GPT-4 的性能,并推动了更长的上下文输入和多模态能力的发展。 LLM 成本大幅下降:由于竞争加剧和效率提升,运行和训练 LLM 的成本显著降低,同时对环境的影响也得到了部分缓解。 多模态 LLM 的崛起:支持图像、音频甚至视频输入的多模态模型变得普遍,语音和实时视频交互成为现实。 生成式 AI 应用的普及:基于提示生成应用程序的能力已经成为主流,许多模型支持即时创建和使用互动工具。 “代理人”尚未实现预期:尽管“代理人”概念被频繁提及,但由于模型的可信度和工具使用能力的限制,其实际应用仍未成熟。 评估的重要性提升:开发可靠的自动化评估工具成为构建 LLM 应用的关键技能。 环境影响的两面性:虽然单次推理的能耗降低,但数据中心的扩建对环境造成了更大压力。 知识分布不均:公众对 LLM 的认知与实际技术发展之间存在巨大差距,需要更多的教育和引导。 关键细节 GPT-4 壁垒的突破 性能超越:2024 年,18 个组织的模型在 Chatbot Arena 排行榜上超越了 GPT-4(如 Google 的 Gemini 1.5 Pro 和 Anthropic 的 Claude 3.5)。 上下文长度扩展:从 2023 年的 4,096 或 8,192 个 token 提升到 2024 年的 100,000+,Google 的 Gemini 系列甚至支持 200 万个 token。 多模态能力:Gemini 1....

January 6, 2025 · 10 min · fisherdaddy

反思 • Sam Altman

ChatGPT 的第二个生日才过去一个多月,现在我们已经过渡到能够进行复杂推理的新一代模型。新年之际,人们总会陷入反思,我想分享一些关于目前为止的个人想法,以及我在此过程中学到的一些东西。 随着我们越来越接近通用人工智能 (AGI),现在似乎是审视公司进展的重要时刻。仍然有很多需要理解的,还有很多我们不了解的,而且现在还处于非常早期的阶段。但是我们知道的已经比我们刚开始的时候多得多了。 我们大约九年前创立了 OpenAI,因为我们相信通用人工智能是可能实现的,并且它可能成为人类历史上最具影响力的技术。我们想弄清楚如何构建它并使其广泛受益;我们很兴奋能在历史上留下印记。我们的雄心非常高远,而且我们也坚信这项工作可能会以同样非凡的方式使社会受益。 当时,很少有人关注,如果有人关注,那主要是因为他们认为我们没有成功的机会。 2022 年,OpenAI 还是一个默默无闻的研究实验室,致力于一个暂时名为“Chat With GPT-3.5”的项目。(我们更擅长研究而不是起名字。)我们一直在观察人们使用我们 API 的体验功能,并且知道开发人员真的很喜欢与模型对话。我们认为围绕这种体验构建一个演示可以向人们展示一些关于未来的重要信息,并帮助我们使模型更好、更安全。 我们最终将其命名为 ChatGPT,并在 2022 年 11 月 30 日发布了它。 我们一直都知道,从理论上讲,在某个时刻我们会达到一个引爆点,人工智能革命将会被启动。但我们不知道那一刻会是什么时候。令我们惊讶的是,结果证明就是这一刻。 ChatGPT 的发布开启了前所未有的增长曲线——在我们的公司、我们的行业以及整个世界。我们终于看到了我们一直以来希望从人工智能中获得的一些巨大好处,而且我们可以看到很快会有更多的进展。 这并不容易。道路并非一帆风顺,正确的选择也并不那么显而易见。 在过去的两年里,我们不得不围绕这项新技术从头开始建立一家完整的公司。除了实践,没有其他方法可以培训人们,而且当技术类别完全是新的时候,根本没有人能告诉你应该如何去做。 在如此高速的情况下,在几乎没有培训的情况下建立一家公司是一个混乱的过程。常常是前进两步,后退一步(有时甚至是前进一步,后退两步)。错误会在你前进的过程中被纠正,但是当你做原创工作时,实际上没有任何手册或路标。在未知水域中快速前进是一种不可思议的体验,但这对所有参与者来说也是巨大的压力。冲突和误解层出不穷。 这些年是我迄今为止生活中最充实、最有趣、最好、最有趣、最累、压力最大,尤其是过去两年最不愉快的几年。最强烈的感受是感激;我知道有一天我会退休在我们的牧场上看着植物生长,有点无聊,并且会回想起我从小就梦想做的工作是多么酷。我试着记住,在任何一个星期五,当下午 1 点前有七件事出错时。 大约一年多前,在某个特定的星期五,那天发生的主要问题是,我在一次视频通话中被意外解雇了,然后在我们挂断电话后,董事会发布了一篇关于此事的博客文章。我当时在拉斯维加斯的一家酒店房间里。感觉就像一场美梦破碎了,这种感觉几乎无法言喻。 在没有任何警告的情况下被公开解雇引发了非常疯狂的几个小时,以及非常疯狂的几天。最奇怪的是当时的情况一片混乱。我们中没有人能够获得关于发生了什么或为什么的令人满意的答案。 在我看来,整个事件是包括我自己在内的善意之人在治理方面的一次重大失败。回顾过去,我当然希望我当时能采取不同的做法,而且我愿意相信,今天的我比一年前更是一个更好、更深思熟虑的领导者。 我也认识到,一个拥有多元观点和丰富经验来管理复杂挑战的董事会至关重要。良好的治理需要大量的信任和信誉。我感谢许多人共同努力为 OpenAI 建立更强大的治理体系,这使我们能够追求确保通用人工智能造福全人类的使命。 我最大的收获是,我有多么值得感激,以及我应该感谢多少人:感谢所有在 OpenAI 工作并选择投入时间和精力去追求这个梦想的人,感谢帮助我们度过危机时刻的朋友,感谢支持我们并委托我们帮助他们取得成功的合作伙伴和客户,以及感谢我生命中那些向我展示他们有多么关心我的人。[1] 我们都以一种更有凝聚力、更积极的方式回到了工作中,我为我们从那以后的专注感到非常自豪。我们已经完成了我们有史以来最好的一些研究。我们的每周活跃用户从大约 1 亿增长到超过 3 亿。最重要的是,我们继续向世界推出人们真正喜欢并且能解决实际问题的技术。 九年前,我们真的不知道我们最终会变成什么样子;即使是现在,我们也只是略知一二。人工智能的发展历经多次曲折,我们预计未来还会有更多变化。 其中一些变化是令人愉快的;另一些则是艰难的。看到一连串的研究奇迹发生很有趣,而且许多反对者已经变成了真正的信徒。我们还看到一些同事分道扬镳成为竞争对手。团队往往会随着规模的扩大而更迭,而 OpenAI 的规模增长得非常快。我认为其中一些是不可避免的——初创公司通常在每个新的规模级别都会经历大量人员流动,而在 OpenAI,每隔几个月,数字就会以数量级增加。过去的两年就像一家普通公司的十年。当任何公司发展和演变如此之快时,利益自然会分化。而且当任何重要行业的公司处于领先地位时,许多人会出于各种原因攻击它,尤其是当他们试图与之竞争时。 我们的愿景不会改变;我们的策略将继续演变。例如,当我们开始时,我们不知道我们将不得不建立一家产品公司;我们认为我们只是要做伟大的研究。我们也不知道我们需要如此庞大的资本。现在我们必须去构建一些几年前我们不了解的新事物,而且未来会有一些我们现在几乎无法想象的新事物。 我们为目前在研究和部署方面的成绩感到自豪,并致力于继续推进我们在安全和利益共享方面的思考。我们仍然认为,使 AI 系统安全的最佳方法是迭代地、逐步地将其发布到世界,让社会有时间适应并与技术共同发展,从经验中学习,并不断提升技术安全性。我们相信成为安全和对齐研究的世界领导者的重要性,并以来自现实世界应用的反馈来指导这项研究。 我们现在确信,我们知道如何构建我们传统上理解的通用人工智能。我们相信,在 2025 年,我们可能会看到第一批 AI 智能体“加入劳动力队伍”,并切实地改变公司的产出。我们仍然相信,迭代地将优秀的工具掌握在人们手中会带来伟大的、广泛分布的结果。 我们开始将目标转向更高层次,即真正意义上的超智能。我们热爱我们目前的产品,但我们是为了辉煌的未来而来的。有了超智能,我们可以做任何其他事情。超智能工具可以大大加速科学发现和创新,远远超出我们自己能够做到的程度,进而大大增加丰富和繁荣。 这现在听起来像是科幻小说,甚至谈论它都有点疯狂。没关系,我们以前经历过,我们不介意再次经历。我们非常有信心,在未来几年里,每个人都会看到我们所看到的,并且在最大化广泛利益和赋权的同时,采取非常谨慎的行动是如此重要。鉴于我们工作的可能性,OpenAI 不能是一家普通的公司。 能够在这项工作中发挥作用,是多么幸运和令人谦卑! (感谢 Josh Tyrangiel 在某种程度上启发了我写下这些。我希望我们有更多的时间。) [1] 在那几天里,有很多人做了令人难以置信的巨大工作来帮助 OpenAI 和我个人,但有两人尤其突出。...

January 6, 2025 · 1 min · fisherdaddy

我的 2024:一个博客,两个网站,三个插件

2024 年,经历了很多,迷茫过,失落过,突破过,也收获了很多,用三个短句来总结我的 2024 就是:一个博客,两个网站,三个插件。 一个博客 这个博客网站搭建的契机是 OpenAI Sora 技术报告的发布,读完这篇报告后我的第一想法是应该把这篇优质的文章翻译为中文,不仅可以作为自己的阅读记录留存,还可以让更多的中文用户了解 Sora 。另外一个契机是,在大模型加持下宝玉提供的三步翻译法效果非常不错,可以让我以非常低成本的方式翻译出完全符合中文用语习惯的译文,且不损失原文的含义。 大概统计了一下,2024 年我一共发布了 146 篇文章,其中既包括翻译的优质英文文章、名人访谈笔记,也包括我个人的一些惊艳和认知分享。对于优质英文文章的翻译方法,前段时间我写了一篇文章有专门分享我的翻译流程 pipeline,感兴趣的同学们可以去看看。根据 google analytics 的统计,我的这个博客现在每天大约有 130 左右的用户访问,其中绝大多数是通过搜索引擎过来的,这里也说明 SEO 的重要性。 最后也分享一下博客中 2024 年阅读量最高的几篇文章,感兴趣或觉得对自己有价值的话可以看看: OpenAI 各个模型简介和价格情况 AI 时代的代码编辑器: Cursor LLM 知识图谱构建器:从零到 GraphRAG 只需五分钟 Elon Musk 的“五步算法”:一个显著改善几乎所有事情的简单而巧妙的方法 使用 Unsloth 超高效微调 Llama 3.1 OpenAI 官方指南:在 API 中引入结构化输出 PDF 转 Markdown 开源项目调研 两个网站 今年开发的这两个网站对我而言非常有意义。 一个是偏开发者工具向的网站,基本满足了我日常开发工具的使用需求:AI Toolbox 另一个是为我家娃学习古诗而写的网站:诗词启蒙。 他们都是我用 Cursor 和 Windsurf 来结对编程实现的,大模型在代码这个垂直领域的突破让我可以非常高效的实现我的想法。Cursor 刚推出的时候我就第一时间体验了,但当时还是偏简单的代码补全,直到今年 Claude 3.5 sonnet 的推出,让 Cursor 的代码能力和集成完整度得到了极大的提升,其中一个特别好用的功能就是 COMPOSER,在该模式下你只需要和 AI 对话,AI 会自动生成代码,你只需要按 Accept ALL 或 REJECT ALL 即可将代码自动更新到多个对应的文件中,有点类似于拥有了一个Google 创始人施密特访谈 中提到的编程搭档。最近 Cursor 更进一步释放了 Agent 的能力,不需要你点击接受了,自动执行你想要实现的任务。我之前有专门写篇文章介绍 Cursor 的功能,感兴趣可以读一读。而 Windsurf 有点类似于 Cursor 的 Agent模式,能力也非常的惊艳。...

December 31, 2024 · 1 min · fisherdaddy

认知负荷才是关键 • Artem Zakirullin

本文围绕 认知负荷(Cognitive Load)这一核心概念展开,指出开发者在编写代码时应尽量减少不必要的认知负荷,从而提升代码的可读性和可维护性。认知负荷是指开发者为完成任务所需的思考量,当认知负荷超出人类工作记忆的容量(约 4 个信息块)时,理解和处理任务会变得困难。文章区分了两种认知负荷: 内在认知负荷:由任务本身的复杂性决定,无法减少。 外在认知负荷:由信息的呈现方式引起,与任务无关,可以通过优化代码设计显著减少。 作者通过多个实际例子和反模式分析,强调了减少外在认知负荷的重要性,并提供了具体的实践建议。 1. 复杂条件与嵌套逻辑 问题:复杂条件和嵌套 if 语句会增加认知负荷,尤其当条件过多时,开发者难以追踪逻辑。 解决方案:引入中间变量或采用早返回(early return)模式,简化逻辑。例如,用有意义的变量名替代复杂条件表达式。 2. 继承的复杂性 问题:深层继承链(如多级 Controller 继承)导致开发者需要逐层理解父类逻辑,容易造成认知过载。 解决方案:优先使用组合(composition)而非继承,以减少类之间的耦合和复杂性。 3. 浅模块与信息隐藏 问题:过多浅层模块(方法、类或微服务)会增加模块间交互的复杂性,反而不利于理解。 解决方案:构建深层模块,提供简单接口但隐藏复杂实现。例如,UNIX I/O 的五个简单调用隐藏了数十万行代码的实现细节。 4. 微服务与分布式单体 问题:过度拆分微服务会导致复杂的依赖关系和高认知负荷,容易形成“分布式单体”。 解决方案:在系统设计初期避免过早引入微服务,优先构建清晰的模块化单体架构(monolith)。仅在团队规模或部署需求迫切时,才逐步拆分服务。 5. 语言特性与框架滥用 语言特性: 问题:过多语言特性(如 C++ 的初始化方式)会增加学习成本和认知负荷。 解决方案:减少依赖复杂特性,优先选择简单、直观的实现方式。 框架滥用: 问题:过度依赖框架的“魔法”可能导致开发者需要额外学习框架的细节。 解决方案:将业务逻辑与框架分离,框架仅作为工具使用,避免代码与框架深度耦合。 6. HTTP 状态码与自描述错误 问题:使用数字状态码(如 401、403)会让开发者和 QA 需要额外记忆这些状态码的具体含义。 解决方案:返回自描述的错误信息(如 "code": "jwt_has_expired"),减少对数字状态码的依赖。 7. DRY 原则的滥用 问题:过度追求代码复用可能导致不必要的耦合,增加认知负荷。 解决方案:适度重复代码,避免引入不必要的抽象和依赖。引用 Rob Pike 的观点:“一点点复制优于一点点依赖”。 8. 分层架构与 DDD 的误用 分层架构: 问题:过多抽象层(如 Hexagonal/Onion Architecture)可能增加跳转成本,带来额外的认知负荷。 解决方案:仅在有实际扩展需求时引入抽象层,避免为追求架构模式而增加不必要的复杂性。 DDD(领域驱动设计): 问题:误将 DDD 的问题域概念(如领域语言)应用到解决方案域,导致主观性和复杂性增加。 解决方案:专注于 DDD 的问题域部分,避免过度强调技术实现细节。 9....

December 30, 2024 · 3 min · fisherdaddy

构建有效的智能体 • Anthropic

在过去的一年里,我们与数十个团队合作,构建了跨行业的大语言模型 (LLM) 智能体。始终如一地,最成功的实施并没有使用复杂的框架或专门的库。相反,他们是用简单的、可组合的模式构建的。 在这篇文章中,我们分享了我们从与客户合作和自己构建智能体中学到的经验,并为开发人员提供了关于构建有效智能体的实用建议。 什么是智能体?“智能体” 可以通过几种方式定义。一些客户将智能体定义为在较长时间内独立运行的完全自主的系统,使用各种工具来完成复杂的任务。其他人使用该术语来描述遵循预定义工作流程的更具规范性的实现。在 Anthropic,我们将所有这些变体归类为智能体系统,但在工作流程和智能体之间进行了重要的架构区分: 工作流程是通过预定义的代码路径协调大语言模型和工具的系统。另一方面,智能体是大型语言模型动态地指导其自身流程和工具使用的系统,保持对其如何完成任务的控制。下面,我们将详细探讨这两种类型的智能体系统。在附录 1 (“实践中的智能体”) 中,我们描述了客户发现使用这些类型的系统具有特殊价值的两个领域。 何时 (以及何时不) 使用智能体当使用大语言模型构建应用程序时,我们建议找到尽可能简单的解决方案,并且仅在需要时增加复杂性。这可能意味着根本不构建智能体系统。智能体系统通常以延迟和成本换取更好的任务性能,您应该考虑何时这种权衡是有意义的。 当需要更高的复杂性时,工作流程为定义明确的任务提供可预测性和一致性,而当需要大规模的灵活性和模型驱动的决策时,智能体是更好的选择。然而,对于许多应用程序来说,通过检索和上下文示例优化单个大语言模型调用通常就足够了。 何时以及如何使用框架有许多框架可以使智能体系统更容易实现,包括: 来自 LangChain 的 LangGraph;Amazon Bedrock 的 AI 智能体 (AI Agent) 框架;Rivet,一个拖放式 GUI 大语言模型工作流程构建器;以及Vellum,另一个用于构建和测试复杂工作流程的 GUI 工具。这些框架通过简化标准的底层任务 (如调用大语言模型、定义和解析工具以及将调用链接在一起) 使入门变得容易。但是,它们通常会创建额外的抽象层,这可能会掩盖底层的提示和响应,从而使调试变得更加困难。当更简单的设置就足够时,它们也可能使添加复杂性变得很有诱惑力。 我们建议开发人员从直接使用大语言模型 API 开始:许多模式可以用几行代码实现。如果您确实使用了框架,请确保您了解底层的代码。对底层原理的错误假设是客户错误的常见来源。 请参阅我们的 cookbook 以获取一些示例实现。 构建模块、工作流程和智能体在本节中,我们将探讨我们在生产中看到的智能体系统的常见模式。我们将从我们的基础构建模块——增强型大语言模型——开始,并逐步增加复杂性,从简单的组合工作流程到自主智能体。 构建模块:增强型大语言模型智能体系统的基本构建模块是通过检索、工具和记忆等增强功能增强的大语言模型。我们目前的模型可以积极地使用这些功能——生成他们自己的搜索查询,选择合适的工具,并确定要保留哪些信息。 我们建议关注实现的两个关键方面:根据您的特定用例定制这些功能,并确保它们为您的 LLM 提供简单、完善的文档界面。虽然有很多方法可以实现这些增强功能,但一种方法是通过我们最近发布的 模型上下文协议 (Model Context Protocol),该协议允许开发人员通过简单的 客户端实现 与不断增长的第三方工具生态系统集成。 在本帖的剩余部分,我们将假设每个大语言模型调用都可以访问这些增强的功能。 工作流程:提示链提示链将任务分解为一系列步骤,其中每个大语言模型调用处理前一个调用的输出。您可以在任何中间步骤中添加程序化检查 (请参阅下图中的“gate”) 以确保过程仍在轨道上。 何时使用此工作流程: 此工作流程非常适合可以轻松干净地分解为固定子任务的情况。主要目标是通过使每个大语言模型调用成为更简单的任务来权衡延迟以获得更高的准确性。 提示链有用的示例: 生成营销文案,然后将其翻译成不同的语言。编写文档大纲,检查大纲是否符合某些标准,然后根据大纲编写文档。工作流程:路由路由对输入进行分类并将其定向到专门的后续任务。此工作流程允许关注点分离,并构建更专业的提示。如果没有此工作流程,针对一种输入进行优化可能会损害其他输入的性能。 何时使用此工作流程: 路由适用于以下复杂任务:存在最好单独处理的不同类别,并且可以通过大语言模型或更传统的分类模型/算法准确处理分类。 路由有用的示例: 将不同类型的客户服务查询 (一般问题、退款请求、技术支持) 定向到不同的下游流程、提示和工具。将简单/常见的问题路由到较小的模型 (如 Claude 3.5 Haiku),将困难/不常见的问题路由到功能更强大的模型 (如 Claude 3....

December 23, 2024 · 1 min · fisherdaddy