在前面的论文我们了解了ICL中prompt执行过程 以及对Prompt写作的22条黄金法则我们发现ICL是个计算系统并且具备图灵完备性。 ”写Prompt即编程“而写好一个Prompt就要“把提示词写成外部程序一样的严格指令结构固定、逻辑清晰语义明确”可以看出来其与高级语言程序非常的类似。如果了解程序的发展历史我们就知道程序的发展经过了”从二进制到汇编“ 再”从汇编再到高级语言“的过程编译器在一步一步简化编码的复杂度而语言的种类也变得越来越丰富多样java, c, python…) 编码的人群也从早期的屈指可数的实验室里的科学家扩展到了现在坐在普通办公室里的码农 。在高级语言时编译器帮助把高级语言翻译成汇编再编译成二进制码。如果我们对等的对比一下或许会发现在Claudy Code / Codex 编程Agent风行提示词成了一门新手艺的今天人类已经开始使用自然语言编程本质上大模型成为了新的编译器/执行平台将自然语言翻译成高级语言再由高级语言编译器翻译成汇编。这进一步简化了编程这门手艺编程的语言就成了世界上的各种有文字的人类语言每个普通人都可以写程序。 而这种进步有可能就是技术发展的必然从这个意义上来讲大模型就是新的编译器/执行平台而prompt就是新的自然语言的程序。写prompt的本质就是自然语言编程。那么我们就不妨去对比一下Prompt Engineering 自然语言编程与高级编程语言的相似与差异点畅想一下未来如何进一步完善自然语言编程。一. Prompt Engineering vs 高级编程语言1语言视角编程语言组成部分编程语言中的定义/功能Prompt Engineering对应概念Prompt中的应用/实践示例数据成分定义变量、常量、数据类型、数据结构输入数据定义明确输入格式、定义上下文信息、指定示例数据结构输入文本[待处理文本]用户偏好[偏好描述]运算成分运算符、表达式、函数调用、数据处理任务操作符定义具体操作、指定处理方法、思维链分解请分析以下文本的情感倾向使用以下步骤1... 2... 3...控制成分条件语句、循环、分支、流程控制执行流程控制条件判断、循环迭代、步骤顺序、分支处理如果文本包含负面词汇则...请重复此过程直到...传输成分I/O操作、参数传递、返回值输入输出规范定义输入格式、指定输出结构、明确约束条件输出格式JSON字数限制500字以内语法语法规则、代码格式、符号系统结构化原则段落分隔、标记方式、标准结构使用###分隔不同部分 遵循角色-任务-约束结构函数/过程函数定义、参数传递、模块化模块化Prompt子任务分解、可重用模板、角色扮演你是一个翻译专家...请按照以下模板回答...变量变量声明、作用域、生命周期上下文变量占位符定义、上下文管理、模式匹配{产品名称}作为占位符 在不同段落中保持上下文一致语义语义定义、执行效果、含义解释明确性原则精确表述、避免歧义、明确预期结果请用专业术语解释避免使用模糊词汇如可能、大概数据结构数组、链表、树、图等组织方式信息组织方式结构化输出、层次化信息、关系表达请按以下结构输出1. 标题 2. 摘要 3. 详细内容控制结构顺序、分支、循环结构逻辑流程设计任务步骤、条件分支、迭代处理首先...然后...最后...如果满足条件A执行X否则执行Y模块化机制类、模块、包、命名空间可复用组件Prompt模板库、标准化组件、版本管理建立摘要生成模板 创建代码审查标准prompt错误处理异常处理、边界检查、验证容错与验证边界条件、错误提示、质量检查如果输入不符合要求请指出问题验证输出是否包含所有必要信息注释/文档代码注释、API文档、说明说明与元信息使用说明、上下文解释、约束说明注意本prompt适用于...使用前请确保...2方法视角要素编程类比Prompt实现重要性角色Role函数签名/接口定义你是一个专业的...定义执行上下文和能力范围要求Requirement功能规格说明请完成以下任务...明确任务目标和预期结果任务Task主函数逻辑具体操作步骤...定义核心处理流程实例Examples测试用例/示例代码示例1... 示例2...提供模式参考和质量标准约束Constraints输入验证/边界条件限制条件...确保输出符合要求流程Process算法步骤/控制流处理顺序1... 2... 3...保证执行逻辑正确3工程视角编程实践Prompt Engineering 实践设计模式Prompt 模板模式: 建立标准的 prompt 模板库版本控制Prompt 版本管理: 追踪 prompt 的迭代优化过程单元测试Prompt 测试验证:编写 “测试用例”使用不同输入验证 prompt 的鲁棒性文档化Prompt 使用说明:为复杂的 prompt 编写使用说明代码重构Prompt 优化迭代:对 Prompt 进行持续优化迭代代码审查Prompt 质量检查:对 Prompt 进行质量审核与校验调试Prompt 效果调试:对 Prompt 运行效果进行调试优化从语言方法和工程视角对比我们可以发现自然语言编程写Prompt) 高级语言编程在语法要求、任务定义以及编码实践在逻辑上是非常的相似的。而唯一不同的是我们还没有对自然语言编程有一套统一的语法元素比如 if…else… , 在高级语言中是确定的强校验的而在自然语言中有的人写成”如果满足条件A执行X否则执行Y“也有人写成”当满足条件A时执行X要不然就执行Y“。 这不仅导致了人类阅读了上缺乏规范性和统一性对于大模型执行器也可能出现”翻译“偏差影响执行结果二. 大模型独特的运算单元: 语义运算除了与高级编程语言在语法逻辑上的相似性之外大模型还有一个独特的运算单元语义运算。运算类型传统编程语言大语言模型基本算术运算a b,a / b不直接支持需要推理逻辑运算AND,OR,NOT支持通过自然语言逻辑字符串操作concat(),substring()支持但通过语义理解新增运算单元无语义运算大模型具有以下基础运算单元同样具有作为基本运算单元的特征原子性不可再分的最小语义处理单位可组合性可以与其他运算组合确定性相同输入产生相似输出概率性可复用性可以封装为标准操作运算类别基础运算单元功能描述语义处理语义提取从文本中提取结构化信息语义分类将文本归类到预定义类别语义聚类将相似文本分组逻辑处理语义推理基于常识和逻辑进行推断因果分析识别因果关系矛盾检测识别逻辑矛盾生成处理语义生成根据意图生成文本风格转换改变文本风格但保持语义摘要生成提取核心信息关系处理语义相似度计算文本相似程度语义关联发现概念间关系上下文关联维护对话上下文1原子语义运算例1.语义提取运算Semantic Extraction输入 用户反馈产品很好用但价格有点贵 输出 {情感: 正面, 优点: [好用], 缺点: [价格贵]}例2.语义推理运算Semantic Reasoning输入 如果A比B高B比C高那么A和C谁高 输出 A比C高例3.语义生成运算Semantic Generation输入 写一首关于春天的诗 输出 诗歌文本基于语义理解生成例4. 语义相似度运算Semantic Similarity输入 [今天天气真不错适合出门散步, 今天阳光明媚很适合外出走走] 输出 {相似度评分: 0.92, 匹配度说明: 两句话语义高度一致核心含义均为描述天气好、适合外出}2语义组合运算以下3个示例综合运用了语义运算的”基本运算单元“示例名称表面功能底层组合的运算单元组合方式示例1情感分析判断文本情感倾向1. 语义提取提取情感词汇 2. 语义分类正面/负面/中性 3. 语义推理综合判断 4. 语义相似度与已知情感模式匹配串联组合 提取 → 分类 → 推理 → 输出示例2信息提取从文本中提取结构化信息1. 语义提取识别实体 2. 语义分类识别实体类型 3. 语义关联建立关系 4. 语义理解理解上下文并行串联组合 提取实体 → 分类类型 → 建立关联示例3语义搜索计算文本相似度1. 语义理解理解查询意图 2. 语义理解理解文档内容 3. 语义相似度计算匹配度 4. 语义聚类可能的分组并行处理比较组合 理解查询 ‖ 理解文档 → 相似度计算示例1情感分析作为运算单元运算情感分析(文本) 任务目标判断文本情感倾向 严格按以下步骤执行 【步骤1】语义提取提取情感词汇 - 仔细阅读输入文本 - 识别并列出所有表达情感的词汇、短语和语气词 - 区分显性情感词和隐性情感暗示 - 输出情感词汇列表 [词汇1, 词汇2, ...] 【步骤2】语义分类正面/负面/中性 - 对步骤1提取的每个情感词汇进行极性分类 - 分类标准 * 正面表达满意、喜爱、赞扬等积极情绪 * 负面表达不满、厌恶、批评等消极情绪 * 中性表达客观事实或无明显情感倾向 - 输出{词汇: 极性, ...} 【步骤3】语义推理综合判断 - 统计正面词汇数量和负面词汇数量 - 考虑情感强度如非常棒比不错强度更高 - 分析上下文语境对情感的影响 - 综合判断主导情感倾向 - 输出主导情感 正面/负面/中性 【步骤4】语义相似度与已知情感模式匹配 - 将当前文本的情感模式与已知情感模板进行匹配 - 计算匹配度0-1之间 - 置信度 匹配度 × 情感强度系数 - 输出置信度 0.xx 【步骤5】格式化输出 请按以下JSON格式输出最终结果 { 输入文本: ..., 情感词汇: [...], 主导情感: ..., 置信度: ..., 分析过程: { 步骤1_提取: ..., 步骤2_分类: ..., 步骤3_推理: ..., 步骤4_相似度: ... } } 输入示例这个产品太棒了 预期输出{主导情感: 正面, 置信度: 0.95, ...} 用户输入这个打氧气声音也太大了 输出输出{ 输入文本: 这个打氧气声音也太大了, 情感词汇: [太, 大], 主导情感: 负面, 置信度: 0.85, 分析过程: { 步骤1_提取: 识别出表达情感的词汇太程度副词强调超出预期、大描述声音特征结合语气词也和整体句式隐含不满情绪。, 步骤2_分类: {太: 负面, 大: 负面}。在上下文中太大组合表示超出可接受范围带有抱怨或批评倾向。, 步骤3_推理: 正面词汇数量0负面词汇数量2均指向同一负面特征。情感强度较高‘太’强化了不满。上下文为对产品噪音的抱怨主导情感为负面。, 步骤4_相似度: 与已知‘产品缺陷投诉’类负面模板匹配度高如‘声音太大’、‘太吵’等常见表达。匹配度约0.9情感强度系数约0.95综合置信度≈0.85。 } }示例2信息提取作为运算单元运算实体提取(文本) 任务目标从文本中提取结构化信息 严格按以下步骤执行 【步骤1】语义提取识别实体- 并行执行 - 识别文本中的命名实体包括 * 人名PER * 组织机构名ORG * 地点LOC * 时间TIME * 日期DATE * 数字NUM * 其他重要实体 - 输出实体列表 [{实体: ..., 位置: ...}, ...] 【步骤2】语义分类识别实体类型- 并行执行 - 对步骤1识别的每个实体进行类型分类 - 分类标准参考 * 人名个人姓名 * 组织公司、机构、团体 * 地点国家、城市、地址 * 时间年份、月份、具体时间点 * 事件动作、发生的事情 - 输出{实体: 类型, ...} 【步骤3】语义关联建立关系- 串联执行 - 分析实体之间的语义关系 - 识别关系类型 * 从属关系A属于B * 时间关系A发生在B时 * 地点关系A位于B * 因果关系A导致B * 其他语义关系 - 输出关系列表 [{实体1, 关系, 实体2}, ...] 【步骤4】语义理解理解上下文- 串联执行 - 理解文本的整体语境和事件框架 - 识别主要事件或动作 - 确定实体在事件中的角色 - 输出事件框架 {主要事件: ..., 参与者: [...], 时间: ..., 地点: ...} 【步骤5】结构化整合 - 将上述所有信息整合成结构化格式 - 去重和验证实体一致性 - 确保关系逻辑正确 - 输出完整结构化信息 【步骤6】格式化输出 请按以下JSON格式输出最终结果 { 输入文本: ..., 提取的实体: [ {实体: ..., 类型: ..., 位置: ...} ], 实体关系: [ {实体1: ..., 关系: ..., 实体2: ...} ], 事件框架: { 主要事件: ..., 参与者: [...], 时间: ..., 地点: ... }, 置信度: ... } 输入示例苹果公司成立于1976年 预期输出{公司: 苹果, 成立时间: 1976年, ...} 用户问题我认为写Prompt即自然语言编程 输出输出{ 输入文本: 我认为写Prompt即自然语言编程, 提取的实体: [ {实体: Prompt, 类型: 技术术语, 位置: 第4-10字符}, {实体: 自然语言编程, 类型: 技术概念, 位置: 第12-18字符} ], 实体关系: [ {实体1: Prompt, 关系: \等同于\或\可理解为\, 实体2:自然语言编程} ], “事件框架”: { “主要事件”: “表达观点将‘写Prompt’与‘自然语言编程’等同起来”, “参与者”: [“作者隐含”, “读者隐含”], “时间”: null, “地点”: null }, “置信度”0.85 } **说明** 1. **提取的实体** - Prompt作为特定技术术语指代与大模型交互的指令文本。 - 自然语言编程作为一个整体概念指使用人类日常语言进行程序设计的范式。 2. **实体关系** - “等同于”或“可理解为”原文中通过“即”字建立了这两个概念的等价或解释关系。 3. **事件框架** - **主要事件**是作者在陈述一个个人观点或定义。 - **参与者**为隐含的作者和潜在读者。 - 未明确提及具体时间和地点。 4. **置信度** - 0.85表示分析具有较高可靠性。由于句子结构清晰、逻辑直接但涉及的是主观观点而非客观事实故非满分。示例3语义搜索作为运算单元运算语义相似度(查询, 文档) 任务目标计算文本相似度 严格按以下步骤执行 【步骤1】语义理解理解查询意图- 并行分支A - 深入理解查询文本的核心意图 - 识别查询的关键词和主题 - 分析查询的语义层次 * 表层含义字面意思 * 深层含义真实需求 * 隐含信息未明说但重要的内容 - 提取查询的语义向量表示 - 输出查询语义 {主题: ..., 关键词: [...], 意图: ...} 【步骤2】语义理解理解文档内容- 并行分支B - 全面理解文档文本的主要内容 - 识别文档的核心主题和关键信息 - 分析文档的语义结构 * 主要观点 * 支持论据 * 相关细节 - 提取文档的语义向量表示 - 输出文档语义 {主题: ..., 关键词: [...], 内容概要: ...} 【步骤3】语义对齐并行结果合并- 串联执行 - 将步骤1和步骤2的语义表示进行对齐 - 识别查询和文档的共同主题 - 找出语义重叠部分 - 标记语义差异部分 - 输出对齐结果 {共同主题: [...], 重叠度: ..., 差异点: [...]} 【步骤4】语义相似度计算匹配度- 串联执行 - 基于语义对齐结果计算相似度分数 - 考虑多个维度 * 主题相似度0-1 * 关键词重合度0-1 * 意图匹配度0-1 * 语义深度匹配0-1 - 综合计算相似度 加权平均(各维度分数) - 输出相似度分数 0.xx 【步骤5】语义聚类可能的分组- 可选步骤 - 判断文档是否属于查询相关的主题簇 - 识别文档在主题空间中的位置 - 评估文档与查询主题簇的距离 - 输出聚类信息 {主题簇: ..., 距离: ..., 相关性: ...} 【步骤6】置信度评估 - 评估相似度计算的可靠性 - 考虑因素 * 文本长度影响 * 语义复杂度 * 匹配明确度 - 输出置信度 0.xx 【步骤7】格式化输出 请按以下JSON格式输出最终结果 { 查询: ..., 文档: ..., 相似度: ..., 置信度: ..., 分析详情: { 查询语义: {...}, 文档语义: {...}, 语义对齐: {...}, 相似度维度: { 主题相似度: ..., 关键词重合度: ..., 意图匹配度: ..., 语义深度匹配: ... }, 聚类信息: {...} } } 输入示例查询如何学习编程, 文档编程入门指南 预期输出{相似度: 0.89, 置信度: 0.92, ...}输出{ 查询: 如何用自然语言编程, 文档: 自然语言编程是一种新兴的软件开发范式它允许开发者使用人类日常语言如中文、英文来编写程序指令而不是传统的编程语言。其核心思想是通过自然语言处理技术将人类意图转化为可执行的代码。目前主要实现方式包括1基于大语言模型的代码生成工具2特定领域的自然语言接口3可视化编程与自然语言的结合。这种方法降低了编程门槛但也面临语义歧义、精确性不足等挑战。, 相似度: 0.86, 置信度: 0.91, 分析详情: { 查询语义: { 主题: 自然语言编程的方法与途径, 关键词: [如何, 用, 自然语言, 编程], 意图: \如何\表明用户希望获得方法指导或实践步骤\用\强调工具性或手段\自然语言\指代非形式化的人类日常用语\编程\是目标行为——整体意图是寻求使用人类日常语进行软件开发的实用指南或入门路径 }, 文档语义: { 主题: \什么是以及现状介绍为主的定义性与综述性内容, \关键词\: [\n \natural language programming\,\n \paradigm\,\n \NLP\,\n \code generation\,\n \low barrier\,\n \challenges\\n ], “内容概要”“本文档首先定义了‘natural language programming’的概念及其核心理念通过NLP将人类意图转为代码然后列举了三种当前主要的实现方式大模型生成、特定领域接口、可视化结合最后简要讨论了该范式的优势降低门槛与挑战歧义、精度问题。整体是一篇介绍性/说明文。” }, “semantic alignment”{ “common themes”[“natural language programming”“implementation methods”“advantages and challenges”] “overlap degree”0.82 “difference points”[ “查询侧重于‘how-to’操作指南文档更偏向于‘what-is’概念阐述” “查询隐含寻找具体工具或步骤文档提供了分类框架但未给出逐步教程” ] } “similarity dimensions”{ “topic similarity”0.95 “keyword overlap rate”0.75 “intent matching degree”:0.80, semantic depth match0.85 } clustering information{ Theme cluster:Natural Language Programming Low-Code Development Tools, DISTANCE FROM QUERY CLUSTER CENTROID: ~0.15 (within same cluster), relevance:Highly relevant - document directly addresses the core concept inquired about, though with more definitional than procedural focus. } } }三. 语义运算高级语言混合编程由前面可以看出大模型有独特的语义运算能力天然具有适配用户自然语言指令的能力但是由于其概率模型的特征无法避免不稳定性。 因此一种自然的想法就是混合编程**大模型负责语义理解、决策、规划高级语言程序负责精准、可靠、高效的底层执行。二者结合达成既能拥有传统程序的稳定性又具备大模型的灵活适配能力。**这个也是当前大厂落地均严格遵循同一原则也是混合编程的可靠性核心大模型只做「语义层面的转化 / 规划」不做任何「决策 / 执行 / 校验」所有「决策 / 执行 / 校验」均由高级语言开发的「规则引擎 / 工作流引擎 / 固定程序」完成。以下列出当前比较流行的两种典型方式1.工具 / 函数调用Function/Tool Calling最基础、最通用的核心方式。 这是目前落地最广、可靠性最高的主流方式也是所有混合编程的基础核心逻辑大模型仅负责语义解析需求→匹配预定义的工具 / 函数 / API→生成标准化调用参数不参与任何底层执行和决策预定义的工具 / 函数高级语言开发负责精准执行规则引擎负责参数校验 / 权限判定大模型全程只做 “语义翻译官”。典型场景调用天气 / 物流 API、本地 Python 脚本如查重、系统命令如 del 删除调用数据库查询函数、OCR / 语音识别工具、文件处理工具等。核心优势工程化成本最低、可控性最强工具 / 函数是固定的高级语言程序大模型仅传递参数无决策风险是企业从 0 到 1 落地混合编程的首选。2.语义驱动的工作流编排Semantic Workflow Orchestration企业复杂业务的主流落地方式。基于工具调用做上层延伸是处理多步骤、多工具联动复杂业务的核心方式主流框架如LangChain均深度支持也是互联网 / 政企 / 金融行业落地的典型范式。核心逻辑1大模型负责语义解读复杂诉求→拆解为可执行的子任务→按业务逻辑编排工具 / 函数的执行链路顺序 / 分支 / 循环→生成标准化工作流参数2工作流引擎高级语言开发如 LangChain Agent 负责执行链路调度 规则校验各工具 / 函数负责底层执行典型场景针对于某一类需要自动化的场景用户诉求类似流程也差不多翻来覆去也总是用那么几个工具。 以前必须由人来理解用户诉求根据不同的策略拆解成子任务组合编排后挑选不同的工具来完成。这种任务就比较适合用语义驱动的工作流编排方式来代替人工底层的执行仍旧是调用高级语言程序保证出入口校验过程执行可靠。智能文件清理查重脚本→规则引擎筛选可删文件→系统 del 命令→备份脚本智能数据分析Excel 读取函数→数据清洗脚本→可视化工具→报告生成函数客服自动化意图识别函数→知识库查询工具→工单创建 API→短信通知接口。核心优势兼顾复杂业务的灵活性和工程执行的稳定性大模型仅做 “链路规划师”实际调度和决策由工作流引擎 / 规则引擎完成适配企业级复杂业务落地。3.语义转结构化指令Text-to-Structured Code/Config高稳定性场景的优选方式。 这是对可靠性要求极高的场景如金融、医疗、工业控制的主流落地方式完全规避大模型的决策风险仅利用其语义理解能力也是传统软件系统对接大模型的最安全方式。核心逻辑大模型仅负责将自然语言模糊需求→转化为标准化的结构化指令如 SQL 查询语句、配置文件 /yml、参数列表、简单脚本片段固定高级语言程序 / 系统负责解析并执行结构化指令规则引擎负责校验指令的合法性 / 安全性大模型不参与任何执行和决策。典型细分场景Text-to-SQL自然语言查数据→生成标准 SQL→数据库执行金融 / 电商数据查询Text-to-Config自然语言定义需求→生成 yml 配置文件→程序读取执行工业控制 / 系统部署Text-to-Script自然语言描述轻量需求→生成固定模板的 Python/Shell 片段→沙箱环境执行数据清洗 / 格式转换。核心优势稳定性高大模型仅做 “语义转结构化的翻译器”执行和决策完全由传统程序 / 系统把控适配对合规、安全、可追溯要求极高的行业。4 其它除了以上的三种方式外其它的还有一些玩的比较多但是工业实践不推荐的方式#方式不推荐原因说明1大模型直接生成完整代码并执行易出 bug、有安全风险、不可控2大模型做最终决策并触发执行易产生幻觉决策导致误操作 / 数据丢失3纯大模型驱动的智能体Agent无规则校验执行落地性差四. 总结大语言编程使得编程的门槛彻底的降低代码本身就是“意图的自然语言描述”编程语言彻底从「机器语言」回归「人类语言」。但是同样悖论是由于人类语言天然的灵活性、多义性如何构建无歧义稳定输出的自然语言程序就成了要解决的问题。而参考高级语言程序建立统一规范化的结构、术语、流程、规则 则是下一步业界应该努力的工作而我也相信由于实践的需求大厂的推荐业界终将会形成一套事实上的规范同样拥有 标准化的语义元素、标准化的语义运算库各种语义运算优化策略。拭目以待看完点 ❤️关注❤️✨更新不迷路干货更丰富✨