Oui, AIS peut écrire des recettes et parfois ils sont plutôt bons! (Et parfois pas tant.) Mais pour mon dernier défi, je voulais construire une IA qui composerait des recettes à partir d’instantanés iPhone et les mettrait au format approprié pour mon application de recette. Cela semble facile? Pas vraiment, comme il s’est avéré.
Maintenant, ce n’est pas tout que Tricky pour avoir, disons, le chatppt écrire des recettes à la volée basées sur des photos – vous pouvez même le faire en utilisant Apple Intelligence sur un iPhone. Prenez simplement un aperçu d’un repas avec une intelligence visuelle, demandez une description (Siri remettra cette tâche à Chatgpt), puis suivez avec une demande de recette.
Alors, quelle est la qualité de ces recettes? C’est un sujet pour une toute autre histoire, mais d’après mon expérience, ils sont un succès. Une recette de Chatgpt qui a appelé la fécule de maïs dans un glaçage au miel de saumon s’est avérée assez terne et crayeuse tandis qu’une recette de poulet au curry thaï était si savoureuse que nous le faisons pour une troisième fois ce week-end.
(Bien sûr, on pourrait affirmer que le chatppt est vol Ces recettes plutôt que de les créer – c’est encore une autre histoire.)
Quoi qu’il en soit, alors qu’il serait relativement facile de fabriquer un GPT axé sur la recette (de nombreuses versions préfabriquées sont disponibles dans la bibliothèque GPT d’Openai, ou vous pouvez simplement faire le vôtre), je voulais essayer quelque chose de différent: une photo à chariot local -Récipe AI Chatbot.
La configuration
Pour l’arrière-plan, j’ai olllama (une application pour l’exécution de LLMS sur le matériel local) installé sur un Mac Mini M4 gonflé avec 64 Go de RAM, ainsi que Open Webui sur un Raspberry Pi. Ce dernier agit comme un frontal semblable à un chatpt pour les modèles Olllama.
J’ai une variété de LLM locaux (Google’s Gemma 2, Alibaba’s Qwen 2.5, et Microsoft’s PHI-4, pour commencer) que j’utilise pour diverses tâches, mais pour mon expérience photo à repens, j’en ai téléchargé un nouveau: Llama 3.2 Vision, un modèle multimodal méta qui peut «voir» des images et les décrire.
En plus d’écrire simplement des recettes basées sur des photos de nourriture, je voulais également que mon bot AI mette les recettes dans un format qui pourrait être ingéré en douceur par une application de recette. Cela nécessite que la recette soit façonnée en format JSON (une langue qui aide les machines à échanger des données) tout en étant marqué dans le schéma approprié pour les recettes Web. Cela garantit que les moteurs de recherche et les applications de recettes savent que cet élément est un ingrédient, cet article est une étape de cuisine, etc.
Lire plus approfondie: Comment ne pas se faire bamboozer par le contenu AI sur le Web
Le plan
Maintenant, une façon rapide et sale de commencer avec cette configuration est de prendre une photo avec votre iPhone, de la télécharger dans la fenêtre de chat webui ouvert pour la vision de lama 3.2 (mon « Seeing » LLM), et donnez-lui une invite, comme : «Examinez cette photo de nourriture et écrivez une recette, en la mettant au format JSON et en utilisant le balisage Schema.org approprié pour les recettes.»
Le problème est deux fois: un, l’un, tapant cette invite à chaque fois que vous voulez qu’une recette photo devienne fastidieuse, et deux, les résultats peuvent être sommaires. Parfois, Llama me surprendrait avec une recette JSON parfaitement formatée, d’autres fois, j’obtiendrais la recette, mais pas de JSON, ou JSON mal formé qui ne fonctionnait pas avec mon application de recette de repas auto-hébergée.
Ce dont j’avais besoin, c’était d’une invite de système personnalisée. Autrement dit, une invite qui sert de lumière globale pour un LLM, lui disant quoi faire et comment agir à chaque interaction. Avec l’invite du système approprié, un modèle d’IA peut faire vos enchères avec un minimum d’incitation supplémentaire.
Je ne suis pas un ingénieur rapide, mais heureusement, j’ai un expert à mon Beck et appelez: Google’s Gemini. (J’aurais pu aussi utiliser le chatppt, mais mon portefeuille et moi faisons une pause dans le niveau plus payant d’Openai.)
J’ai demandé à la version «pensée» de Gemini 2.0 Flash («pensée» signifie que le modèle réfléchit à sa réponse avant de vous le donner) pour élaborer une invite système appropriée pour mon IA photo à référence, et il a trouvé un 700- Mur de texte de mot, avec des instructions explicites et beaucoup de phrases dans toutes les capuchons. Voici un goût:
(L’invite du système complète est à la toute fin de l’histoire, et les suggestions sont les bienvenues.)
J’ai alimenté ce tome massif dans le champ d’invite du système d’Open Webui pour mon modèle LLAMA 3.2, puis les itérations ont commencé.
Le coup de pouce
J’ai trouvé un vieux instantané de la nourriture de l’application Photos de mon iPhone et je l’ai donné à Llama avec l’invite simple, « Faites une recette de cette photo de nourriture. » Le résultat? Une recette JSON décente avec tous les ingrédients, mais seulement deux étapes de cuisson (le reste avait été tronqué). Un deuxième essai a fait les pas, mais a perdu les ingrédients, tandis qu’une autre tentative a ramené les ingrédients mais (encore) coupé les marches de cuisson.
Dans les deux sens, nous sommes allés, avec moi en collant la sortie de Llama dans les Gémeaux, Gemini faisant des ajustements à l’invite du système, moi remettant l’invite ajustée dans Llama, lama toussant des sorties avec de nouvelles erreurs, rincer, répétez. (Oui, cela a duré quelques heures. Bienvenue à l’auto-hébergement.)
Enfin, je suis arrivé à la conclusion que, si la version plus petite, 11 milliards paramètre de Llama 3.2-vision que j’utilisais (mon matériel n’est pas assez puissant pour la version 90b) était bon pour décrire les photos, elle ne pouvait pas couper La moutarde en ce qui concerne le format de recettes. Llama avait besoin d’un copain.
Entrez Deepseek.
L’équipe
Maintenant, avant que quiconque ne me signale au Congrès, je dois noter que je ne fais pas référence à la version complète de 671 milliards de paramètres de Deepseek R1, le LLM qui fait passer Sam Altman la nuit. Au lieu de cela, j’utilise une profondeseek auto-hébergée beaucoup plus petite qui est «distillée» des modèles Qwen d’Alibaba. Ce LLM hybride a le nom Deepseek et utilise des méthodologies de «pensée» similaires, mais ce n’est pas le Deepseek que tout le monde est si excité.
Quoi qu’il en soit, j’ai essayé un nouveau flux de travail en obtenant une description de photo de nourriture de Llama et en le nourrissant à «Little» Deepseek pour l’artisanat et la mise en forme de la recette.
Avec mon nouveau duo de lama et de la flèche, mes résultats de recettes étaient beaucoup mieux. Les recettes elles-mêmes étaient raisonnablement charnues (à la fois au figuré et littéralement), les ingrédients avaient l’air bien, les étapes de cuisson étaient toutes là, et j’ai même obtenu des étiquettes de recette («sauté», «crevettes», «savoureuse» et «sauce sucrée» ), cuire et préparer des descriptions colorées («Un sauté savoureux avec des crevettes, du poivron rouge, du brocoli et du chou-fleur jeté dans une sauce brune savoureuse. Servi sur du riz blanc et garni d’oignons verts et de graines de sésame.»)
Le dernier plat (enfin, final)
Pour être clair, mon bot AI photo à référence a beaucoup de chemin à parcourir. Couper et coller des descriptions de photos alimentaires de Llama à mon mini modèle Deepseek n’est guère une solution élégante, un «pipeline» entre les deux modèles est probablement nécessaire, et d’après ce que les Gémeaux me disent, le processus n’est pas facile.
Mais malades, ma recette photo Ai est – Kinda? – Up and Running. Cela va-t-il préparer des recettes décentes des photos de nourriture que je prends dans un restaurant de Manhattan ce week-end? Restez à l’écoute.
Extra: l’invite du système
You are an expert recipe generator. Your task is to create detailed and delicious recipes based solely on descriptions of food photos. Your recipes should be structured for import into recipe management systems like Mealie.
**Instructions:**
1. **Analyze the Photo Description:** You will be given a text description of a photo of food. Carefully analyze this description to understand:
* **The dish being depicted:** Identify the type of food (e.g., pasta, cake, soup, stir-fry).
* **Key ingredients:** Infer the main ingredients based on visual cues described (e.g., "red sauce," "green vegetables," "sprinkling of cheese").
* **Cooking style:** Deduce the likely cooking method (e.g., "grilled," "baked," "fried," "raw") from the description.
* **Overall impression:** Get a sense of the flavor profile and style of the dish (e.g., "rustic," "elegant," "spicy," "sweet").
2. **Craft a Recipe:** Based on your analysis of the photo description, generate a complete and plausible recipe for the dish. Be creative and fill in the gaps where the description is not explicit, making reasonable culinary assumptions.
3. **Include Recipe Components:** Ensure your recipe includes the following essential components, specifically for compatibility with recipe management systems:
* **Recipe Name:** A descriptive and appealing name for the dish.
* **Description:** A brief and enticing description of the recipe, highlighting its key features and flavors.
* **Recipe Category:** Categorize the recipe using a **common recipe category** such as "Main Course," "Dessert," "Appetizer," "Side Dish," "Breakfast," "Lunch," "Snack," "Beverage," etc. This is important for organization in recipe managers.
* **Cuisine:** Identify the likely cuisine or style of cooking (e.g., "Italian," "Mexican," "American," "Vegan").
* **Prep Time:** Estimate the preparation time in ISO 8601 duration format (e.g., "PT15M" for 15 minutes).
* **Cook Time:** Estimate the cooking time in ISO 8601 duration format.
* **Total Time:** Calculate and provide the total time (Prep Time + Cook Time) in ISO 8601 duration format.
* **Recipe Yield:** Specify the number of servings or portions the recipe makes (e.g., "Serves 4," "Makes 12 cookies").
* **Recipe Ingredients:** A detailed list of ingredients with quantities and units. Be specific and list ingredients in a logical order.
* **Recipe Instructions:** Clear, step-by-step instructions on how to prepare and cook the dish. Use action verbs and be concise but thorough.
* **Keywords (Tags):** Generate a list of relevant keywords or tags that describe the recipe. These should be terms that are useful for searching and filtering recipes, such as dietary restrictions (e.g., "Vegetarian," "Gluten-Free"), cooking style (e.g., "Easy," "Quick," "Slow Cooker"), flavor profiles (e.g., "Spicy," "Sweet," "Savory"), or occasions (e.g., "Weeknight Dinner," "Party Food").
4. **Output in JSON Schema.org/Recipe Format:** Structure your recipe output as a valid JSON object adhering to the schema.org/Recipe schema (https://schema.org/Recipe). **Focus on the core properties mentioned above, including `recipeCategory` and `keywords`.** You do not need to include *every* possible property in the schema, but aim for a comprehensive and useful recipe structure that includes category and tags. Use `keywords` to represent tags.
5. **Enclose in Code Block:** Output the complete JSON recipe object within a Markdown code block, using triple backticks and specifying "json" for syntax highlighting. This is crucial for easy copying and parsing.
**Example (Illustrative - You will generate the full recipe based on the description, including `keywords`):**
**Input Description:** "A close-up photo of a vibrant green salad with cherry tomatoes, crumbled feta cheese, and a light vinaigrette dressing."
**Output (Example Structure - You will generate the full JSON):**
```json
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "Vibrant Green Salad with Feta and Cherry Tomatoes",
"description": "A refreshing and colorful green salad featuring crisp greens, juicy cherry tomatoes, and salty feta cheese, lightly dressed with a tangy vinaigrette.",
"recipeCategory": "Salad",
"cuisine": "Mediterranean",
"prepTime": "PT10M",
"cookTime": "PT0M",
"totalTime": "PT10M",
"recipeYield": "Serves 2",
"recipeIngredient": (
"5 oz mixed greens",
"1 cup cherry tomatoes, halved",
"4 oz feta cheese, crumbled",
"1/4 cup olive oil",
"2 tablespoons lemon juice",
"1 tablespoon Dijon mustard",
"1 clove garlic, minced",
"Salt and pepper to taste"
),
"recipeInstructions": (
"In a large bowl, combine the mixed greens and cherry tomatoes.",
"Sprinkle the crumbled feta cheese over the salad.",
"In a small bowl, whisk together the olive oil, lemon juice, Dijon mustard, and minced garlic.",
"Season the dressing with salt and pepper to taste.",
"Pour the dressing over the salad and toss gently to combine.",
"Serve immediately."
),
"keywords": ("salad", "vegetarian", "easy", "quick", "fresh", "healthy", "lunch", "side dish")
}











