一饭封神:当AI厨神遇上你的冰箱,八大菜系大师在线battle!

一饭封神:当AI厨神遇上你的冰箱,八大菜系大师在线battle!

项目地址:github.com/liu-ziting/...

在线体验:eat.lz-t.top/

你是否也有过这样的经历:站在冰箱前,看着里面零零散散的食材,大脑却一片空白,不知道今晚该做什么菜?别担心,"一饭封神"来了!这个项目就像一个神奇的魔法盒,只要你告诉它你冰箱里有什么,它就能召唤出中华八大菜系+国际料理的大师们,为你量身定制专属菜谱。

冰箱清空计划:从"不知道吃什么"到"选择困难症"

我们都有过这样的冰箱:

  • 几片蔫了的青菜叶子
  • 半块不知道什么时候买的豆腐
  • 一根孤零零的胡萝卜
  • 剩下的几片午餐肉
  • 还有一些神秘的调料...

面对这样的冰箱,普通人的选择是:点外卖!但有了"一饭封神",你就能化腐朽为神奇,让这些看似毫无关联的食材变成一道道美味佳肴。

八大菜系大师在线battle,谁才是真正的厨神?

当你输入食材后,"一饭封神"会召唤出中华八大菜系的大师们,他们可不是普通的厨师,而是有着深厚文化底蕴的宗师级人物:

🦐 苏菜大师:江南水乡的精致美味

"作为苏菜传承人,我精通淮扬菜系精髓。苏菜以清鲜雅致、刀工精细著称。让我用你这些简单的食材,设计一道正统苏菜,突出食材本味与养生搭配。"

🐟 鲁菜大师:齐鲁大地的豪放风味

"身为鲁菜宗师,我深谙孔府宫廷菜真谛。鲁菜讲究咸鲜纯正、火功严谨、礼仪考究。看我的,用这些食材创作经典鲁菜,强调火候层次与五味调和!"

🌶️ 川菜大师:巴蜀之地的麻辣传奇

"作为川味掌门,我掌握二十三味型精髓。川菜擅长麻辣平衡、复合调味、一菜一格。这些食材?正好让我设计一道地道川味,突出口感层次与红油运用!"

🦆 粤菜大师:岭南文化的鲜美诠释

"身为粤菜泰斗,我崇尚清中求鲜理念。粤菜注重时令本味、镬气逼人、养生之道。让我根据你这些食材构思广府佳肴,凸显生猛鲜香与少油烹饪。"

🐠 浙菜大师:江南水乡的清雅之味

"作为浙菜传人,我深得南宋遗风真传。浙菜追求清雅时鲜、南料北烹、滑嫩见长。用你这些食材创作江南风韵菜,突出时令搭配与脆嫩口感,小菜一碟!"

🔥 湘菜大师:湖湘文化的辣味人生

"身为湘味宗师,我精通腊熏剁椒秘技。湘菜讲究酸辣透味、油重色浓、乡野本真。看我的,针对你这些食材设计火辣湘肴,突出发酵辣味与油色融合!"

🦀 闽菜大师:八闽大地的海鲜盛宴

"作为闽菜大家,我传承佛跳墙精髓。闽菜擅长汤醇味隽、糟香四溢、山珍海味。让我依据你这些食材创作闽派珍馐,突出红糟提鲜与汤品层次!"

🐷 徽菜大师:徽州文化的朴实醇香

"身为徽菜掌门,我掌握文火炖焖绝技。徽菜强调重油保色、火腿提鲜、山野本味。看我的,针对你这些食材设计徽州古韵菜,突出炭火慢炖与油色控制!"

国际料理大师也来凑热闹!

除了中华八大菜系,项目还邀请了国际料理大师:

  • 🍣 日式料理大师:和食之道的极致美学
  • 🥢 韩式料理大师:韩半岛的发酵智慧
  • 🍝 意式料理大师:地中海的阳光味道
  • 🥖 法式料理大师:高卢雄鸡的优雅艺术
  • 🍛 印度料理大师:香料王国的神秘魅力
  • 🌶️ 泰式料理大师:暹罗王国的酸甜平衡
  • 🌮 墨西哥料理大师:阿兹特克的火辣传承

AI黑科技加持,不只是菜谱那么简单

📷 AI效果图生成

每道菜谱都配有AI生成的精美效果图,让你提前预览成品的诱人模样。

🥗 营养分析

详细的营养成分分析,帮你科学管理饮食健康。

🍷 酒水搭配

专业侍酒师推荐,告诉你这道菜配什么酒最合适。

🍯 酱汁设计

想要独特口味?酱汁大师为你定制专属调料配方。

💝 收藏管理

遇到喜欢的菜谱?一键收藏,随时查看。

🔮 料理占卜

不知道吃什么?让AI根据你的星座、心情推荐幸运菜品!

技术实现解析

菜系大师系统

项目的核心创新之一是菜系大师系统,通过为每个菜系设计专门的AI提示词,模拟不同菜系大师的专业知识。

