我受够了每天问“今天吃什么”,于是做了个 AI 菜单工具
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 成为你的私人美食顾问。毕竟生活的美好往往就藏在这些被解决的小烦恼里。希望这篇文章能给你带来一些启发。如果你有更好的想法或问题欢迎在评论区交流

相关新闻

CKEditor 5 v48.3.1版本深度解析:企业级富文本编辑框架的技术架构与安全协作方案

CKEditor 5 v48.3.1版本深度解析:企业级富文本编辑框架的技术架构与安全协作方案

CKEditor 5 v48.3.1版本深度解析:企业级富文本编辑框架的技术架构与安全协作方案 【免费下载链接】ckeditor5 Powerful rich text editor framework with a modular architecture, modern integrations, and features like collaborative editing. 项目地址: http…

2026/7/25 20:13:57 阅读更多 →
Beat做歌软件怎么选:从挑伴奏、找Sample到完成一首歌

Beat做歌软件怎么选:从挑伴奏、找Sample到完成一首歌

有时候真不是不会写,前二十分钟就是进不了状态。工程开着,主歌写两句又删,越盯空轨道越烦。我通常不硬憋,先刷几段Beat,让鼓点把情绪拽出来。写说唱、旋律demo,或者脑子里只有模糊画面时,先有伴…

2026/7/23 18:12:00 阅读更多 →
075、语义分割驱动的局部调优:场景感知的影像增强

075、语义分割驱动的局部调优:场景感知的影像增强

075、语义分割驱动的局部调优:场景感知的影像增强 去年夏天,我在调试一款车载环视系统的夜视增强模块时,遇到了一个让我连续加班两周的棘手问题。传统的全局直方图均衡化让天空过曝、地面细节丢失;CLAHE虽然能保留局部对比度,但在有路灯的区域会放大噪声,让图像看起来像得…

2026/7/24 15:19:54 阅读更多 →

最新新闻

如何用浏览器直接查看和测量3D模型?Online3DViewer为你提供一站式解决方案

如何用浏览器直接查看和测量3D模型?Online3DViewer为你提供一站式解决方案

如何用浏览器直接查看和测量3D模型?Online3DViewer为你提供一站式解决方案 【免费下载链接】Online3DViewer A solution to visualize and explore 3D models in your browser. 项目地址: https://gitcode.com/gh_mirrors/on/Online3DViewer 想象一下&#x…

2026/7/25 20:32:49 阅读更多 →
Onekey终极指南:掌握Steam游戏清单下载与解锁配置的5个核心技巧

Onekey终极指南:掌握Steam游戏清单下载与解锁配置的5个核心技巧

Onekey终极指南:掌握Steam游戏清单下载与解锁配置的5个核心技巧 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey Onekey是一款专为Steam平台设计的开源游戏解锁工具,通过自…

2026/7/25 20:32:49 阅读更多 →
ComfyUI-BrushNet终极指南:轻松实现AI图像修复与创意重绘

ComfyUI-BrushNet终极指南:轻松实现AI图像修复与创意重绘

ComfyUI-BrushNet终极指南:轻松实现AI图像修复与创意重绘 【免费下载链接】ComfyUI-BrushNet ComfyUI BrushNet nodes 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-BrushNet 你是否曾经遇到过这样的场景:一张完美的照片中有一个小小的瑕…

2026/7/25 20:32:49 阅读更多 →
为什么imFile能颠覆你的下载工作流?探索这款革命性下载管理器的智能解决方案

为什么imFile能颠覆你的下载工作流?探索这款革命性下载管理器的智能解决方案

为什么imFile能颠覆你的下载工作流?探索这款革命性下载管理器的智能解决方案 【免费下载链接】imfile-desktop A full-featured download manager. 项目地址: https://gitcode.com/gh_mirrors/im/imfile-desktop 你是否曾为下载大文件时速度缓慢而烦恼&#…

2026/7/25 20:32:49 阅读更多 →
Unity中LineRenderer被UI遮挡?RenderTexture+RawImage终极解决方案

Unity中LineRenderer被UI遮挡?RenderTexture+RawImage终极解决方案

1. 项目概述:当你的炫酷轨迹被UI无情覆盖 在Unity里做项目,尤其是那些带点策略、塔防或者需要高亮显示路径的游戏,LineRenderer组件绝对是你的好帮手。画个攻击范围、标个移动路线、做个技能特效,几行代码就能拉出一条平滑的曲线&…

2026/7/25 20:32:49 阅读更多 →
Linux运维学习路线:从零基础到企业级实战的完整指南

Linux运维学习路线:从零基础到企业级实战的完整指南

如果你正在寻找一套系统、完整且能真正带你从零基础入门到掌握企业级Linux运维技能的学习资源,那么这篇文章就是为你准备的。我们这次要看的不是某个单一的软件或模型,而是一个结构化的“学习路线图”和配套的“资源包”。它解决了初学者面对海量、零散的Linux运维教程时,不…

2026/7/25 20:31:49 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