Barret李靖
2个月前
苏杰在 2010 年写了一本书,叫《人人都是产品经理》。十五年过去了,站在今天,或许也可以说,“人人都是程序员”,因为编程的范式正在发生深刻变化。 在神经网络出现之前(2012 年代表作是 AlexNet),可以称为编程 1.0 阶段。那时我们依赖确定性的逻辑来解决问题:a 就是 a,b 就是 b,程序的执行路径清晰、固定。 神经网络的出现带来了编程 2.0。通过在不同数据集上的训练,我们可以不断调整网络中每个节点的权重,进而影响最终输出。编程的任务变成了设定问题的起点与终点,神经网络则在“答题空间”里寻找解答。这个答案未必最优,但能有效解决问题。Karpathy 在 2017 年的《Software 2.0》里对此做了系统阐述。 而到了大模型时代,可以称之为编程 3.0。神经网络本身进化为“可编程体”,编程语言就是 Prompt。人们不再需要写复杂的函数和条件判断,而是通过自然语言来影响模型的推理过程。Prompt 之所以能改变输出,是因为它重塑了模型的“输入分布”,从而改变了注意力的聚焦点与解题路径。换句话说,Prompt 相当于在潜在的解题空间里拉起一条“轨道”,引导模型更快更准地落在某类答案上。 从“写死逻辑”到“训练权重”,再到“语言编程”,编程的本质正在从 控制计算机,转向 引导智能体。未来,当人人都能以语言驱动智能,编程将不再是少数人的技能,而会像写作一样,成为每个人的日常能力。
AIGCLINK
2个月前
Anthropic关于上下文工程的最新发布:要想充分发挥AI智能体的潜力,需要上下文工程! 博客讲了上下文工程在构建AI智能体中的重要性及相关策略,是对提示工程的进一步拓展和深化 提示工程,关注的是如何写出更好的提示词 上下文工程,关注的是在模型推理过程中,如何持续选择和管理最有助于任务完成的信息(也就是上下文),包括系统提示、工具、外部数据、对话历史等等 构建有效上下文的原则是用最少的、高价值的信息,引导模型产生最佳行为 1. 系统提示 应清晰、简洁、具体,避免过度逻辑化或过于模糊 推荐分模块组织,比如说背景、指令、工具说明、输出格式等,使用XML或 Markdown标签 初始提示应尽可能小,是指信息刚好足够引导行为,然后根据测试结果逐步补充 2. 工具 工具应功能单一、清晰、无歧义,避免功能重叠 工具返回的数据应精简、高效,避免浪费上下文空间 工具集应保持“最小可用集”,便于模型决策和维护 3. 示例 提供典型、多样化的示例,避免堆砌边缘案例 示例比规则更有助于模型理解任务 动态的获取上下文,与其一次性加载所有信息,不如让智能体在运行时通过工具动态获取所需数据 1.通过文件路径、命名规则、时间戳等元数据判断信息的相关性 2.支持“渐进式信息发现”,避免一次性加载大量无关内容 对于持续数分钟到数小时的任务,比如代码迁移、研究项目,需要特殊策略应对上下文窗口限制 1. 压缩 定期总结对话内容,保留关键信息,比如决策、bug、实现细节,丢弃冗余内容 可结合模型自动生成摘要,保持任务连续性 2. 结构化笔记 智能体定期将关键信息写入外部记忆,比如文件、数据库 在需要时再将相关内容加载回上下文 3. 多智能体架构 主智能体负责任务协调,子智能体负责具体子任务 子智能体可深入探索某一问题,仅将摘要返回主智能体,避免上下文过载 适用于复杂研究、并行任务等场景 #上下文工程 #ContextEngineering