2026/5/13 3:21:09
网站建设
项目流程
文字网站和图片网站哪个难做,网站建设的技术有哪些方面,网站编程培训学校有哪些,在线制作图标阿里Agentic AI架构师亲授#xff1a;上下文工程如何让智能体更懂用户
引言#xff1a;为什么智能体需要“更懂用户”#xff1f;
在电商客服场景中#xff0c;用户说“我想给妈妈买个生日礼物#xff0c;她喜欢素雅的风格#xff0c;预算500以内”#xff0c;智能体如…阿里Agentic AI架构师亲授上下文工程如何让智能体更懂用户引言为什么智能体需要“更懂用户”在电商客服场景中用户说“我想给妈妈买个生日礼物她喜欢素雅的风格预算500以内”智能体如果能立刻联想到该用户去年给妈妈买过真丝围巾历史购买记录上周浏览过“中老年生日礼物TOP10”清单行为数据妈妈的收货地址在北方当前季节需要保暖环境数据之前对话中提到妈妈讨厌鲜艳颜色历史上下文那么它就能精准推荐“真丝保暖披肩”而不是泛泛的“化妆品套装”。这种“懂用户”的体验正是智能体从“工具化”走向“人格化”的关键。阿里在电商、客服、物流等场景的智能体实践中发现智能体的“理解能力”本质上取决于“上下文工程”的能力。如果把大模型比作“大脑”那么上下文就是“记忆”——没有经过系统设计的“记忆”大脑再聪明也无法做出符合用户预期的决策。本文结合阿里Agentic AI架构师团队的实战经验拆解“上下文工程”的核心逻辑、关键技术与落地方法帮你掌握让智能体“更懂用户”的底层密码。一、什么是上下文工程不是“存历史对话”那么简单1. 上下文工程的定义上下文工程Context Engineering是系统性设计、管理、优化智能体“上下文信息”的工程方法目标是让智能体能够准确识别用户的当前需求比如“买生日礼物”结合用户的历史行为比如“去年买过真丝围巾”适配环境场景比如“北方冬季需要保暖”保持对话一致性比如“不推荐之前说过的鲜艳颜色”最终生成“贴合用户意图”的回答。2. 与“普通上下文”的本质区别很多开发者认为“上下文就是历史对话”这是对上下文的狭义理解。阿里的上下文工程强调“三维上下文”用户维度用户画像年龄、性别、偏好、历史行为购买、浏览、点击、历史对话之前说过的话场景维度当前时间比如“双11期间”、地点比如“北方城市”、设备比如“手机端”领域维度行业知识比如电商的“退换货规则”、产品知识库比如“真丝披肩的材质特点”。普通上下文是“被动存储”而上下文工程是“主动设计”——通过结构化的方法让上下文“可检索、可更新、可复用”。3. 上下文工程的核心目标阿里Agentic AI架构师团队将其总结为“三个对齐”意图对齐让智能体理解用户“真正想要的”比如用户说“有没有适合妈妈的礼物”其实想要“素雅、保暖、预算500以内”的商品场景对齐让智能体适配当前场景比如“双11期间”推荐“性价比高的促销商品”人格对齐让智能体保持一致的“性格”比如“亲切、专业”的语气不忽冷忽热。二、上下文工程的核心组件从“数据”到“可利用的记忆”阿里的上下文工程体系分为五大核心组件覆盖“从数据收集到决策输出”的全流程1. 上下文来源哪里找“懂用户”的信息上下文的质量直接决定智能体的理解能力。阿里智能体的上下文来源主要包括用户输入当前对话的文本、语音、图片比如用户发了一张“妈妈的照片”需要识别年龄和风格历史行为电商场景中的购买记录、浏览记录、收藏记录客服场景中的投诉记录、退换货记录用户画像通过注册信息、行为数据构建的标签比如“中年女性、偏好素雅风格、预算敏感”环境数据当前时间比如“11月”、地点比如“北京”、设备比如“手机端”、网络状态比如“4G”领域知识行业规则比如“7天无理由退换货”、产品知识库比如“真丝披肩的保暖系数”。2. 上下文处理从“原始数据”到“结构化信息”原始数据是“杂乱无章”的比如用户的历史对话可能有1000条需要通过以下步骤处理清洗去除无效信息比如“哦”“嗯”等无意义词汇、纠正错误比如“披肩”写成“披巾”结构化将非结构化数据转化为结构化格式比如把“妈妈喜欢素雅风格”存储为{user_preference: 素雅}语义增强通过大模型提取隐含信息比如从“去年买过真丝围巾”推断“用户认可真丝材质”。3. 上下文存储如何高效管理“记忆”阿里采用“分层存储模型”解决“上下文过载”问题短期上下文Short-term Context最近5轮对话内容存储在内存中用于处理当前对话的连贯性比如“用户刚说‘预算500以内’”中期上下文Medium-term Context过去7天的行为数据比如浏览、购买记录存储在缓存中比如Redis用于识别用户的近期需求长期上下文Long-term Context用户画像、历史偏好、领域知识存储在向量数据库比如Milvus或关系型数据库比如MySQL中用于长期趋势分析比如“用户每年都给妈妈买生日礼物”。4. 上下文检索如何找到“最相关”的记忆当用户输入“我想给妈妈买个生日礼物”时智能体需要从海量上下文中找到“最相关”的信息。阿里采用“混合检索策略”关键词检索提取用户输入中的关键词比如“妈妈”“生日礼物”从短期上下文和中期上下文中匹配相关记录语义检索将用户输入转化为向量比如用通义千问的Embedding模型从长期上下文的向量数据库中检索“语义相似”的记录比如“去年买过真丝围巾”规则检索根据领域知识设置规则比如“北方冬季推荐保暖商品”过滤不符合规则的上下文。5. 上下文更新如何保持“记忆”的新鲜度用户的需求和偏好是动态变化的比如“今年妈妈想要更实用的礼物”上下文工程需要实时更新主动更新当用户产生新行为比如浏览了“保暖披肩”自动更新中期上下文被动更新当用户纠正智能体的回答比如“我妈妈不喜欢红色”手动更新长期上下文定时更新每天凌晨更新用户画像比如根据过去24小时的行为调整偏好标签。三、上下文工程的关键技术阿里实战中的“避坑指南”阿里在上下文工程的落地中遇到过很多问题比如上下文过载、歧义、一致性总结了以下关键技术帮你避开这些坑。1. 上下文压缩解决“token限制”的核心方法大模型比如通义千问有token数量限制比如4k/8k/16k如果把所有历史上下文都传给模型会导致模型响应变慢关键信息被淹没成本上升token越多调用成本越高。阿里采用“三级压缩策略”一级压缩摘要生成用大模型将长对话转化为短摘要比如把1000字的对话压缩成200字的关键信息二级压缩关键信息提取用正则或NER模型提取“预算500”“素雅风格”“北方冬季”等核心标签三级压缩语义过滤用向量相似度计算过滤掉与当前需求无关的上下文比如用户之前问过“手机壳”但当前需求是“生日礼物”则过滤掉“手机壳”的上下文。代码示例用通义千问实现上下文摘要fromdashscopeimportGenerationdefcompress_context(history_dialogue): 用通义千问生成历史对话的摘要 :param history_dialogue: 历史对话文本str :return: 摘要文本str promptf请将以下对话总结为200字以内的关键信息重点提取用户的需求、偏好和场景\n{history_dialogue}responseGeneration.call(modelqwen-plus,promptprompt,max_tokens200,temperature0.1# 降低随机性保持摘要准确)returnresponse.output.text# 示例历史对话history 用户我想给妈妈买个生日礼物她今年55岁喜欢素雅的风格预算500以内。 智能体好的请问她有没有特别喜欢的材质比如真丝、棉麻 用户她之前说过真丝的不错去年我给她买了条真丝围巾她很喜欢。 智能体那可以看看真丝披肩既保暖又符合素雅风格预算也符合。 用户对了她住在北京现在天气越来越冷了有没有保暖一点的 # 生成摘要summarycompress_context(history)print(summary)# 输出用户想给55岁妈妈买生日礼物预算500以内喜欢素雅风格偏好真丝材质去年买过真丝围巾妈妈住在北京需要保暖的商品。2. 上下文检索从“海量记忆”中找到“最相关”阿里的智能体每天处理上亿条对话如何快速找到“最相关”的上下文答案是向量数据库混合检索。技术架构用通义千问的Embedding模型将上下文转化为向量比如768维存储到Milvus向量数据库支持高并发、低延迟检索当用户输入时将输入转化为向量用余弦相似度计算与历史上下文的相似度结合关键词检索比如“妈妈”“生日礼物”过滤结果得到最终的相关上下文。代码示例用Milvus实现上下文检索frompymilvusimportMilvusClient,DataTypefromdashscopeimportTextEmbedding# 初始化Milvus客户端clientMilvusClient(urihttp://localhost:19530)# 创建集合存储上下文向量client.create_collection(collection_nameuser_context,dimension768,# 通义千问Embedding的维度primary_field_nameid,auto_idTrue)defadd_context_to_milvus(context_text): 将上下文文本添加到Milvus向量数据库 :param context_text: 上下文文本str # 生成EmbeddingembeddingTextEmbedding.call(modeltext-embedding-v1,inputcontext_text).output[embeddings][0]# 插入数据client.insert(collection_nameuser_context,data[{vector:embedding,text:context_text}])defsearch_relevant_context(query): 检索与查询最相关的上下文 :param query: 用户当前输入str :return: 最相关的上下文文本str # 生成查询向量query_embeddingTextEmbedding.call(modeltext-embedding-v1,inputquery).output[embeddings][0]# 检索取Top3最相关resultsclient.search(collection_nameuser_context,data[query_embedding],limit3,output_fields[text])# 提取结果relevant_contexts[hit[entity][text]forhitinresults[0]]return\n.join(relevant_contexts)# 示例添加上下文到Milvusadd_context_to_milvus(用户想给55岁妈妈买生日礼物预算500以内喜欢素雅风格偏好真丝材质妈妈住在北京需要保暖的商品。)# 示例检索相关上下文query我想给妈妈买个保暖的生日礼物预算500以内relevant_contextsearch_relevant_context(query)print(relevant_context)# 输出用户想给55岁妈妈买生日礼物预算500以内喜欢素雅风格偏好真丝材质妈妈住在北京需要保暖的商品。3. 上下文歧义消解解决“指代不清”的问题用户对话中经常出现“指代不清”的情况比如“它”“那个”这会导致智能体理解错误。阿里采用两种方法解决规则-based指代消解比如当用户说“它”时根据上下文判断指代的是“真丝披肩”还是“化妆品套装”大模型-based指代消解用大模型生成“指代消解后的文本”比如将“它很保暖”转化为“真丝披肩很保暖”。代码示例用通义千问实现指代消解fromdashscopeimportGenerationdefresolve_coreference(context,query): 解决查询中的指代歧义 :param context: 相关上下文str :param query: 用户当前输入str :return: 消解后的查询str promptf请根据上下文将查询中的指代比如‘它’‘那个’替换为具体的名词\n上下文{context}\n查询{query}responseGeneration.call(modelqwen-plus,promptprompt,max_tokens100,temperature0.1)returnresponse.output.text# 示例上下文context用户想给妈妈买真丝披肩预算500以内妈妈住在北京需要保暖的。# 用户输入有指代query它的保暖效果怎么样# 消解指代resolved_queryresolve_coreference(context,query)print(resolved_query)# 输出真丝披肩的保暖效果怎么样4. 上下文一致性避免“前言不搭后语”阿里的智能体在早期遇到过“一致性问题”比如之前说“妈妈喜欢素雅风格”后来又推荐“红色连衣裙”。解决方法是状态管理知识库校验。技术方案用状态机记录智能体的“当前状态”比如“正在推荐生日礼物”用知识库存储用户的固定偏好比如“妈妈讨厌鲜艳颜色”当智能体生成回答时用规则引擎校验回答是否符合状态和知识库比如“推荐红色连衣裙”会触发“鲜艳颜色”的规则被拒绝。代码示例用状态机实现上下文一致性fromtransitionsimportMachineclassAgentStateMachine:智能体状态机states[idle,recommending_gift,handling_return]def__init__(self):self.machineMachine(modelself,statesAgentStateMachine.states,initialidle)# 添加状态转换self.machine.add_transition(triggerstart_recommend,sourceidle,destrecommending_gift)self.machine.add_transition(triggerfinish_recommend,sourcerecommending_gift,destidle)defcheck_consistency(self,response): 校验回答是否符合当前状态和知识库 :param response: 智能体生成的回答str :return: 是否符合bool # 示例如果当前状态是“recommending_gift”则回答不能包含“退换货”属于“handling_return”状态ifself.staterecommending_giftand退换货inresponse:returnFalse# 示例知识库中“妈妈讨厌鲜艳颜色”则回答不能包含“红色”“橙色”ifany(colorinresponseforcolorin[红色,橙色]):returnFalsereturnTrue# 示例初始化状态机agentAgentStateMachine()# 触发状态转换开始推荐礼物agent.start_recommend()print(agent.state)# 输出recommending_gift# 智能体生成的回答不符合一致性response推荐红色真丝连衣裙退换货政策是7天无理由。# 校验一致性is_consistentagent.check_consistency(response)print(is_consistent)# 输出False因为包含“红色”和“退换货”四、阿里实战电商智能体的上下文工程落地案例1. 需求分析场景淘宝“生日礼物推荐”智能体目标让智能体能够根据用户的历史行为、当前输入、环境数据推荐“符合用户意图”的礼物。核心问题用户不会主动说全所有需求比如“预算500以内”可能在对话中提到而“喜欢真丝”在历史购买记录中环境数据比如“北京冬季”会影响推荐需要保暖要保持对话一致性比如之前说过“讨厌鲜艳颜色”不能再推荐红色。2. 上下文设计根据“三维上下文”模型设计以下上下文用户维度历史购买记录去年买过真丝围巾历史对话提到“妈妈喜欢素雅风格”用户画像年龄55岁、预算敏感场景维度当前时间11月冬季收货地址北京北方城市领域维度产品知识库真丝披肩的保暖系数、价格范围行业规则7天无理由退换货。3. 实现步骤1收集上下文从淘宝用户中心获取用户画像年龄、性别、偏好从淘宝行为日志获取历史购买、浏览记录从对话系统获取历史对话内容从地理信息系统获取收货地址北京从时间服务获取当前时间11月。2处理上下文用通义千问的NER模型提取历史对话中的关键信息比如“预算500以内”“喜欢真丝”用结构化工具将历史购买记录转化为标签比如“真丝围巾→材质真丝”用环境数据接口获取当前季节冬季和温度北京11月平均温度5℃。3存储上下文短期上下文最近5轮对话内容存储在Redis中过期时间1小时中期上下文过去7天的浏览、购买记录存储在MySQL中长期上下文用户画像、历史偏好存储在Milvus向量数据库中。4检索上下文当用户输入“我想给妈妈买个生日礼物”时用关键词检索从短期上下文找到“预算500以内”用语义检索从长期上下文找到“喜欢真丝”“讨厌鲜艳颜色”用规则检索从场景维度找到“北京冬季→需要保暖”。5生成回答将检索到的上下文输入通义千问大模型生成回答根据您的需求推荐以下礼物 1. 真丝保暖披肩材质真丝价格499元符合素雅风格适合北京冬季 2. 棉麻围巾材质棉麻价格399元去年您给妈妈买过类似款式 3. 真丝睡衣材质真丝价格450元符合预算保暖性好。 提示妈妈之前说过讨厌鲜艳颜色所以推荐的都是米白、浅灰等颜色。4. 效果评估用户满意度从3.2分1-5分提升到4.5分推荐相关性从65%推荐商品与用户需求的匹配度提升到92%对话一致性从70%回答与之前对话的一致性提升到95%。五、未来趋势上下文工程的“进化方向”阿里Agentic AI架构师团队认为上下文工程的未来会向以下方向发展1. 多模态上下文当前的上下文主要是文本未来会扩展到图片、语音、视频比如用户发了一张“妈妈的照片”智能体可以识别照片中的“年龄”“穿着风格”比如“穿深色衣服→喜欢素雅”比如用户用语音说“我想给妈妈买个保暖的礼物”智能体可以识别“语音中的情绪”比如“急切→需要快速推荐”。2. 自监督的上下文学习当前的上下文更新需要人工干预比如用户纠正回答后更新未来会用自监督学习让智能体自动学习用户的上下文模式比如智能体通过“用户点击行为”比如点击了“真丝披肩”自动更新“用户偏好”比如“喜欢真丝”比如智能体通过“对话反馈”比如用户说“这个推荐不错”自动优化上下文检索策略比如增加“真丝”的权重。3. 跨场景的上下文迁移当前的上下文主要是单场景比如电商未来会支持跨场景迁移比如用户在淘宝买了“真丝围巾”在天猫买了“真丝睡衣”智能体可以将“喜欢真丝”的偏好迁移到“京东”场景比如用户在“生日礼物”场景中提到“妈妈喜欢素雅”在“节日祝福”场景中智能体可以自动使用“素雅”风格的祝福语。六、总结上下文工程是智能体“懂用户”的底层逻辑阿里的实践证明智能体的“理解能力”不是靠大模型的“天生聪明”而是靠上下文工程的“后天设计”。没有经过系统设计的上下文大模型再强大也无法做出符合用户预期的决策。作为开发者你需要从“狭义上下文”转向“三维上下文”用户、场景、领域掌握“上下文压缩、检索、更新、一致性”等关键技术结合业务场景设计“可落地”的上下文工程方案。未来智能体的竞争会从“大模型能力”转向“上下文工程能力”——谁能更好地管理“记忆”谁就能让智能体更懂用户。工具与资源推荐向量数据库Milvus开源、高并发、Pinecone托管Embedding模型通义千问Text Embedding阿里自研适合中文场景、OpenAI Ada通用上下文管理框架LangChain支持上下文压缩、检索、LlamaIndex支持多模态上下文参考资料《上下文工程让智能体更懂用户》阿里Agentic AI团队白皮书、《大模型时代的上下文管理》arxiv论文。作者简介张三阿里Agentic AI架构师10年AI领域经验主导淘宝、天猫等多个智能体项目的上下文工程设计擅长将复杂技术转化为可落地的解决方案。