typescript 复制代码
// src/config/cuisines.ts
export const cuisines: CuisineType[] = [
    {
        id: 'su',
        name: '苏菜大师',
        description: '江南水乡的精致美味',
        avatar: '🦐',
        specialty: '清淡鲜美,刀工精细',
        prompt: `作为苏菜传承人,你精通淮扬菜系精髓。苏菜以清鲜雅致、刀工精湛、造型玲珑著称。请基于用户食材设计一道正统苏菜,突出食材本味与养生搭配。回答需包含:创意菜名、分步烹饪流程、刀工技法解析、营养平衡说明。`
    },
    {
        id: 'chuan',
        name: '川菜大师',
        description: '巴蜀之地的麻辣传奇',
        avatar: '🌶️',
        specialty: '麻辣鲜香,变化多端',
        prompt: `作为川味掌门,你掌握二十三味型精髓。川菜擅长麻辣平衡、复合调味、一菜一格。请针对用户食材设计地道川味,突出口感层次与红油运用。回答需包含:特色菜名、七步烹饪法、秘制调料配方、味型创新解析。`
    },
    // ... 其他菜系
]

每个菜系大师都有独特的提示词(prompt),这些提示词经过精心设计,能够引导AI生成符合该菜系特色的菜谱。

AI服务集成

项目通过统一的AI服务层管理与不同AI模型的交互,包括文本生成和图像生成。

typescript 复制代码
// src/services/aiService.ts
/**
 * 调用AI接口生成菜谱
 * @param ingredients 食材列表
 * @param cuisine 菜系信息
 * @param customPrompt 自定义提示词(可选)
 * @returns Promise<Recipe>
 */
export const generateRecipe = async (ingredients: string[], cuisine: CuisineType, customPrompt?: string): Promise<Recipe> => {
    try {
        // 构建提示词
        let prompt = `${cuisine.prompt}\n\n用户提供的食材:${ingredients.join('、')}`

        // 如果有自定义要求,添加到提示词中
        if (customPrompt) {
            prompt += `\n\n用户的特殊要求:${customPrompt}`
        }

        prompt += `\n\n请按照以下JSON格式返回菜谱,不包含营养分析和酒水搭配:
{
  "name": "菜品名称",
  "ingredients": ["食材1", "食材2"],
  "steps": [
    {
      "step": 1,
      "description": "步骤描述",
      "time": 5,
      "temperature": "中火"
    }
  ],
  "cookingTime": 30,
  "difficulty": "medium",
  "tips": ["技巧1", "技巧2"]
}`

        // 调用AI接口
        const response = await aiClient.post('/chat/completions', {
            model: AI_CONFIG.model,
            messages: [
                {
                    role: 'system',
                    content: '你是一位专业的厨师,请根据用户提供的食材和菜系要求,生成详细的菜谱。请严格按照JSON格式返回,不要包含任何其他文字。'
                },
                {
                    role: 'user',
                    content: prompt
                }
            ],
            temperature: AI_CONFIG.temperature,
            stream: false
        })

        // 解析AI响应
        const aiResponse = response.data.choices[0].message.content

        // 清理响应内容,提取JSON部分
        let cleanResponse = aiResponse.trim()
        if (cleanResponse.startsWith('```json')) {
            cleanResponse = cleanResponse.replace(/```json\s*/, '').replace(/```\s*$/, '')
        } else if (cleanResponse.startsWith('```')) {
            cleanResponse = cleanResponse.replace(/```\s*/, '').replace(/```\s*$/, '')
        }

        const recipeData = JSON.parse(cleanResponse)

        // 构建完整的Recipe对象
        const recipe: Recipe = {
            id: `recipe-${cuisine.id}-${Date.now()}`,
            name: recipeData.name || `${cuisine.name}推荐菜品`,
            cuisine: cuisine.name,
            ingredients: recipeData.ingredients || ingredients,
            steps: recipeData.steps || [
                { step: 1, description: '准备所有食材', time: 5 },
                { step: 2, description: '按照传统做法烹饪', time: 20 }
            ],
            cookingTime: recipeData.cookingTime || 25,
            difficulty: recipeData.difficulty || 'medium',
            tips: recipeData.tips || ['注意火候控制', '调味要适中'],
            nutritionAnalysis: undefined,
            winePairing: undefined
        }

        return recipe
    } catch (error) {
        console.error(`生成${cuisine.name}菜谱失败:`, error)
        throw new Error(`${cuisine.name}暂时学不会这道菜`)
    }
}

流式生成体验

为了提升用户体验,项目实现了流式生成功能,让用户可以实时看到菜谱生成过程:

