1. 项目概述:当美食遇上AI
去年帮学弟调试毕业设计时,我遇到个有趣的现象:他用了传统协同过滤算法做推荐,结果用户总抱怨"推荐的不是太家常就是太复杂"。这让我意识到,美食推荐本质上是个多维度匹配问题——要考虑用户口味、烹饪条件、时令食材等多重因素。这正是大语言模型(LLM)的用武之地。
这个基于Django+大模型的美食推荐系统,核心解决三个痛点:
- 传统推荐系统难以理解菜谱文本中的隐含信息(如"适合新手"、"需要烤箱")
- 冷启动问题(新用户/新菜谱缺乏历史数据)
- 个性化程度不足(无法结合用户实时场景调整推荐)
系统架构上采用经典的三层设计:
- 前端:Vue.js + ElementUI(适配毕业设计常见技术栈)
- 后端:Django REST framework
- 智能层:大模型API(建议采用ChatGLM3-6B这类开源模型,避免毕业答辩时演示依赖外部服务)
实操心得:在本地部署6B参数模型时,记得给测试机加装至少16GB内存。我曾用Colab免费版跑推理,每次加载模型都要20分钟...
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心技术实现解析
2.1 大模型与传统算法的协同设计
单纯依赖大模型做推荐会有两个致命缺陷:响应速度慢(通常>2s)、计算成本高。我们的混合架构这样解决问题:
python复制# 伪代码示例:两级推荐策略
def hybrid_recommend(user):
# 第一级:基于内容的快速过滤
candidate_recipes = content_based_filter(
user.history,
current_season=time.localtime().tm_mon
)
# 第二级:大模型精细排序
ranked_recipes = llm_rerank(
user.dietary_restrictions,
candidate_recipes,
cooking_utensils=user.kitchen_tools
)
return ranked_recipes[:10]
关键参数说明:
content_based_filter
