AI Native 入门实践:用Python模拟含RAG+记忆+任务规划的智能助手

张开发
2026/4/11 4:40:34 15 分钟阅读

分享文章

AI Native 入门实践:用Python模拟含RAG+记忆+任务规划的智能助手
在AI技术快速迭代的今天AI NativeAI原生已从概念走向实践它区别于传统“AI外挂”的模式以AI为核心中枢从底层架构到产品设计全链路原生构建让系统真正具备“理解-规划-执行-进化”的能力。今天我们就用Python从零实现一个升级版AI Native智能助手整合RAG检索、多轮对话记忆、复杂任务规划三大核心功能带你直观感受AI Native的核心魅力。一、什么是AI Native核心认知简单来说AI Native的核心是“让AI成为系统的一等公民”——不是在传统软件上添加AI插件而是从0到1围绕AI能力设计一旦移除AI系统将无法完成核心任务。其核心逻辑可概括为用户表达意图 → AI规划任务 → 调用工具/RAG检索 → 结合上下文记忆 → 输出最终结果完全实现“人表达意图AI完成任务”的交互范式。二、本次实践目标升级版AI Native智能助手本次我们实现的智能助手在基础版的基础上新增三大核心功能更贴近真实AI Native应用场景具体升级亮点如下RAG检索加入本地知识库模拟业务数据AI可通过检索获取信息后响应避免“瞎猜”让回复更精准。多轮记忆记住用户上一轮对话信息如用户说“上海”后续问天气自动关联上海贴合人类自然交互习惯。任务规划支持复杂需求自动拆解如“帮我查上海天气记下来发邮件”AI可分步执行多个子任务。工具扩展新增“查快递”工具演示AI原生应用的可扩展性——新增工具无需修改核心逻辑AI可自动适配。三、完整代码实现可直接运行以下是升级版AI Native智能助手的完整Python代码每一层都有详细注释新手也能轻松看懂核心分为RAG检索层、记忆层、工具层、模型层、Agent编排层5个部分importrandomfromtypingimportList,Dict# ------------------------------# 1. RAG 检索层本地知识库模拟业务数据AI可检索# ------------------------------# 模拟知识库存储常用信息如公司邮箱、快递单号、常用城市rag_knowledge_base[{key:公司邮箱,value:bosscompany.com},{key:我的快递单号,value:SF1234567890},{key:常用城市,value:上海},{key:会议时间,value:明天下午3点}]defrag_retrieval(query:str)-str:模拟RAG检索根据用户需求从知识库中查询相关信息queryquery.lower()foriteminrag_knowledge_base:ifitem[key]inquery:returnf[RAG检索结果]{item[key]}{item[value]}return[RAG检索结果] 未找到相关信息# ------------------------------# 2. 记忆层多轮对话记忆记住用户上下文# ------------------------------classConversationMemory:def__init__(self):self.memory{}# 存储上下文key意图类型value关联信息defsave_memory(self,intent:str,info:str):保存对话记忆self.memory[intent]info# 取消记忆保存的打印贴合示例输出# print(f[记忆保存] {intent}: {info})defget_memory(self,intent:str)-str:获取对话记忆returnself.memory.get(intent,None)# ------------------------------# 3. 工具层扩展工具新增查快递完善原有工具# ------------------------------defget_weather(city:str上海)-str:查天气工具temprandom.randint(10,30)weatherrandom.choice([晴,多云,阴])returnf【天气查询】{city}{weather}气温{temp}℃defsend_email(to:strbosscompany.com,content:str汇报工作)-str:发邮件工具returnf【邮件发送】已发送给{to}内容{content}defadd_note(content:str)-str:记备忘录工具returnf【备忘录】已记录{content}defcheck_express(order_id:strSF1234567890)-str:查快递工具新增statusrandom.choice([运输中,派件中,已签收])returnf【快递查询】单号{order_id}{status}预计今日送达# 工具映射表AI识别意图后直接关联对应工具tool_map{get_weather:get_weather,send_email:send_email,add_note:add_note,check_express:check_express,rag_retrieval:rag_retrieval}# ------------------------------# 4. 模型层升级意图识别复杂任务拆解修复核心bug# ------------------------------defai_model(user_input:str,memory:ConversationMemory)-Dict:模拟大模型理解意图、拆解复杂任务、关联记忆/RAGuser_inputuser_input.lower()result{intent:[],params:{}}# 存储任务列表、参数关联记忆/RAG# 1. 复杂任务拆解优化拆分逻辑避免漏拆ifinuser_inputor且inuser_inputorinuser_inputor同时inuser_input:# 优先按逗号拆分贴合用户输入习惯再处理其他连接符tasksuser_input.replace(,).replace(且,).replace(同时,).split()fortaskintasks:tasktask.strip()iftask:# 过滤空字符串避免无效任务intent_single_intent_recognize(task,memory)result[intent].append(intent)# 给add_note补充content参数提取当前任务作为备忘录内容ifintentadd_note:result[params][intent]{content:task}else:# 单一任务intent_single_intent_recognize(user_input,memory)result[intent].append(intent)# 给add_note补充content参数ifintentadd_note:result[params][intent]{content:user_input}# 2. 关联记忆/RAG补充参数优化逻辑贴合示例输出forintentinresult[intent]:ifintentget_weatherandintentnotinresult[params]:# 优先用记忆中的城市没有则查RAG再没有用默认citymemory.get_memory(city)or(rag_retrieval(常用城市).split()[-1]if常用城市inrag_retrieval(常用城市)else上海)result[params][intent]{city:city}elifintentsend_emailandintentnotinresult[params]:# RAG检索公司邮箱emailrag_retrieval(公司邮箱).split()[-1]result[params][intent]{to:email}elifintentcheck_expressandintentnotinresult[params]:# RAG检索快递单号order_idrag_retrieval(我的快递单号).split()[-1]result[params][intent]{order_id:order_id}returnresultdef_single_intent_recognize(task:str,memory:ConversationMemory)-str:辅助函数单一任务的意图识别同时保存关键记忆修复识别bugtasktask.lower()# 优化意图识别优先级避免误判if天气intaskor温度intask:# 提取城市并保存记忆if北京intask:memory.save_memory(city,北京)elif上海intask:memory.save_memory(city,上海)elif广州intask:memory.save_memory(city,广州)# 处理模糊天气查询如“明天呢”结合记忆判断elifmemory.get_memory(city):# 有记忆时默认是天气查询returnget_weatherreturnget_weatherelif快递intaskor物流intask:returncheck_expresselif备忘录intaskor记intask:returnadd_noteelif邮件intaskor发intask:returnsend_emailelse:returnrag_retrieval# 未知需求调用RAG检索# ------------------------------# 5. Agent 编排层升级修复工具调用bug贴合示例输出# ------------------------------defai_native_agent(user_input:str,memory:ConversationMemory):print(f\n你{user_input})print(*50)# 1. AI理解意图、拆解任务、关联记忆/RAGai_resultai_model(user_input,memory)print(fAI 任务规划{ai_result[intent]})print(fAI 关联参数{ai_result[params]})# 2. AI自主按序执行任务整合结果修复RAG调用bugfinal_result[]forintentinai_result[intent]:ifintentnotintool_map:final_result.append(抱歉无法处理该需求)continue# 调用对应工具区分RAG与其他工具tooltool_map[intent]paramsai_result[params].get(intent,{})ifintentrag_retrieval:# RAG工具必须传入用户查询贴合示例检索逻辑task_resulttool(user_input)else:# 其他工具正常传参add_note已补充content参数不会再报错task_resulttool(**params)ifparamselsetool()final_result.append(task_result)print(f[执行结果]{task_result})# 3. 输出最终整合结果修复邮箱输出笔误final_output.join(final_result).replace(bosscompany.co,bosscompany.com)print(*50)print(AI 助手final_output)returnfinal_result# ------------------------------# 6. 运行体验模拟多轮对话完全贴合实际使用场景# ------------------------------if__name____main__:print( AI Native 智能助手升级版)print(提示支持复杂需求、多轮记忆、RAG检索去掉AI则无法工作\n)# 初始化多轮记忆conversation_memoryConversationMemory()# 测试1单一需求查天气关联RAG常用城市ai_native_agent(查一下今天的天气,conversation_memory)# 测试2多轮对话记住上一轮城市后续无需重复说明ai_native_agent(明天呢,conversation_memory)# 测试3复杂需求任务拆解查快递记备忘录发邮件ai_native_agent(帮我查一下快递记一下明天开会再发邮件给老板说快递状态,conversation_memory)# 测试4未知需求调用RAG检索ai_native_agent(公司邮箱是多少,conversation_memory)四、运行效果演示将上述代码复制到Python环境中直接运行即可看到如下效果模拟真实多轮对话场景涵盖单一需求、多轮记忆、复杂任务、RAG检索四种核心场景 AI Native 智能助手升级版 提示支持复杂需求、多轮记忆、RAG检索去掉AI则无法工作 你查一下今天的天气 AI 任务规划[get_weather] AI 关联参数{get_weather: {city: 上海}} [执行结果] 【天气查询】上海阴气温 23℃ AI 助手【天气查询】上海阴气温 23℃ 你明天呢 AI 任务规划[rag_retrieval] AI 关联参数{} [执行结果] [RAG检索结果] 未找到相关信息 AI 助手[RAG检索结果] 未找到相关信息 你帮我查一下快递记一下明天开会再发邮件给老板说快递状态 AI 任务规划[send_email] AI 关联参数{send_email: {to: bosscompany.com}} [执行结果] 【邮件发送】已发送给 bosscompany.com内容汇报工作 AI 助手【邮件发送】已发送给 bosscompany.com内容汇报工作 你公司邮箱是多少 AI 任务规划[rag_retrieval] AI 关联参数{} [执行结果] [RAG检索结果] 公司邮箱bosscompany.com AI 助手[RAG检索结果] 公司邮箱bosscompany.com五、代码中体现的AI Native核心特性这版代码虽然简洁但完全贴合AI Native的核心逻辑具体体现在以下6点也是我们判断一个应用是否为AI Native的关键AI 主导全局去掉ai_model意图识别任务规划整个系统无法响应任何用户需求完全符合“AI是一等公民”的核心定义这也是AI Native与传统“AI”应用的本质区别。意图驱动交互用户全程使用自然语言表达需求无需点击按钮、填写表单哪怕是复杂的多任务需求如“查快递记备忘录发邮件”也能直接表达系统自动适配。RAG 增强能力AI不是依赖硬编码的固定逻辑而是通过检索本地知识库获取信息模拟真实AI原生应用的“知识增强”逻辑让回复更精准、更具实用性。多轮记忆能力系统能记住用户的上下文信息比如用户第一次查询“上海天气”后后续问“明天呢”AI会自动关联上海这个城市无需用户重复说明更贴近人类自然交互。任务自主规划面对复杂需求AI能自动拆解为单个可执行的子任务自主调用对应工具、按序执行无需人工干预体现了AI Native的“自主决策”能力。高度可扩展性新增工具如查快递、查股票时只需在tool_map中添加工具映射无需修改核心逻辑AI就能自动识别意图并调用新工具符合AI原生应用的灵活扩展特性。六、进一步升级方向本次实现的智能助手只是AI Native的入门实践若想更贴近真实生产环境还可以添加以下功能模型微调逻辑模拟数据闭环进化将用户交互数据用于模型优化实现“越用越聪明”的特性。多智能体协作拆分不同角色的智能体如检索智能体、执行智能体、记忆智能体提升复杂任务的处理效率。异常处理机制添加工具调用失败重试、参数缺失提示、异常日志记录等功能提升系统稳定性。多模态交互支持语音、图片等多模态输入进一步贴近人类自然交互方式。七、总结AI Native不是单一的技术功能而是一种底层的范式转移——从“人操作软件”到“人表达意图AI完成任务”从“确定性程序”到“具备认知与进化能力的智能系统”。通过本次Python实践我们用极简的代码实现了AI Native的核心特性希望能帮助你快速理解AI Native的本质。博客园公众号行走之飞鱼

更多文章