AI味觉管家:基于Qwen2

发布时间:2025-10-22 16:08

探索基于AI的个性化辅导 #生活乐趣# #创新乐趣# #趣味学习工具#

1. 项目介绍

智能菜谱系统是一个基于人工智能的交互式烹饪助手应用,旨在帮助用户发现美食、学习烹饪技巧并享受健康生活。该系统集成了本地大语言模型(LLM)技术,提供个性化的菜谱推荐、详细烹饪指导、营养分析以及智能化的烹饪辅助功能。

1.1 主要功能特点 智能菜谱搜索:支持按关键词、菜系和标签进行灵活搜索 个性化推荐:根据用户口味偏好、过敏食材、烹饪技能等提供定制化菜谱推荐 详细菜谱信息:提供完整的食材、调料列表、烹饪步骤、难度和时间估算 AI 生成内容:利用大模型动态生成烹饪步骤、营养分析、烹饪小贴士等 分量调整:根据用户需求智能调整菜谱分量 食材推荐:根据用户现有食材推荐可用菜谱 烹饪问答:提供专业的烹饪问题解答 用户系统:支持用户资料管理、菜谱收藏和烹饪历史记录 1.2 项目价值

该系统不仅为用户提供了丰富的菜谱资源,还通过人工智能技术增强了用户体验,使得烹饪过程更加智能化和个性化。对于烹饪新手,系统提供了详细的指导和提示;对于有经验的厨师,系统则提供了更多创新思路和食材利用建议。

2. 环境介绍

2.1 依赖包配置

项目使用以下主要依赖包,通过requirements.txt管理:

gradio>=4.0.0          # Web界面框架 torch>=2.1.0           # 深度学习框架 torch_npu>=2.1.0       # 昇腾NPU支持 transformers>=4.41.0   # 模型加载与推理 accelerate>=0.28.0     # 模型加速 sentencepiece>=0.1.98  # 文本分词 einops>=0.8.0          # 张量操作工具 matplotlib             # 数据可视化 2.2 硬件配置 处理器:建议至少4核CPU 内存:推荐16GB以上,用于加载大模型 存储:至少20GB可用空间,用于存储模型文件 加速器:支持昇腾NPU,用于加速模型推理 2.3 模型配置

系统使用了上海昇思的Qwen2-7B-Instruct模型,通过openmind_hub进行下载和管理:

MODEL_NAME = "Shanghai_Ascend/Qwen2-7B-Instruct" model_path = snapshot_download(MODEL_NAME, resume_download=True)

模型部署在NPU上进行推理加速,使用以下配置:

model = AutoModelForCausalLM.from_pretrained(     model_path, trust_remote_code=True ).to("npu").eval() 2.4 部署配置

系统通过Gradio提供Web界面服务,部署配置如下:

