AI Agent产品推荐系统开发实战:从需求拆解到上线踩坑

发布时间:2026/10/16 20:47:16
AI Agent产品推荐系统开发实战:从需求拆解到上线踩坑
1. 为什么“AI Agent 产品推荐”值得做从用户痛点说起先讲一个我真实遇到过的场景。某次给一个做内容社区的产品做咨询对方说推荐位点击率连续三个月下滑算法团队调参调到头秃也没救回来。我看了一眼他们的推荐系统典型的“老三样”基于行为的协同过滤、基于内容标签的相似匹配、加一点热门兜底。问题在于这种系统的推荐逻辑是“猜你喜欢”但用户真正需要的是“帮我选”。举个例子。一个用户想给女朋友买生日礼物预算五百块女朋友喜欢小众香薰。传统推荐系统会怎么做根据他之前搜过“香薰”“礼品”这类标签给他推一堆香薰产品列表。但他其实需要的是“预算五百内、包装精致、适合送女友、评价里有‘女朋友很喜欢’这类反馈的香薰”而且他还想问“哪款和哪款到底有什么区别”“售后会不会麻烦”。这些需求传统推荐系统完全接不住。因为传统推荐的本质是“统计”而用户在这个场景下的需求是“决策辅助”。这就引出了AI Agent产品推荐的核心定位它不再是“根据历史行为猜你喜欢”而是“通过多轮对话理解你当下的真实需求帮你做决策”。我特别强调“当下”这个词因为Agent推荐最大的价值不是替代算法推荐而是在用户需求模糊、复杂、个性化的场景里提供传统推荐给不了的交互式决策支持。这个方向适合谁来做如果你手头有一个用户量不大但需求多样化的产品或者你正在设计一个全新的智能导购、智能顾问类应用又或者你只是想把大模型能力落到实处而不是做个聊天玩具那这篇文章里的思路和踩坑记录应该能帮你省不少时间。我不会给你一套套话式的理论而是把从需求拆分到上线开发这条路上我试过、摔过、最终跑通的经验全写出来。2. 需求分析阶段先别急着写代码很多团队做AI应用有个通病拿到需求就急着调大模型接口把Prompt写一大段丢进去试效果试出来效果还行就急着做DemoDemo过了就开始考虑上线然后在上线阶段发现一堆根本没想到的问题。我见过太多这样的项目了最后全都卡在三件事上需求边界不清、评估标准缺失、成本无人管。2.1 明确产品形态工具型还是陪伴型第一个要拍板的问题是你做的是工具型Agent还是陪伴型Agent。这个决定影响后面所有的技术选型和工作流设计。工具型Agent的核心目标是“完成任务并给出结果”。典型场景是“帮我推荐一款适合户外跑步的蓝牙耳机”“对比这三款咖啡机的性价比”“给我规划一个三天的成都美食路线”。用户来的时候带着明确任务对话目标就是快速收敛到一个可用结果。这种Agent对意图识别的准确率要求高但不需要太长的上下文记忆因为它处理的是一次性决策。陪伴型Agent则完全不同它要的是“持续互动中逐步理解用户”。典型场景是“帮我挑选考研院校”“根据我的预算和需求慢慢筛选租房方案”。用户可能今天问一次过两天再来问一次每次补充新的偏好Agent需要记住之前的对话结论并在此基础上做增量推荐。这种Agent对记忆管理和用户画像更新的要求很高但对单次响应的即时准确率容忍度大一些因为后面还能修正。建议如果你第一次做Agent产品优先选工具型。理由很直接工具型Agent的评估标准清晰用户满意与否一看便知也更容易用离线数据验证。陪伴型Agent的“满意度”太主观冷启动阶段很容易变成“聊了个寂寞”。2.2 定义核心能力边界三轮对话就能说清的问题需求分析阶段我最常用的一个方法叫“三轮对话测试”。就是强迫自己用文字写出用户和Agent之间最典型的三轮对话写不出来说明需求还不够清晰。第一轮是用户说出模糊需求比如“我想买一款性价比高的降噪耳机”。第二轮是Agent追问关键约束条件比如“你的预算大概多少主要在什么场景用对佩戴方式有偏好吗”第三轮是Agent给出推荐结果并解释理由用户可能还会追问“为什么推荐这款它和另一款有什么差异”为什么定三轮因为大部分工具型推荐场景在三轮对话内就能收敛。如果三轮还搞不定说明需求本身太发散或者你的推荐域太大导致约束条件过多。这时候最该做的就是缩小产品边界把一个细分场景做透。我当时做一个模拟项目X的推荐Agent时第一版就吃了这个亏。我们企图覆盖数码、美妆、家居、图书四个品类结果Prompt长度失控模型经常在美妆对话里冒出数码推荐用户体验非常割裂。后来砍到只做数码品类里“耳机、音箱、智能手表”三个子类效果立刻好了很多。记住一句话Agent的边界就是它的护城河。2.3 用户画像与场景建模谁在什么时候需要推荐需求分析里容易被忽略的是“场景建模”。很多团队把注意力放在“用户是谁”却忽视了“用户在什么时候会用到这个推荐”。我做用户访谈时发现一个很有意思的现象用户找Agent要推荐通常不是因为他不知道有什么商品而是他面对的选择太多产生了决策焦虑。这个洞察直接改变了我们后续的推荐策略。以前我们总想着增加推荐条数觉得给得越多越好。后来发现给三条精选加一条“为什么不推荐XX”的排除理由用户满意度反而更高。场景建模用一个简单矩阵就能搞定场景类型决策压力典型诉求推荐策略高卷入决策高如买电脑需要充分对比和理由少而精附详细决策逻辑低卷入决策低如挑零食快速给一个不出错的结果命中即走无需解释太多礼物推荐高且信息缺失需要Agent帮忙挖需求多轮追问偏好先猜再推比价推荐中要性价比结论给出明确“最划算”标注这个矩阵还要和技术方案挂钩。高卷入决策场景需要更强的推理能力低卷入决策场景则可以纯靠规则引擎快速响应。如果你不分场景统一用最强的推理模型成本报表会教你做人。3. 技术选型与架构设计Agent 不是大模型的壳到了技术选型这一步大多数团队会直接陷入“用哪个模型”的争论。我的观点是Agent的技术架构从来不是模型之争而是工作流设计之争。模型只是决策引擎真正的智能感来自你如何编排它的输入、输出和外部工具调用。3.1 技术栈选择的底层逻辑我现在的推荐是MindTalk平台来搭建Agent配套一个中等参数量的开源模型做基座。这个组合的考虑有三层平台侧负责管理多轮会话和工具调用模型侧负责语义理解和生成推荐文案中间层用规则引擎处理硬性约束比如“预算超了直接排除”。为什么不全用大模型全用大模型有两个问题。第一是成本每次推荐都要消耗几千个Token调用多了成本指数上升。第二是可解释性差模型给出的推荐理由有时候是幻觉用户追问“你怎么知道这款适合我”时模型可能给你编一个听起来合理但毫无依据的答案。这在推荐场景是致命的因为推荐本质上是用信任换转化一旦用户发现你在瞎编整个产品就失去价值了。所以我的架构设计原则是能写死的不让模型说能用规则的不让模型算模型只负责它擅长的两件事——语义理解和内容生成。3.2 Agent 工作流设计从意图识别到推荐输出一个标准的推荐Agent工作流可以拆成五步意图识别判断用户这句话是“提需求”“澄清偏好”还是“追问理由”信息抽取从对话中提取价格区间、品类、使用场景、特定属性等结构化参数检索匹配用结构化参数去商品库检索候选集精选排序用规则和模型混合打分选出最合适的几条结果生成用模型生成推荐语和理由确保逻辑闭环这五步里的核心设计点是“信息抽取”和“检索匹配”的衔接。我的做法是让模型输出一个JSON结构包含明确的参数字段用这个JSON去查询商品库。这样最大好处是“可调试”——如果推荐结果不对你能明确看到是抽取出来哪个参数错了而不是对着模型猜。{ intent: product_recommend, constraints: { category: headphone, price_range: [800, 1500], usage_scene: commute, feature_priority: [noise_cancelling, comfort], exclusions: [not_wireless] } }这个JSON结构看起来简单但真做起来有大量细节。比如用户说“别太贵”不等于“预算上限是三百”用户说“平时跑步用”不等于“防水是硬性要求”。这些语义消歧必须靠多轮追问确认不能直接拿模型的第一版抽取结果就进检索否则误差会滚雪球。3.3 推荐回调与知识库联动Agent推荐和普通搜索最大的区别是“对话的记忆性”。用户在第一轮说“预算五百”后面又提到“其实可以再加点”Agent应该更新预算参数而不是固守初始值。这需要你设计一套简单的记忆管理机制。我的做法是维护一个“约束条件状态表”每次对话更新这个表检索和排序都从这个表读取参数。表的数据结构就是上面那个JSON的Schema每次解析完对话就合并进去。这样既不用昂贵的向量记忆也不用维护复杂的知识图谱对于大多数内容型推荐场景已经够用了。另一个容易忽视的是知识库联动。推荐不是从商品库里捞几条数据就行需要考虑库存、优惠、上新时间这些动态信息。我建议在Agent的检索层后面加一个“可用性过滤”把售罄、下架、超预算结合优惠价的商品先过滤掉避免推荐给用户一个点进去已售罄的商品。这个过滤逻辑我用的是规则引擎响应时间可以控制在十毫秒以内完全不依赖模型。4. 核心功能开发实录推荐链路的关键实现架构设计完了讲讲开发阶段我实际操作的每个环节。这一段全程都是可以复用的实现细节包括每一段代码背后的考量和那些没写在文档里的坑。4.1 意图识别模块让 Agent 听懂“模糊需求”意图识别我给的建议很简单不要用自由文本让模型直接输出“意图名称”。自由文本输出结果很难做后续逻辑分支而且模型经常会“自由发挥”出你预设之外的意图名称。我在开发中用了一个更稳的方案定义有限的意图枚举再用结构化抽取来辅助判断。from pydantic import BaseModel from typing import Literal, Optional class QueryAnalysis(BaseModel): intent: Literal[recommend, clarify, compare, why, exit] slot_filled: bool missing_required: list[str] # 示例调用伪代码 analysis agent.parse(user_input) if analysis.intent recommend and not analysis.slot_filled: next_question asker.ask_next(analysis.missing_required)这事的核心不在于用了什么框架而在于“intent不匹配时的兜底策略”。我实测下来用户说“随便看看”“无所谓”“你推荐吧”的频率比你预期高得多。这类话术如果被识别为“clarify”Agent会陷入无限追问用户只会觉得你烦。我的兜底策略是当模型无法高置信度识别意图时默认走“随机推荐主动解释”分支而不是追问分支。给用户两条推荐选项同时告诉他“如果你觉得不合适告诉我哪里不合适我再调整”。实测下来这种方式能把用户流失率降低三分之一。4.2 推荐逻辑编排规则引擎与大模型协同推荐逻辑编排是整个链路最容易被低估的部分。我见过很多团队直接把商品库列表丢给模型让它选然后模型给出几条“看起来合理”的商品但实际上没有经过任何约束校验。结果用户问“这里有1000元以下的吗”Agent推荐了个1800的用户当场就崩了。我的编排方式是“三阶段管线”第一阶段是硬约束过滤。把所有结构化约束参数用规则代码过滤一遍比如价格范围、品类、售罄状态、排除项。这些条件全用代码写不用模型判断。第二阶段是软性打分。剩下的商品用评分模型做排序评分因子包括与用户偏好标签的匹配度、历史推荐转化率、商品本身的评分和销量。这一步可以用轻量的机器学习排序模型不想上模型的话用加权规则也行。第三阶段是模型精选。取第二阶段TopN比如前10条商品让模型根据对话上下文选择最合适的2至3条并生成推荐语。模型只在小候选集里做选择幻觉概率大幅降低推荐理由也能编得更可信。第三阶段的调用策略值得展开说说。模型的Prompt里要带上候选商品的结构化信息表而不是简单把商品名字拼进去。我的Prompt模板长这样以下是经过筛选的候选商品请根据用户偏好预算、场景、个性偏好推荐最合适的三条并为每条给出简短推荐理由。 候选商品 1. 商品名A款主动降噪耳机 | 价格999 | 降噪等级强 | 佩戴方式入耳式 | 续航30h | 适用场景通勤、健身房 | 用户好评点佩戴稳固 2. ... 用户对话摘要 - 预算1000-1500 - 用途通勤地铁 - 偏好不喜欢入耳式 - 已排除无 请仅推荐符合上述约束的商品理由控制在两句话以内。这个Prompt本身不复杂但要注意两点。第一候选商品表里不能塞太多文本否则Token消耗暴涨第二“用户对话摘要”一定要用结构化的槽位值不要把原始对话全塞进去。我见过有团队把一整段对话历史全丢给模型结果模型被带偏推荐理由里开始重复用户的碎碎念。4.3 多轮会话管理记住上下文但别背太多多轮会话管理最常见的坑是“上下文失控”。用户聊了十几轮之后你把所有历史都塞给模型结果模型忘了最初的预算限制推荐了一个超预算的产品。我的方案是“摘要覆盖法”不保留原始历史而是维护一个动态更新的摘要对象class UserPreferenceSummary(BaseModel): budget: Optional[str] categories: list[str] priorities: list[str] excluded: list[str] last_recommendation_id: Optional[str] user_feedback_on_last: Optional[str]每次对话更新这个摘要模型只看到这个摘要。为什么不用滑窗式历史记录因为滑窗会把早期关键约束挤出去比如用户第一轮说的预算到第十轮还在上下文里但滑窗只保留最近几轮就把预算忘了。还有一点要注意摘要更新不能只靠模型自动抽取需要人工预设“哪些字段必须保留”。在我的实现里预算和排除项是“never forget”字段任何一轮对话覆盖它们都需要校验。校验逻辑就是“当用户新说的话与已有约束冲突时Agent必须先确认不能直接更新。”这个确认机制我之前漏掉过结果用户改口说“预算可以放宽”Agent直接替换了原始预算但用户的本意是“优先看原预算但接受偶尔超一点。”这个模糊性不确认的话后面推荐就乱了。5. 联调测试与效果评估推荐方案的硬指标开发完成不等于可以上线。AI Agent推荐产品跟传统推荐系统最大的差异在于它天然是一个“对话系统”单纯看推荐点击率是不够的还得看“对话完成率”“追问有效率”这些Agent专属指标。5.1 离线评测用历史数据验证推荐质量离线评测我用的是“推荐记录回放法”。把以前人工客服的对话记录整理出来抽取出“用户表达需求-客服给出方案-用户满意/不满意”的三元组构造一个评测集。评测指标采了三个维度维度指标计算方式约束满足率推荐结果是否符合用户明说约束人工审核统计取符合条数/总推荐条数可解释性推荐理由是否与推荐结果一致人工审核看理由和商品属性对应得分多轮收敛率三轮对话内是否给出用户可接受的推荐自动记录对话轮数与最终确认结果约束满足率是我最看重的指标。我见过很多“看起来很智能”的Agent推荐理由写得天花乱坠但推荐的商品不符合用户第一轮说的“不要入耳式”。这种问题一旦上线就是灾难用户对你的信任会瞬间清零。离线评测还有个好处是能帮你做提示词迭代。我每次修改Prompt模板都会在评测集上跑一遍记录约束满足率和生成耗时。注意生成的Token长度也要监控因为它直接影响成本和响应延迟。5.2 线上灰度小流量实验怎么设计线上灰度我的建议是“三条路并行”。这里不是指传统的A/B测试而是先在同一批用户里让Agent推荐推荐再对比历史算法推荐同时还要看用户有没有主动点击排除按钮。具体的灰度设计第1-2周只开放给“已确认有推荐需求”的用户比如点了“帮我选”按钮。对比组用原有算法推荐。观察指标点击率、平均交互轮数、推荐后购买转化率。第3-4周扩大范围到首页信息流但仍然保持低流量5%以内。主要观察Agent推荐的流量占比和用户负反馈率。第5周以后如果负反馈率低于5%点击率不低于原推荐就开始全量放量。灰度期间有个关键数据要盯住推荐后购买转化率。Agent推荐如果只是让用户多聊了几句但最终没有转化对业务来说就是失败。我当时做的模拟项目XAgent推荐的点击率比算法推荐高了20%但购买转化率一开始反而低。后来排查发现是推荐理由写得太“软”用户看完觉得“不错”但没到“立刻下单”的程度。改造方案是在推荐语里加入“库存紧张”“同价位性价比最高”这类决策助推信息转化率才追了回来。5.3 常见问题排查速查表实测过程中我整理了一张问题排查表每个问题都踩过真的坑现象可能原因排查与修复办法推荐结果完全脱离约束意图识别阶段把“追问”误判成“换条件”检查约束条件的状态表看哪一步被覆盖了给“约束变更”加确认逻辑推荐理由里出现商品不存在的信息模型在候选集外“自由发挥”强制模型输出商品ID生成后校验商品ID是否在候选集内不在则丢弃该条多轮对话后预算“丢失”摘要更新被后续对话覆盖给预算和排除项加“锁定”标识非用户明确要求不得覆盖用户连续追问但Agent答非所问意图识别把“追问”归为“新推荐”增加“追问”意图的优先级追问时直接调上次推荐的候选集做解释Token消耗失控候选商品文本塞太多限制候选集长度商品描述截断成关键属性考虑用小模型做摘要另外要提一个很多人忽视的细节Agent回复的“带商品链接”格式。推荐语里带上商品卡片和链接是合理的但不要让模型自动生成URL。URL必须是后端拼接好的模型只输出商品ID。否则模型编一个不存在的链接用户点进去404体验直接崩掉。6. 落地过程中踩过的坑与复盘最后这部分是我最想写的。网上讲AI Agent开发的教程很多但讲“真实生产环境里哪些会把你坑惨”的很少。我把自己踩过的坑分成三类每一类都配了解决思路。6.1 提示词工程不是万能药我最早做Agent推荐时天真地以为只要Prompt写得好大模型就能搞定一切。后来被现实教育了。有时候Prompt写得再严谨模型还是会基于“话术惯性”推荐热门款而不是结合用户约束推最合适的款。这不是模型的错而是模型在有限上下文中做决策时天然倾向选择语料里高频出现的商品。解决办法是“缩小模型的决策范围”。我最终把推荐决策拆分成了“约束过滤打分排序”的前置阶段给模型的只是过滤后的候选项。模型不再从全量商品库挑商品而是在Top10里挑3条准确率立刻显著提升。这也验证了我前面说的那句话Agent的智能感来自架构不是来自某一个模型的智商。6.2 成本控制Token 消耗的隐形黑洞做Agent推荐最容易被低估的就是Token成本。我见过一个团队做Ai Agent推荐每轮对话都把所有候选商品列表塞给模型再让模型输出推荐结果。看起来好像没什么问题但商品库如果有五千个商品光候选列表就可能塞上万个Token每轮调用成本直接拉满。我建议给Token消耗设三条红线每日调用上限在业务后台配置每日调用次数阈值到达后自动降级为规则推荐。输入长度上限候选商品的描述统一控制在100字以内只保留关键属性。输出Token限制推荐语的max_tokens设置为150以内理由说不完就精简。另外建议在开发阶段就搭建一个Token消耗看板按用户维度、按商品维度、按Prompt模板维度分别统计。你能看到哪个商品被重复推荐导致缓存失效哪个用户聊了二十轮没收敛消耗了预期十倍的成本。这些数据到手后你就有依据去优化产品逻辑而不是空手拍脑袋。6.3 从 Demo 到生产工程化的最后一步很多Agent项目的Demo效果很好一到生产就各种崩。我复盘下来最典型的原因有两个。第一个是并发问题。模型调用是阻塞式IO如果用同步代码扛流量用户量稍微上来就排队等待。我建议用异步任务队列来管理模型调用请求进来先落库然后异步回调推送结果。对于推荐场景来说用户等两秒可以接受但等十秒就忍不了了。第二个是降级方案缺失。生产环境模型调用不可能永远稳定。模型超时、限流、报错都必须有兜底。我的方案是维护一套“轻量规则推荐引擎”当模型调用失败时自动切换成规则推荐。规则引擎的逻辑很简单根据当前约束参数在商品库按评分排序取TopN。虽然推荐理由文案没法生成但至少用户能拿到一组符合约束的商品不至于空手而归。降级在Agent应用里尤其重要因为用户如果遇到一次空白响应他下一次就不会再来了。宁可给一个不那么优质的回复也不能什么都不给。7. 最后聊聊我对 Agent 推荐的看法做了一年多的AI Agent产品推荐我自己最大的体会是这个方向的难点从来不在“大模型有多聪明”而在于你如何把一个模糊的、人性化的决策过程拆解成机器可执行的、可控的、可验证的多阶段流程。我见过很多团队Demo跑得风生水起一上生产就处处碰壁原因不是模型选得不好而是工程框架没搭牢。推荐Agent本质上是一个“决策系统”不是“文本生成系统”。它的可靠性靠的是规则约束、结构化参数、多轮记忆管理和完备的降级方案。大模型只是这套系统最后的一个表达外壳。如果你正准备启动类似的Agent项目我建议你先把需求分析做扎实按“三轮对话测试法”把自己的产品边界写清楚再动手选技术栈。中间每一步都留好离线评测的抓手。大概率你也会踩到我踩过的坑——但至少看完这篇文章有些坑你可以跳过。