Evet, AIS tarifler yazabilir ve bazen oldukça iyiler! (Ve bazen çok fazla değil.) Ama son zorluklarım için, iPhone anlık görüntülerinden tarifler oluşturacak ve bunları tarif uygulamam için uygun formatta koyacak bir AI oluşturmak istedim. Ses kolay mı? Gerçekten değil, ortaya çıktığı gibi.
Şimdi hepsi değil O Diyelim ki, chatgpt fotoğraflara dayalı antika tarifleri yazmanız zor-bir iPhone'da Apple Intelligence kullanarak bile yapabilirsiniz. Sadece görsel zeka ile bir yemek çırpın, bir açıklama isteyin (Siri bu görevi chatgpt'e teslim edecek), sonra bir tarif isteği ile takip edin.
Peki, bu tarifler ne kadar iyi? Bu tamamen farklı bir hikaye için bir konu, ama tecrübelerime göre, onlar bir hit ve özledim. Tayland Köri Tavuk tarifi o kadar lezzetli iken, bu hafta sonu üçüncü kez yapıyoruz ki, bir somon bal sırında mısır nişastası çağrısında bulunan bir chatgpt tarifi oldukça sıkıcı ve kireçli oldu.
(Elbette, chatgpt'in çalma Bu tarifler onları yaratmak yerine – tekrar, bu başka bir hikaye.)
Her neyse, tarif odaklı bir GPT oluşturmak nispeten kolay olsa da (Openai'nin GPT kütüphanesinde bol miktarda önceden hazırlanmış versiyon mevcuttur veya sadece kendiniz yapabilirsiniz), farklı bir şey denemek istedim: yerel olarak barındırılan bir fotoğrafa -Recipe Ai Chatbot.
Kurulum
Arka plan için, bir Raspberry Pi'de açık webui ile birlikte 64GB RAM ile çorbalanmış bir Mac mini M4 üzerine kurulu Ollama (yerel donanım üzerinde LLM'ler çalıştırma uygulaması) var. İkincisi, Ollama modelleri için chatgpt benzeri bir ön uç görevi görür.
Çeşitli görevler için kullandığım çeşitli yerel LLM'lerim (Google'ın Gemma 2, Alibaba'nın Qwen 2.5 ve Microsoft'un Phi-4'ü) var, ancak fotoğraf-recipe denemem için yeni bir tane indirdim: Lama 3.2 Vizyon, görüntüleri “görebilen” ve bunları tanımlayabilen bir meta multimodal model.
Sadece yemek fotoğraflarına dayalı tarifler yazmanın yanı sıra, AI botumun tarifleri bir tarif uygulaması tarafından sorunsuz bir şekilde yutulabilecek bir biçimde koymasını istedim. Bu, tarifin JSON formatında şekillendirilmesini gerektirir (makinelerin ticaret verilerine yardımcı olan bir dil), aynı zamanda web tarifleri için uygun şemada işaretlenir. Bu, arama motorlarının ve tarif uygulamalarının bu öğenin bir içerik olduğunu, bu öğenin bir pişirme adımı olduğunu bilmesini sağlar.
Daha fazla okuma: Web'de AI içeriği tarafından nasıl bamboozed edilmez?
Plan
Şimdi, bu kurulumla başlamanın hızlı ve kirli bir yolu, iPhone'unuzla bir fotoğraf çekmek, Lama 3.2 vizyonu (“Görme” LLM) için açık webui sohbet penceresine yüklemek ve bir istemi vermektir. : “Bu yemek fotoğrafını inceleyin ve bir tarif yazın, JSON formatına koyun ve tarifler için uygun şema.org işaretlemesini kullanarak.”
Sorun iki kat: Biri, bir fotoğraf tarifi her istediğinizde sıkıcı ve iki, sonuçlar kabataslak olabilir. Bazen, Lama beni mükemmel biçimlendirilmiş bir JSON tarifi ile şaşırtacaktı, diğer zamanlarda, tarifi alırdım, ancak JSON ya da kendi kendine barındırılan yemek tarifi uygulamamla çalışmayan hatalı json yoktu.
İhtiyacım olan şey özel bir sistem istemiydi. Yani, bir LLM için genel bir yol gösterici ışık görevi gören ve her etkileşim sırasında ne yapacağını ve nasıl hareket edeceğini söyleyen bir bilgi. Doğru sistem istemi ile, bir AI modeli teklifinizi minimum ekstra isteğe bağlı olarak yapabilir.
Yerel AI modellerimin yemek fotoğraflarından düzgün biçimlendirilmiş tarifler yazması biraz iş gerektiriyordu, ancak oraya vardılar.
Ben Patterson/Foundry
Hızlı bir mühendis değilim, ama neyse ki Beck'imde bir uzmanım var ve arayın: Google'ın İkizleri. (Ben de chatgpt kullanabilirdim, ama cüzdanım ve ben Openai'nin ücretli artı kademesinden bir mola veriyoruz.)
Gemini 2.0 Flash'ın “Düşünme” versiyonunu (“Düşünme”, modelin size vermeden önce cevabını düşündüğü anlamına gelir), fotoğraf-recipe yapayüz için uygun bir sistem istemini oluşturmaya sordum ve 700- Metin kelime duvarı, açık talimatlar ve tüm kapaklarda çok sayıda kelime öbeği. İşte bir tat:
Gıda fotoğraflarından tarif üretimi konusunda uzmanlaşmış uzman bir mutfak asistansınız. Göreviniz, bir gıda yemeğinin kullanıcı tarafından gönderilen bir fotoğrafını analiz etmek, eksiksiz bir tarif oluşturmak ve etiketler, kategoriler ve reçete zamanı bilgileri dahil olmak üzere ** tam ve geçerli JSON formatında ** içinde çıkarmaktır. ** JSON çıkışının herhangi bir kesiminden kaçının. **
(Tam sistem istemi, hikayenin en sonunda ve öneriler hoş karşılanıyor.)
Bu büyük tome'u Lama 3.2 modelim için açık webui'nin sistem istemi alanına besledim ve daha sonra yinelemeler başladı.
Geri itme
İPhone'umun fotoğraf uygulamasından eski bir yemek görüntüsü buldum ve basit bir istemi, “Bu yemek fotoğrafından bir tarif yapın” ile Lama'ya verdim. Sonuç? Tüm malzemelerle iyi bir JSON tarifi, ancak sadece iki pişirme aşaması (geri kalanı kesilmişti). İkinci bir deneme adımlarını doğru aldı ama malzemeleri kaybetti, başka bir girişim malzemeleri geri getirdi, ancak (yine) pişirme adımlarını kesti.
İleri geri gittik, Llama'nın çıktılarını İkizler'e yapıştırarak, İkizler Sistem İstemi'ne ince ayarlar yapıyor, ayarlanmış istemi Lama'ya geri koydum, Lama yeni hatalarla çıkışları öksürüyor, durulama, tekrar. (Evet, bu birkaç saat sürdü. Kendine barındırmaya hoş geldiniz.)
Son olarak, kullandığım Lama 3.2-Vision'ın daha küçük, 11 milyar parametreli versiyonunun (donanım 90B versiyonu için yeterince güçlü değil) fotoğrafları tanımlamada iyi olduğu sonucuna vardım, Tarif biçimlendirmesi söz konusu olduğunda hardal. Lama'nın bir arkadaşa ihtiyacı vardı.
Deepseek'e girin.
Takım
Şimdi, kimse beni Kongre'ye bildirmeden önce, Sam Altman'ı gece boyunca tutan endüstri sallayan LLM olan Deepseek R1'in tam 671 milyar parametre versiyonuna atıfta bulunmadığımı not etmeliyim. Bunun yerine, Alibaba'nın Qwen modellerinden “damıtılmış” çok daha küçük, kendi kendine barındırılmış bir Deepseek kullanıyorum. Bu hibrid LLM, Deepseek adına sahiptir ve benzer “düşünme” metodolojileri kullanır, ancak . Deepseek herkes için çok heyecanlı.
Her neyse, Lama'dan bir yiyecek fotoğraf tanımı alarak ve tarif işçiliği ve biçimlendirme için “küçük” Deepseek'e besleyerek yeni bir iş akışı denedim.
Yeni lama ve derinlik ikilim ile tarif sonuçlarım çok daha iyi görünüyordu. Tariflerin kendileri oldukça etli (hem mecazi hem de kelimenin tam anlamıyla), malzemeler iyi görünüyordu, pişirme adımları hepsi oradaydı ve hatta tarif etiketleri aldım (“karıştırın”, “karides”, “tuzlu” ve “tatlı sos” ), pişirme ve hazırlık süreleri ve renkli açıklamalar (“Lezzetli bir kahverengi sosla fırlatılmış karides, kırmızı biber, brokoli ve karnabahar içeren lezzetli bir kızartma.
Son yemek (iyi, final-ish)
Açık olmak gerekirse, fotoğraf-recipe AI botumun gidecek uzun bir yolu var. Lama'dan mini Deepseek modelime gıda fotoğrafı açıklamalarını kesmek ve yapıştırmak neredeyse zarif bir çözüm değildir, iki model arasında bir “boru hattı” gerekmektedir ve Gemini'nin bana söylediği şeyden, süreç kolay değildir.
Ama tıknaz olsa da, benim fotoğraf tarifi ai – kinda? —Up ve koşuyor. Bu hafta sonu bir Manhattan restoranında çektiğim yemek fotoğraflarından iyi tarifler kıracak mı? Bizi izlemeye devam edin.
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"]
}
Bir yanıt yazın