一饭封神:当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技术让生活更美好!

相关推荐
崔庆才丨静觅2 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60612 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了3 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅3 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅3 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅3 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment3 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅4 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊4 小时前
jwt介绍
前端
爱敲代码的小鱼4 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax