نعم ، يمكن لـ AIS كتابة الوصفات وأحيانًا تكون جيدة! (وأحيانًا ليس كثيرًا.) ولكن من أجل التحدي الأخير ، أردت إنشاء منظمة العفو الدولية التي تشكل وصفات من لقطات iPhone ووضعها في التنسيق المناسب لتطبيق الوصفات الخاص بي. يبدو سهلا؟ ليس حقا ، كما اتضح.
الآن ، ليس كل شيء الذي – التي من الصعب ، على سبيل المثال ، أن تكتب chatgpt وصفات أثناء التنقل بناءً على الصور-يمكنك حتى القيام بذلك باستخدام Apple Intelligence على جهاز iPhone. ما عليك سوى أخذ مجموعة من الوجبة مع الذكاء المرئي ، واطلب وصفًا (سيقوم Siri بتسليم هذه المهمة إلى ChatGPT) ، ثم متابعة طلب للحصول على وصفة.
لذا ، ما مدى جودة هذه الوصفات؟ هذا موضوع لقصة مختلفة تمامًا ، لكن في تجربتي ، إنهم ناجحون ومفوضون. تحولت وصفة ChatGPT التي دعت إلى نشا الذرة في صقيل عسل السلمون إلى حد ما إلى حد ما والطباشيري في حين كانت وصفة دجاج الكاري التايلاندية لذيذة لدرجة أننا نجعلها للمرة الثالثة في نهاية هذا الأسبوع.
(بالطبع ، يمكن للمرء أن يجادل بأن chatgpt هو سرقة هذه الوصفات بدلاً من إنشائها – هذه قصة أخرى.)
على أي حال ، على الرغم من أنه سيكون من السهل نسبيًا صياغة GPT التي تركز على الوصفات (تتوفر الكثير من الإصدارات الممتدة في مكتبة GPT في Openai ، أو يمكنك ببساطة صنع خاص بك) ، أردت أن أجرب شيئًا مختلفًا: صورة مستضافة محليًا -رئجة منظمة العفو الدولية chatbot.
الإعداد
بالنسبة للخلفية ، لديّ Ollama (تطبيق لتشغيل LLMs على الأجهزة المحلية) مثبتة على جهاز Mac Mini M4 مع 64 جيجابايت من ذاكرة الوصول العشوائي ، إلى جانب Webui المفتوح على Raspberry Pi. هذا الأخير بمثابة الواجهة الأمامية التي تشبه ChatGPT لنماذج Ollama.
لدي مجموعة متنوعة من LLMs المحلية (Gewma's Gemma 2 و Alibaba's QWEN 2.5 و Microsoft's PHI-4 ، للمبتدئين) التي أستخدمها في مهام مختلفة ، ولكن لتجربتي من أجل التصوير ، قمت بتنزيل واحدة جديدة: Llama 3.2 Vision ، نموذج متعدد الوسائط Meta يمكنه “رؤية” الصور ووصفها.
إلى جانب كتابة الوصفات ببساطة بناءً على صور الطعام ، أردت أيضًا أن يضع روبوت منظمة العفو الدولية الوصفات بتنسيق يمكن تناوله بسلاسة بواسطة تطبيق وصفة. يتطلب ذلك تشكيل الوصفة في تنسيق JSON (لغة تساعد على تجارة الآلات) مع تمييزها أيضًا في المخطط المناسب لوصفات الويب. هذا يضمن أن محركات البحث وتطبيقات الوصفة تعرف أن هذا العنصر هو عنصر ، وهذا العنصر هو خطوة طبخ ، وهكذا.
مزيد من القراءة: كيف لا يمكن التغلب على محتوى الذكاء الاصطناعي على الويب
الخطة
الآن ، هناك طريقة سريعة وقذرة للبدء في هذا الإعداد هي مجرد التقاط صورة مع جهاز iPhone الخاص بك ، وتحميلها على نافذة Webui Eat Open لـ Llama 3.2 Vision (“رؤية” LLM) ، ومنحها موجهًا ، مثل : “افحص هذه الصورة الغذائية واكتب وصفة ، ووضعها بتنسيق JSON واستخدام علامة Schema.org المناسبة للوصفات.”
المشكلة هناك ذات شقين: واحد ، وكتابة هذا المطالبة في كل مرة تريد وصفة صور تصبح مملة ، واثنتان ، يمكن أن تكون النتائج سطحية. في بعض الأحيان ، كان Llama يفاجئني بوصفة JSON المنسقة تمامًا ، في أوقات أخرى ، سأحصل على الوصفة ، لكن لا يوجد JSON ، أو JSON المشوه التي لم تعمل مع تطبيق وصفة الوجبة المستضافة ذاتيًا.
ما احتاجه كان موجه نظام مخصص. وهذا يعني أن المطالبة التي تعمل بمثابة ضوء توجيهي شامل لـ LLM ، ويخبرها بما يجب فعله وكيفية التصرف خلال كل تفاعل. مع موجه النظام الصحيح ، يمكن لنموذج الذكاء الاصطناعى القيام بتقديم عطاءات مع الحد الأدنى من المطالبة الإضافية.
أنا لست مهندسًا فوريًا ، لكن لحسن الحظ لدي خبير في بيك والاتصال: GEMINI من Google. (كان بإمكاني استخدام chatgpt أيضًا ، لكن محفظتي وأنا نأخذ استراحة من طبقة Openai المدفوعة بالإضافة إلى.)
سألت إصدار “التفكير” من Gemini 2.0 Flash (“التفكير” يعني أن النموذج يتساءل عن إجابته قبل إعطائه لك) لصياغة موجه نظام مناسب لث إنتعادي ، وتوصل إلى 700– Word Wall of Text ، مع تعليمات واضحة والكثير من العبارات في جميع الأغطية. هذا طعم:
أنت مساعد خبير في الطهي متخصص في توليد الوصفات من صور فوتوغرافية. تتمثل مهمتك في تحليل صورة مقدمة من المستخدم لطبق طعام ، وإنشاء وصفة كاملة ، وإخراجها بتنسيق JSON الكامل والصالح ** ، بما في ذلك العلامات والفئات ومعلومات وقت الوصفة. ** تجنب أي اقتطاع لمخرج JSON. **
(موجه النظام الكامل في نهاية القصة ، والاقتراحات مرحب بها).
لقد أطعمت هذا tome الضخم في حقل تطبيق نظام Webui المفتوح لطراز Llama 3.2 ، ثم بدأت التكرارات.
الظهير
لقد وجدت لقطة طعام قديمة من تطبيق صور iPhone الخاص بي وأعطتها إلى Llama بمطالبة بسيطة ، “اصنع وصفة من صورة الطعام هذه.” النتيجة؟ وصفة JSON لائقة مع جميع المكونات ، ولكن فقط خطوتين للطبخ (تم اقتطاع الباقي). حصلت في محاولة ثانية على الخطوات الصحيح ولكن فقدت المكونات ، في حين أعادت محاولة أخرى المكونات إلى الوراء ، لكن (مرة أخرى) قطعت خطوات الطهي.
ذهابًا وإيابًا ، ذهبنا ، مع لصق ناتج Llama في Gemini ، Gemini صنع تعديلات على مطالبة النظام ، وأعيد تعديل المطالبة مرة أخرى إلى LAMA ، LAMA السعال مع أخطاء جديدة ، شطف ، كرر. (نعم ، استمر هذا لبضع ساعات. مرحبًا بك في استضافة الذات.)
أخيرًا ، توصلت إلى استنتاج مفاده أنه على الرغم من أن النسخة الأصغر التي تبلغ 11 مليار معلمة من Llama 3.2-Vision والتي كنت أستخدمها (أجهزتي ليست قوية بما يكفي لإصدار 90B) كانت جيدة في وصف الصور الخردل عندما يتعلق الأمر بتنسيق الوصفة. احتاج لاما إلى صديق.
أدخل Deepseek.
الفريق
الآن ، قبل أن يقدمني أي شخص إلى الكونغرس ، يجب أن أشير إلى أنني لا أشير إلى إصدار المعلمة الكامل البالغ 671 مليار من Deepseek R1 ، وهي شركة LLM التي تهتز في الصناعة والتي تبقي Sam Altman في الليل. بدلاً من ذلك ، أستخدم Deepseek أصغر بكثير ، مستضيف ذاتيًا “مقطر” من طرز Qwen في Alibaba. يحتوي هذا LLM المختلط على اسم Deepseek ويستخدم منهجيات “تفكير” مماثلة ، لكنها ليست ال ديبسيك أن الجميع متحمسون للغاية.
على أي حال ، جربت سير عمل جديد من خلال الحصول على وصف صورة للطعام من Llama وإطعامه إلى Deepseek “Little” لصياغة الوصفة والتنسيق.
مع ثنائي Llama و Deepseek الجديد ، كانت نتائج الوصفات الخاصة بي أفضل بكثير. كانت الوصفات نفسها حميمة بشكل معقول (على حد سواء مجازيًا وحرفيًا) ، بدت المكونات جيدة ، وكانت خطوات الطهي كلها ، وحتى حصلت على علامات وصفات ( ) ، أوقات الطهي والإعدادية ، والأوصاف الملونة (“حركي لذيذ يضم الروبيان ، والفلفل الأحمر ، والبروكلي ، والقرنبيط القذف في صلصة بنية لذيذة. يتم تقديمه على الأرز الأبيض ومزخرف مع البصل الأخضر وبذور السمسم.”)
الطبق النهائي (حسنا ، النهائي)
لكي أكون واضحًا ، فإن صهر الذكاء الاصطناعى الخاص بي لديه طرق طويلة للذهاب. إن قطع أوصاف الصور الغذائية من Llama إلى نموذج Mini Deepseek الخاص بي لا يكاد يكون حلًا أنيقًا ، وربما “خط أنابيب” بين النموذجين مطلوب ، ومن ما تخبرني به Gemini ، فإن العملية ليست سهلة.
ولكن على الرغم من ذلك ، فإن وصفة الصور الخاصة بي هي – Kinda؟ هل ستشعر بالوصفات اللائقة من صور الطعام التي ألتقطها في مطعم مانهاتن في نهاية هذا الأسبوع؟ ابقوا متابعين.
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")
}