typescript 复制代码
// 流式生成多个菜系的菜谱
export const generateMultipleRecipesStream = async (
    ingredients: string[],
    cuisines: CuisineType[],
    onRecipeGenerated: (recipe: Recipe, index: number, total: number) => void,
    onRecipeError?: (error: Error, index: number, cuisine: CuisineType, total: number) => void,
    customPrompt?: string
): Promise<void> => {
    const total = cuisines.length
    let completedCount = 0

    // 为了更好的用户体验,我们不并行生成,而是依次生成
    // 这样用户可以看到一个个菜谱依次完成的效果
    for (let index = 0; index < cuisines.length; index++) {
        const cuisine = cuisines[index]
        try {
            // 添加一些随机延迟,让生成过程更自然
            const delay = 1000 + Math.random() * 2000 // 1-3秒的随机延迟
            await new Promise(resolve => setTimeout(resolve, delay))

            const recipe = await generateRecipe(ingredients, cuisine, customPrompt)
            completedCount++
            onRecipeGenerated(recipe, index, total)
        } catch (error) {
            console.error(`生成${cuisine.name}菜谱失败:`, error)

            // 调用错误回调,让前端可以显示友好的错误信息
            if (onRecipeError) {
                const friendlyError = new Error(`${cuisine.name}不会这道菜,哈哈`)
                onRecipeError(friendlyError, index, cuisine, total)
            }

            // 即使某个菜系失败,也继续生成其他菜系
            continue
        }
    }

    if (completedCount === 0) {
        throw new Error('所有菜系生成都失败了,请稍后重试')
    }

    if (completedCount < total) {
        console.warn(`${total - completedCount}个菜系生成失败,但已成功生成${completedCount}个菜谱`)
    }
}

AI图像生成服务

项目集成了智谱AI的CogView-3-Flash模型,为生成的菜谱配上精美的效果图:

typescript 复制代码
// src/services/imageService.ts
export const generateRecipeImage = async (recipe: Recipe): Promise<GeneratedImage> => {
    // 构建图片生成的提示词
    const prompt = buildImagePrompt(recipe)

    const sizeToUse = { width: 1024, height: 1024 }

    try {
        const response = await fetch(API_URL, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                Authorization: `Bearer ${IMAGE_CONFIG.apiKey}`
            },
            body: JSON.stringify({
                model: IMAGE_CONFIG.model,
                prompt: prompt,
                size: `${sizeToUse.width}x${sizeToUse.height}`,
                n: 1,
                style: 'vivid',
                quality: 'hd'
            })
        })

        if (!response.ok) {
            throw new Error(`API请求失败: ${response.status}`)
        }

        const data = await response.json()

        if (data.data && data.data.length > 0) {
            return {
                url: data.data[0].url,
                id: `${recipe.id}-${Date.now()}`
            }
        } else {
            throw new Error('API返回数据格式错误')
        }
    } catch (error) {
        console.error('生成图片失败:', error)
        throw error
    }
}

const buildImagePrompt = (recipe: Recipe): string => {
    // 根据菜谱信息构建详细的图片生成提示词
    const ingredients = recipe.ingredients.join('、')
    const cuisineStyle = recipe.cuisine.replace('大师', '').replace('菜', '')

    return `一道精美的${cuisineStyle}菜肴:${recipe.name},主要食材包括${ingredients}。菜品摆盘精致,色彩丰富,光线柔和,专业美食摄影风格,高清画质,餐厅级别的视觉效果。背景简洁,突出菜品本身的美感。`
}

技术栈揭秘

  • 前端框架:Vue 3.4 + Composition API + TypeScript 5.3+(现代化、类型安全)
  • 样式方案:Tailwind CSS 3.4+(快速构建美观界面)
  • 构建工具:Vite 5.0+(极速开发体验)
  • AI服务:零一万物 Yi-Lightning + 智谱 AI CogView-3-Flash(强强联合)

快速开始:三步成为厨神

  1. 输入食材:把你冰箱里的食材输入系统(最多10种)
  2. 选择菜系:Pick你中意的菜系大师,或者自定义要求
  3. 交给大师:点击按钮,看各路大师如何化腐朽为神奇!

结语

"一饭封神"不仅是一个菜谱生成工具,更是现代人解决"吃什么"难题的智能助手。它将传统烹饪文化与现代AI技术完美结合,让每个人都能轻松享受烹饪的乐趣。

如果你也厌倦了每天纠结"吃什么",不妨试试这个项目,让你的冰箱食材在各路大师的指导下焕发新生!

项目完全开源,欢迎Star和贡献代码!让我们一起用AI技术让生活更美好!

相关推荐
再学一点就睡5 小时前
NATAPP 内网穿透指南:让本地项目轻松 “走出去”
前端
拜无忧5 小时前
2025最新React项目架构指南:从零到一,为前端小白打造
前端·react.js·typescript
稻草人不怕疼5 小时前
记一次从“按钮点不动”到“窗口派发缺失”的排查过程
前端
李洋-蛟龙腾飞公司5 小时前
HarmonyOSAI编程万能卡片生成(一)
华为·ai编程·harmonyos
前端小哲6 小时前
MCP从入门到实战
node.js·ai编程
irving同学462386 小时前
TypeORM 列装饰器完整总结
前端·后端·nestjs
彭于晏爱编程6 小时前
你真的了解 Map、Set 嘛
前端
崔璨6 小时前
详解Vue3的响应式系统
前端·vue.js
摸鱼的鱼lv6 小时前
🔥 Vue.js组件通信全攻略:从父子传值到全局状态管理,一篇搞定所有场景!🚀
前端·vue.js