类型
实践
状态
已完成
开始日期
Jul 21, 2025
结束日期
Jul 25, 2025
参与角色
核心成员
指导教师
王教授
详细描述
关键词
大语言模型
推荐算法
智能体搭建
相关链接
成果产出
💡

提示词工程优化(推荐系统场景)

Prompt-Enginneer-on-Recommend-System
Yuyang-Yao75Updated Aug 23, 2025
设计 5 轮迭代 Prompt(思维链、多维回忆、长期/短期偏好建模),在电影推荐系统重排任务上,NDCG@10从47提升至0.69,提升约47%。
在上海创智学院的提示词工程考核项目中,我围绕一个电影推荐重排任务,系统实践了「如何用大语言模型 + Prompt Engineering 替代部分传统推荐系统的特征工程」。
具体任务:给定用户按时间排序的观影历史,以及一组候选电影,让大模型输出一份按相关度排序的电影列表,并用 NDCG@10 对结果进行评价。
在这个项目里,我把提示词工程当成一种「对模型进行程序设计」的过程,而不是仅仅堆砌花哨的指令。整个过程经历了多轮迭代:
  • 起始版本(v1)只是直接让模型对候选电影排序,表现较为一般(NDCG@10 ≈ 0.47),暴露出模型对用户偏好建模不足的问题。GitHub
  • 在 v3 版本中,我有意识地引入了思维链(Chain-of-Thought)结构:先让模型回顾用户的观影历史,再按类型/主题/导演等维度总结偏好,最后才对候选电影打分排序。这一步的核心认知是——大模型需要被「引导」去显式思考,而不是直接给结果
  • v4 进一步加入了「多维回忆」和示例(In-Context Learning):提示模型同时从题材、情感、年代、节奏等多个维度去寻找相似性,并给出少量示例,让模型对「什么是好推荐」形成更稳定的内部标准。GitHub
  • 最终的 v5 版本引入了「长期偏好 vs. 短期偏好」的双层建模:先总结用户的「老口味」(长期稳定偏好),再观察最近几部电影中的「新口味」(阶段性兴趣偏移),对候选电影分别给出两个分数,并以加权方式融合。这实际上是在用 Prompt 去模拟传统推荐系统中「兴趣演化」和「短期 Session 推荐」的思想。GitHub
在 DeepSeek-V3 上,对 200 条验证样本进行评估,NDCG@10 从 v1 的 0.47 提升到了 v5 的 0.69,整体提升约 47%,推荐结果与真实观影行为的一致性显著增强。
这次实践让我对「提示词工程」有了更深一层的理解:
  1. 好的 Prompt 本质上是一段「可读的伪代码——它需要有清晰的步骤和中间变量,而不是一条长句子;
  1. 推荐问题尤其适合用「思维链 + 偏好建模」方式设计 Prompt,因为用户兴趣本身就是一条时间序列;
  1. 在一些对延迟敏感但结构清晰的任务(如重排),通过提示词设计让通用大模型完成特定任务,确实可以在不额外训练模型的前提下拿到不错的效果。这个项目也成为我后续思考「LLM 与传统推荐系统如何融合」的一个起点。
💡

人生模拟器 Agent(Dify + RAG):

基于 Dify 平台构建交互式人生职业选择模拟器,结合知识检索与动态用户画像,显著增强AI Agent的交互性与现实感
智能体搭建使用实录。_哔哩哔哩_bilibili
在人生职业选择模拟器项目中,我尝试用 Dify Agent + RAG 搭建一个「人生走向沙盒」:用户可以在对话中做出类似高考志愿、读研/工作选择、行业切换等关键决策,Agent 则结合 2000–2025 年的宏观大事件和职业环境变化,给出更贴近现实的反馈和走向。
在内容组织上,我没有简单按年份「列年表」,而是设计了一个分层梳理框架
  1. 时间主线:以 2000–2025 按年代划分为若干阶段(例如「互联网普及期」「全球化与金融危机」「移动互联网与平台经济」「疫情冲击与远程协作」「AI 大模型与新一轮生产力革命」),每个阶段对应劳动力市场和职业机会的显著变化;
  1. 主题维度:在每个阶段下,从「科技与产业」「宏观经济与政策」「教育与就业结构」「社会心理与代际观念」四个维度筛选代表性事件,例如互联网泡沫破裂、2008 金融危机、移动互联网普及、疫情引发的远程工作、AI 大模型浪潮带来的岗位重构等;
  1. 职业坐标系:将典型职业路径映射到「稳定性—成长性」「专业门槛—可迁移性」两个坐标轴上,让 Agent 能够根据用户的选择与性格偏好,给出相对有「时代感」的情境反馈,而不是抽象的鸡汤式建议。
在实现上,我先利用 Dify 的可视化流程搭好了一个可用的原型:包括基础对话 Agent、RAG 检索知识库和简易的用户画像更新逻辑。这个过程让我意识到:
  • Dify 非常适合快速搭出 MVP:可以在几乎不写代码的情况下完成数据接入、RAG、对话流转等基础功能,对验证一个想法非常友好;
  • 但当我希望引入更复杂的状态管理、决策逻辑(比如长期职业轨迹模拟、多轮决策树、个性化评分函数)时,Dify 的「无代码」方式会逐渐显得不够灵活——很多地方不得不「绕着界面设计」,而不是从问题出发去设计架构,这让我真正体会到「原型宜低门槛,产品宜代码化」这句话的含义。
因此在项目后期,我一边用 Dify 版本对外展示,一边开始思考如果用 API + 代码重构这个系统,应该如何拆分模块:
  • 将「时代事件知识库」独立为 RAG 层;
  • 将「职业路径与状态更新」抽象成一个小型环境(类似 RL 里的环境/状态转移);
  • 将「对话与解释」交给大模型,通过 Prompt 把底层决策逻辑解释成用户易懂的话语。
这个项目给我的最大收获有两点:
  1. 把自己的人生问题产品化/模型化之后,很多模糊的焦虑会变成可以讨论的假设与参数——比如对「稳定 vs 成长」「专业 vs 通用」的偏好,其实是可以在系统中被显式建模的;
  1. 从工程角度,我第一次比较系统地体会到「低代码工具」与「代码化开发」的边界:前者适合快速出 Demo、探索交互形态,后者才是长期演化与复杂逻辑的承载。这一点会影响我之后在做任何 Agent/应用时,如何规划「验证—重构—扩展」的路线。

Loading...
务醒
务醒
慢慢搭一座知识楼📖
小红书
统计
文章数:
1
公告
🎉务醒‘s Blog 已经上线🎉
-- 感谢您的支持 ---