AI味觉管家:基于Qwen2
探索基于AI的个性化辅导 #生活乐趣# #创新乐趣# #趣味学习工具#
1. 项目介绍
智能菜谱系统是一个基于人工智能的交互式烹饪助手应用,旨在帮助用户发现美食、学习烹饪技巧并享受健康生活。该系统集成了本地大语言模型(LLM)技术,提供个性化的菜谱推荐、详细烹饪指导、营养分析以及智能化的烹饪辅助功能。
该系统不仅为用户提供了丰富的菜谱资源,还通过人工智能技术增强了用户体验,使得烹饪过程更加智能化和个性化。对于烹饪新手,系统提供了详细的指导和提示;对于有经验的厨师,系统则提供了更多创新思路和食材利用建议。
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之眼探索万物