1. 引言“今天吃什么”这大概是人类历史上被问及次数最多却又最难回答的问题之一。每天中午 11:30当熟悉的饥饿感袭来我和我的同事们就会陷入一场旷日持久的哲学思辨打开外卖软件划拉半小时从“这个太油”到“那个太远”最后往往以一句“随便吧”和一份并不满意的午餐告终。我受够了这种每天的精神内耗。与其继续在无尽的选项中迷失不如让 AI 来替我决策。于是我花了几个周末动手做了一个基于大语言模型的 AI 菜单推荐工具。今天我就把这个小项目的诞生过程、技术选型和核心代码分享给大家。2. 痛点分析为什么“随便”最难选在动手之前我分析了一下“今天吃什么”这个问题的本质选择过载外卖平台上的选项成百上千人的决策能力是有限的选项越多决策成本越高。偏好模糊很多时候我们并不是真的“随便”而是没有一个清晰的、可量化的标准。比如“想吃点清淡的”但什么是清淡是少油、少盐、还是蒸菜重复记忆我们经常忘记上次吃过什么导致一周内点了三次同一家店或者总是在几家店之间来回切换缺乏新鲜感。我的目标很明确做一个工具输入我的“今日状态”比如想吃辣的、预算 30 元以内、没吃过的新店它就能直接给我一个最优解省去所有纠结。3. 技术选型为什么选择大模型传统的推荐系统通常基于协同过滤或内容过滤需要大量的用户行为数据。对于我这种个人小工具来说数据量显然不够。而大语言模型LLM的出现提供了一种全新的思路理解自然语言我可以直接说“今天想吃点暖胃的”而不是通过复杂的标签筛选。知识丰富大模型对菜系、食材、烹饪方式有广泛的理解能给出更合理的搭配建议。可解释性它能告诉我“为什么推荐这个”比如“因为您说想吃暖胃的而这家店的胡椒猪肚鸡汤是招牌非常适合”。我的技术栈如下后端Python FastAPI轻量、异步、开发快前端一个简单的 Web 页面HTML CSS JavaScript或者直接做成命令行工具。AI 引擎调用 OpenAI 兼容的 API如 GPT-4o-mini性价比高。数据源手动维护一个本地 JSON 文件记录常吃的店铺、菜品、价格、口味标签和上次吃的日期。4. 核心实现让 AI 学会“点菜”整个项目的核心逻辑并不复杂主要分为三步构建提示词Prompt、调用 AI 接口、解析结果。4.1 构建数据源首先我需要一个结构化的菜单数据库。这里我使用一个简单的 JSON 文件来存储[{name:川味小馆,dishes:[水煮鱼,麻婆豆腐,夫妻肺片],price_range:25-40,tags:[辣,川菜,下饭],last_ordered:2026-07-15},{name:粤式粥铺,dishes:[及第粥,肠粉,白灼菜心],price_range:15-25,tags:[清淡,早餐,暖胃],last_ordered:2026-07-18},{name:日式拉面,dishes:[豚骨拉面,叉烧饭,煎饺],price_range:30-50,tags:[面食,浓郁,日料],last_ordered:2026-07-10}]4.2 核心 AI 推荐函数接下来是调用 AI 的核心代码。关键在于如何设计 Prompt让 AI 像一个贴心的美食顾问一样工作。importjsonfromopenaiimportOpenAIfromdatetimeimportdatetime# 初始化客户端clientOpenAI(api_keyyour-api-key,base_urlyour-base-url)defget_ai_recommendation(user_input:str,menu_data:list)-str: 根据用户输入和菜单数据让 AI 推荐今日菜单。 # 1. 构建上下文信息todaydatetime.now().strftime(%Y-%m-%d)menu_strjson.dumps(menu_data,ensure_asciiFalse,indent2)# 2. 设计 Promptpromptf 你是一个贴心的美食推荐助手。今天是{today}。 以下是用户常去的餐厅和菜单数据{menu_str}用户的需求是{user_input}请根据以下规则为用户推荐一个最佳选择 1. 优先推荐用户很久没吃过的店。 2. 结合用户的口味偏好如辣、清淡、暖胃等。 3. 考虑价格是否在用户预算内。 4. 给出推荐理由让用户觉得“就是它了”。 请以以下格式回复 **推荐店铺**[店铺名] **推荐菜品**[菜品名] **推荐理由**[一段简短的、有说服力的理由] # 3. 调用 AI 接口responseclient.chat.completions.create(modelgpt-4o-mini,messages[{role:system,content:你是一个幽默风趣、懂美食的助手。},{role:user,content:prompt}],temperature0.7,max_tokens300)returnresponse.choices[0].message.content# 使用示例if__name____main__:# 加载菜单数据withopen(menu.json,r,encodingutf-8)asf:menujson.load(f)# 用户输入user_request今天想吃点辣的预算不超过35块最好没吃过的。# 获取推荐recommendationget_ai_recommendation(user_request,menu)print(recommendation)4.3 运行效果当你运行这段代码输入“今天想吃点辣的预算不超过35块”AI 可能会给出这样的回复推荐店铺川味小馆推荐菜品水煮鱼推荐理由您上次去川味小馆已经是 5 天前了是时候重温一下那股麻辣鲜香水煮鱼完美契合您“想吃辣”的需求价格 38 元虽然略超预算但分量十足绝对物超所值是解决“今天吃什么”的终极答案看AI 不仅给出了选择还给出了一个让你无法拒绝的理由。5. 进阶玩法让工具更懂你基础的推荐功能已经能解决大部分问题但还可以加入更多人性化的设计历史记录记录每天的推荐和最终选择让 AI 学习你的真实偏好。“踩雷”反馈如果推荐不好吃可以给个差评AI 下次会避开。多人模式输入几个人的口味偏好让 AI 推荐一个大家都满意的餐厅。集成到聊天软件做成一个 Telegram 或微信机器人每天中午自动推送推荐。6. 总结这个 AI 菜单工具虽然简单但它完美地解决了我每天的精神内耗。它让我意识到AI 的价值不仅仅是生成宏大的报告或复杂的代码更在于这些能切实提升生活幸福感的小工具。如果你也受够了“今天吃什么”的折磨不妨也动手试试。从一个小脚本开始让 AI 成为你的私人美食顾问。毕竟生活的美好往往就藏在这些被解决的小烦恼里。希望这篇文章能给你带来一些启发。如果你有更好的想法或问题欢迎在评论区交流