demo.launch(     server_name="0.0.0.0",  # 允许所有IP访问     server_port=7861,       # 服务端口     share=False,           # 不创建公共链接     debug=False            # 关闭调试模式 )

3. 代码分析

3.1 核心代码 3.1.1 模型初始化与配置

系统首先导入所需的库,并初始化语言模型和分词器:

import gradio as gr import torch from openmind import AutoModelForCausalLM, AutoTokenizer from openmind_hub import snapshot_download # 加载本地模型 MODEL_NAME = "Shanghai_Ascend/Qwen2-7B-Instruct" model_path = snapshot_download(MODEL_NAME, resume_download=True) tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(     model_path, trust_remote_code=True ).to("npu").eval() 3.1.2 AI 回复生成函数

该函数是系统的核心,负责与模型交互并生成回复:

def generate_response(prompt, max_new_tokens=768):     inputs = tokenizer(prompt, return_tensors="pt").to("npu")     outputs = model.generate(         **inputs,         max_new_tokens=max_new_tokens,         do_sample=True,         temperature=0.7,         top_p=0.9,         repetition_penalty=1.1,         pad_token_id=tokenizer.eos_token_id     )     response = tokenizer.decode(outputs[0], skip_special_tokens=True)     # 移除可能的重复提示文本     clean_response = response.replace(prompt, "").strip()     return clean_response

该函数使用了以下参数来控制生成文本的质量:

max_new_tokens:控制生成文本的最大长度 temperature:控制生成文本的随机性,0.7表示中等随机性 top_p:控制采样空间的大小,0.9表示考虑90%的概率质量 repetition_penalty:防止生成重复内容 3.1.3 菜谱搜索与获取

系统提供了灵活的菜谱搜索功能,并通过AI生成补充数据:

def fetch_recipes_from_internet(keyword, cuisine, max_results=5):     # 构建优化的提示词     prompt = f"""请生成{max_results}个关于'{keyword}'的{cuisine_text}菜谱,必须严格满足以下要求:     # 提示词内容...     """          # 使用模型生成菜谱数据     max_tokens = get_max_tokens("recipe_search")     response = generate_response(prompt, max_new_tokens=max_tokens)          # 解析JSON响应并过滤结果     # ...          return filtered_recipes

该函数的设计考虑了容错性,当JSON解析失败时会尝试使用后备方案生成菜谱。

3.1.4 Gradio 界面构建

系统使用Gradio构建了丰富的交互式界面,包括多个标签页:

with gr.Blocks(     theme=gr.themes.Soft(         primary_hue="orange",         secondary_hue="blue",         neutral_hue="slate"     ),     title="�� 智能菜谱系统",     css="""     # CSS样式定义...     """ ) as demo:          # 界面组件定义和布局     # ...          # 回调函数绑定     # ...

界面设计注重用户体验,使用了现代的UI设计元素和响应式布局。

3.2 关键算法 3.2.1 菜谱推荐算法

系统结合了规则匹配和AI生成来提供个性化推荐:

def recommend_by_ingredients(ingredients_input):     # 分割用户输入的食材列表     user_ingredients = [ing.strip() for ing in ingredients_input.split("、")]          # 计算匹配度     matches = []     for recipe in recipe_database:         recipe_ingredients = [ing["name"] for ing in recipe["ingredients"]]         # 计算匹配度(用户拥有的食材在菜谱中的比例)         matched_count = sum(1 for ing in user_ingredients if any(ing in recipe_ing for recipe_ing in recipe_ingredients))         match_ratio = matched_count / len(recipe_ingredients) if recipe_ingredients else 0                  # 记录匹配结果和缺失食材         if match_ratio > 0:             missing_ingredients = [ing["name"] for ing in recipe["ingredients"] if not any(user_ing in ing["name"] for user_ing in user_ingredients)]             matches.append((recipe, match_ratio, missing_ingredients))          # 按匹配度排序并生成推荐     # ...

该算法通过计算用户拥有的食材与菜谱所需食材的匹配比例,找出最匹配的菜谱,并提供还需要准备的食材列表。

3.2.2 提示词工程策略

系统精心设计了提示词,以确保AI生成的内容质量高且符合要求:

def generate_cooking_tips(recipe):     # 构建详细的提示词     prompt = f"""请为以下菜品提供烹饪小贴士,考虑用户的烹饪技能水平({user_profile['cooking_skill']}): 菜品名称:{recipe['name']} 烹饪步骤: {steps_text} 请提供以下内容: 1. 烹饪过程中的关键点和注意事项 2. 常见失误及避免方法 3. 根据用户烹饪技能水平的个性化建议 4. 食材替换或升级建议(如果适用) 5. 保存和食用建议 请使用简洁、实用的语言,使用适当的表情符号增强可读性。"""          return generate_response(prompt, max_new_tokens=max_tokens)

提示词策略包括:

明确的任务指令 结构化的输出要求 包含必要的上下文信息(如用户技能水平) 格式和风格要求

4.项目总结

智能菜谱系统成功地将大语言模型技术应用于烹饪领域,提供了丰富的功能和良好的用户体验。系统的主要优势包括:

智能化程度高:利用先进的大语言模型生成内容,提供个性化服务 功能丰富:涵盖了从菜谱搜索到烹饪辅助的完整场景 用户体验良好:直观的界面设计和流畅的交互体验 可扩展性强:模块化设计便于后续功能扩展

通过不断的技术创新和功能扩展,智能菜谱系统有望成为用户烹饪生活中不可或缺的智能助手,为人们的饮食健康和生活品质提升做出更大贡献。

网址:AI味觉管家:基于Qwen2 https://www.yuejiaxmz.com/news/view/1381169

相关内容

基于AI的健康管理系统介绍
支付宝基于蚂蚁百灵大模型发布AI生活管家App“支小宝”
基于AI的健康管理,你的私人健康顾问
1024|来“AI+家庭”展台,带你和AI虚拟管家趣味对话!
AI智能居家管家
基于云计算的AI健康管理SaaS服务,实践与挑战
基于AI的家庭个性化运动健身计划设计.docx
AMD奥尼携手发布基于锐龙 AI MAX+395的液冷Mini AI 工作站SMART AI Hub
基于AI技术的智能家居环境优化方案.docx
支付宝推出新一代AI视觉搜索产品“探一下”:用AI之眼探索万物

随便看看