【AI原生开发实战】1.2 传统开发 vs AI原生开发:思维转变与架构差异

news2026/4/8 15:42:39
学习目标通过本章的学习你将掌握以下核心知识点理解传统软件开发与AI原生开发的本质差异掌握两种开发范式在思维模式上的根本转变对比确定性编程与概率性编程的核心特征应用从写规则到写Prompt的思维转变方法实践通过具体代码示例体验两种开发模式的差异1. 传统软件开发范式1.1 确定性计算的本质传统软件开发建立在确定性计算的基础之上。这一理念源于图灵机模型——一个具有有限状态机的抽象机器对于给定的输入经过确定的计算步骤必然产生唯一确定的输出。这种计算范式构成了现代计算机科学的理论基石也是我们几十年来构建软件系统的基础。在确定性计算的世界里软件的每一行代码都承载着精确的指令。if语句精确地划分了程序的分支路径循环结构以可预测的次数重复执行操作函数调用通过栈帧管理实现精确的状态转换。这种精确性使得软件行为可以被完整地描述、测试和验证。开发者可以用有限的状态空间描述系统的所有可能行为通过穷举测试确保系统在每一种可能的输入组合下都能给出正确的响应。# 传统开发示例计算个人所得税defcalculate_tax(income:float,tax_rate:float0.2)-dict: 确定性计算相同的输入总是产生相同的输出 ifincome0:raiseValueError(收入不能为负数)ifincome5000:taxable_income0elifincome8000:taxable_income(income-5000)*0.03elifincome17000:taxable_income900(income-8000)*0.10else:taxable_income9009000(income-17000)*0.20tax_amounttaxable_income after_taxincome-tax_amountreturn{gross_income:income,taxable_income:taxable_income,tax_amount:round(tax_amount,2),after_tax_income:round(after_tax,2)}# 测试用例输入确定 → 输出确定resultcalculate_tax(15000)print(result)# 每次执行结果完全一致确定性计算的优势在于其可预测性和可测试性。软件工程师可以通过形式化方法验证程序的正确性通过单元测试、集成测试和系统测试构建完整的质量保障体系。当生产环境中出现bug时开发者可以通过重现问题的具体输入序列精确定位问题代码并修复。1.2 规则驱动的实现方式传统软件开发的核心方法论是规则驱动。开发者通过将业务知识转化为精确的规则集来实现系统功能。这些规则以条件语句、配置文件、业务流程图等形式存在构成了软件行为的完整描述。以电商平台的商品推荐系统为例传统开发会这样实现# 传统推荐系统基于规则的实现classRuleBasedRecommender:def__init__(self,user_profile:dict,product_catalog:list):self.user_profileuser_profile self.product_catalogproduct_catalogdefrecommend(self,limit:int10)-list: 基于预定义规则的推荐逻辑 recommendations[]# 规则1价格区间匹配price_rangeself.user_profile.get(preferred_price_range,{})min_priceprice_range.get(min,0)max_priceprice_range.get(max,float(inf))# 规则2类别偏好preferred_categoriesself.user_profile.get(categories,[])# 规则3用户年龄段匹配user_ageself.user_profile.get(age,30)forproductinself.product_catalog:score0# 评分规则价格合理性ifmin_priceproduct[price]max_price:score30# 评分规则类别匹配ifproduct[category]inpreferred_categories:score25# 评分规则库存状态ifproduct[stock]0:score10else:score-100# 无库存直接排除ifscore50:recommendations.append({product_id:product[id],product_name:product[name],score:score})returnsorted(recommendations,keylambdax:x[score],reverseTrue)[:limit]这种基于规则的实现方式具有明显的优点规则清晰可见便于业务人员理解和审核规则可以配置化便于调整和优化系统行为完全可预测便于测试和调试。1.3 传统开发的核心特征传统软件开发经过数十年的发展形成了一套成熟的工程实践体系。其核心特征可以归纳为以下几个方面第一输入-输出的精确映射。传统软件接受确定的输入经过预定义的计算逻辑产生确定的输出。这种映射关系是数学意义上的函数f(x)yf(x) yf(x)y其中对于定义域内的每一个xxx都有且仅有一个yyy与之对应。第二可穷举的测试空间。传统软件的状态空间虽然可能很大但原则上是可以穷举的。通过精心设计的测试用例开发者可以覆盖程序的所有重要路径。第三确定性执行流程。传统软件的执行流程是确定的、可追溯的。当程序出现错误时开发者可以通过断点调试、日志追踪等手段重现问题发生时的完整执行路径。第四模块化的系统架构。面向对象编程、设计模式等方法论为传统软件开发提供了成熟的架构指导。2. AI原生开发范式2.1 概率性计算的本质AI原生开发的核心是概率性计算。与确定性计算不同概率性计算不再追求正确答案而是追求最可能正确的答案。这种计算范式源于统计学和机器学习理论——通过大量数据学习输入与输出之间的概率分布而非精确的映射关系。大规模语言模型Large Language Model, LLM是概率性计算的典型代表。以GPT系列模型为例它们通过在海量文本数据上的预训练学习了人类语言的统计规律。当模型接收到一个提示Prompt时它并不是理解了提示然后思考出答案而是根据训练过程中学到的语言统计规律生成一个在概率意义上最可能的输出序列。这种概率性计算的本质可以用条件概率公式来理解对于给定的输入序列xxx模型输出序列yyy的概率为P(y∣x)P(y|x)P(y∣x)。模型的生成过程就是求解y^arg⁡max⁡yP(y∣x)\hat{y} \arg\max_y P(y|x)y^​argymax​P(y∣x)# AI原生开发示例智能客服对话系统fromtypingimportList,DictclassAI原生智能客服:def__init__(self,llm_client):self.llmllm_client# 系统提示词定义AI角色和技能边界self.system_prompt你是一位专业的电商客服助手名字叫小智。 你需要 1. 友好、耐心地回答用户问题 2. 熟悉平台商品信息能给出购买建议 3. 处理退换货、订单查询等售后问题 4. 当遇到无法解决的问题时引导用户联系人工客服 回复要求 - 语言简洁、专业、易懂 - 对于需要核实的问题先说明需要查询后再回复defchat(self,user_message:str,conversation_history:List[Dict]None)-str: 概率性生成相同的输入可能产生不同的输出 messages[{role:system,content:self.system_prompt}]ifconversation_history:messages.extend(conversation_history)messages.append({role:user,content:user_message})responseself.llm.chat(messages)returnresponse[content]2.2 意图驱动的实现方式AI原生开发采用意图驱动的实现方式。与传统开发中精确的规则匹配不同意图驱动关注的是理解用户想要达成的目标而非机械地匹配关键词或条件。意图驱动包含三个核心环节意图识别、槽位提取和响应生成。# 意图驱动的AI原生实现classIntentDrivenOrderSystem:def__init__(self,llm_client,tools:dict):self.llmllm_client self.toolstoolsdefprocess_user_input(self,user_message:str,context:dictNone)-dict: 意图驱动的核心处理流程 # Step 1: 意图识别intent_promptf分析用户消息判断用户意图。 用户消息{user_message}可选意图 - order_query: 订单查询 - order_cancel: 取消订单 - product_search: 商品搜索 - greeting: 问候闲聊 返回格式{{intent: 意图名称, confidence: 置信度}}intent_resultself.llm.generate(intent_prompt)parsedself._parse_json(intent_result)intentparsed.get(intent,other)ifintentorder_query:order_idself._extract_order_id(user_message,context)returnself._handle_order_query(order_id)elifintentproduct_search:slotsself._extract_product_slots(user_message)returnself._handle_product_search(slots)else:returnself._handle_general(user_message,context)2.3 AI原生开发的核心特征AI原生开发范式具有以下几个显著特征第一概率性输出。与传统软件不同AI原生应用的输出不是确定性的。同样的输入可能产生略有不同的输出这是由语言模型的生成机制决定的。第二语义理解能力。AI原生应用能够理解自然语言的语义而非仅仅匹配关键词。这意味着系统能够处理用户的自然表达、模糊描述、口语化表达等难以用传统规则覆盖的场景。第三上下文感知能力。AI原生应用能够记住对话历史在多轮对话中保持一致性和连贯性。第四涌现能力Emergent Capabilities。大规模语言模型展现出一些在小模型中不存在的涌现能力如思维链推理、零样本学习、多步骤规划等。3. 核心差异对比分析3.1 思维模式对比传统开发与AI原生开发在思维模式上存在根本性的差异。传统开发采用演绎式思维——从一般性的业务规则出发推导出具体的实现逻辑。而AI原生开发采用归纳式思维——从大量的示例和数据中学习规律然后应用到新的场景。对比维度传统开发AI原生开发思维范式演绎式从规则到实现归纳式从数据到规律问题解决方式分解问题精确求解定义目标近似求解知识表示显式规则if-then-else隐式表示神经网络权重错误处理异常捕获明确处理容错生成自动补偿可解释性代码即逻辑可追溯模型黑箱难解释优化方向算法效率、代码质量模型能力、Prompt优化3.2 开发流程对比传统开发流程遵循经典的软件工程方法论需求分析 → 系统设计 → 编码实现 → 单元测试 → 集成测试 → 部署上线。AI原生开发流程更强调迭代和实验需求定义 → Prompt工程 → 模型选择 → 原型开发 → 效果评估 → 优化迭代 → 部署上线。3.3 质量保障对比质量维度传统开发AI原生开发测试方式断言验证精确匹配语义评估模糊匹配Bug类型逻辑错误、空指针等幻觉、一致性丧失等定位难度相对容易可追溯困难需大量调试回归测试自动化程度高需要专门的LLM评估4. 思维转变从写规则到写Prompt4.1 思维转变的本质从传统开发转向AI原生开发最核心的转变是从写规则到写Prompt。这个转变不仅仅是技术层面的变化更是一种思维范式的迁移。写规则的思维是确定性的开发者清晰地知道系统应该做什么并通过精确的代码逻辑实现这个目标。写Prompt的思维是概率性的开发者定义AI应该扮演什么角色、应该遵循什么原则、应该以什么方式回应。开发者通过Prompt间接地引导AI的行为而不是直接控制它。4.2 Prompt设计的核心原则有效的Prompt设计需要遵循以下核心原则原则一角色定义Role Definition清晰地定义AI的角色身份可以显著提升回答的质量。# 缺乏角色定义prompt解释一下什么是机器学习# 有效的角色定义prompt你是一位资深的计算机科学教授在清华大学从事机器学习教学15年。 你擅长用通俗易懂的方式解释复杂的概念。 请向一个计算机专业大一学生解释什么是机器学习 要求 1. 从生活中的例子出发 2. 避免过于专业的术语 3. 控制在300字以内原则二任务拆解Task Decomposition将复杂任务拆解为简单步骤让AI一步一步地处理。原则三输出格式约束Output Format明确指定期望的输出格式可以减少解析成本提高输出可用性。原则四示例驱动Few-shot Learning通过提供示例Few-shot Examples帮助AI理解期望的输入-输出模式。# Few-shot有示例prompt请将中文句子转换为拼音不带声调。 示例 输入我爱中国 输出wo ai zhong guo 输入今天天气很好 输出5. 实践代码相同需求的两种实现对比需求实现一个用户评论情感分析系统5.1 传统开发实现# 传统开发实现基于规则的情感分析classRuleBasedSentimentAnalyzer: 基于情感词典和规则的情感分析器 def__init__(self):# 正面情感词典self.positive_words{好:1,很好:2,非常好:3,优秀:3,棒:2,赞:2,满意:2,喜欢:2,推荐:2,完美:3,一流:3,}# 负面情感词典self.negative_words{差:-1,很差:-2,失望:-2,糟糕:-3,垃圾:-3,不满意:-2,不喜欢:-2,骗子:-3,}defanalyze(self,text:str)-dict:分析文本情感importre wordsre.findall(r[\u4e00-\u9fff],text.lower())sentiment_score0forwordinwords:ifwordinself.positive_words:sentiment_scoreself.positive_words[word]elifwordinself.negative_words:sentiment_scoreself.negative_words[word]normalized_scoremax(-1,min(1,sentiment_score/5))return{sentiment:positiveifnormalized_score0.2elsenegativeifnormalized_score-0.2elseneutral,score:round(normalized_score,3)}5.2 AI原生开发实现# AI原生开发实现基于LLM的情感分析classLLMSentimentAnalyzer: 基于大语言模型的情感分析器 def__init__(self,llm_client):self.llmllm_client self.prompt_template你是一个专业的情感分析专家。 请分析以下评论的情感 评论内容 {text} 请以JSON格式返回 {{ overall_sentiment: positive/negative/neutral, sentiment_score: -1到1之间的分数, emotions: [具体情感词1, 情感词2], intensity: 情感强度1-10 }}defanalyze(self,text:str)-dict:分析文本情感promptself.prompt_template.format(texttext)responseself.llm.generate(prompt)returnself._parse_json(response)5.3 两种实现的对比分析对比维度传统实现AI原生实现实现复杂度需要构建和维护情感词典Prompt即可代码简单语言覆盖需为每种语言建词典多语言原生支持新词处理需手动更新词典自动理解新词上下文理解困难容易讽刺/反语难以识别可识别响应速度快本地计算慢依赖API成本低一次性开发按调用计费6. 小结本章我们深入探讨了传统软件开发与AI原生开发的核心差异确定性 vs 概率性传统开发追求精确的输入-输出映射AI原生开发接受概率性的、基于语义的响应。规则驱动 vs 意图驱动传统开发通过精确的规则定义系统行为AI原生开发通过理解和引导用户意图来满足需求。穷举测试 vs 迭代优化传统开发可以通过穷举测试保证质量AI原生开发需要通过持续迭代和评估来优化效果。Prompt是新的代码在AI原生开发中Prompt的设计变得至关重要。不是替代而是互补传统开发和AI原生开发各有优势应该根据场景选择合适的方案。7. 习题理论题概念辨析解释确定性计算与概率性计算的本质区别并各举一个生活中的例子。思维对比为什么说从写规则到写Prompt的转变是一种思维范式的迁移架构思考在什么场景下应该选择传统开发在什么场景下应该选择AI原生开发实践题Prompt重构将以下传统代码逻辑改写为Prompt实现判断用户会员等级。系统设计设计一个智能客服系统要求能处理订单查询、退换货、商品推荐等常见问题。对比实验分别使用传统方法和AI原生方法实现一个垃圾评论识别功能。8. 参考文献Brown, T. B., et al. (2020). “Language Models are Few-Shot Learners.”NeurIPS 2020.Wei, J., et al. (2022). “Chain-of-Thought Prompting Elicits Reasoning in Large Language Models.”NeurIPS 2022.Ouyang, L., et al. (2022). “Training language models to follow instructions with human feedback.”NeurIPS 2022.Vaswani, A., et al. (2017). “Attention Is All You Need.”NeurIPS 2017.周志华. (2016). 《机器学习》. 清华大学出版社.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2496410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…