一饭封神:当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(强强联合)
快速开始:三步成为厨神
- 输入食材:把你冰箱里的食材输入系统(最多10种)
- 选择菜系:Pick你中意的菜系大师,或者自定义要求
- 交给大师:点击按钮,看各路大师如何化腐朽为神奇!
结语
"一饭封神"不仅是一个菜谱生成工具,更是现代人解决"吃什么"难题的智能助手。它将传统烹饪文化与现代AI技术完美结合,让每个人都能轻松享受烹饪的乐趣。
如果你也厌倦了每天纠结"吃什么",不妨试试这个项目,让你的冰箱食材在各路大师的指导下焕发新生!
项目完全开源,欢迎Star和贡献代码!让我们一起用AI技术让生活更美好!