Projet Treehacks 2024. Faites défiler vers le bas pour plus de détails. 
| Section | Description |
|---|---|
| Application Vision OS | Instructions pour télécharger et extraire le fichier VisionMama.zip pour l'application Vision OS. |
| Pipeline d'agent AI pour la génération de recettes, la recherche alimentaire et la commande Instacart | Détails sur le pipeline à partir de la demande de nourriture d'un utilisateur à la génération d'une recette, à l'identification des ingrédients, à la recherche d'emplacements d'achat et à la création d'une commande Instacart. Utilise un Mistral-7B LLM affiné, GPT-4-Turbo, API SERP et un algorithme de classement sophistiqué. |
| Pré-formation | Informations sur la préparation de l'ensemble de données, le processus de pré-formation et la prise de décision concernant l'utilisation d'un modèle Mistral-7B affiné. |
| Réglage fin | Décrit LORA Fine-Tuning de Mistral-7B avec 250k recettes, paramètres utilisés et impact sur la taille de l'ensemble de données sur les performances. |
| Reflex.dev Agent de chat Web | Utilisation de Reflex.dev pour créer une interface de chat pour interagir avec l'agent AI, y compris les déclencheurs pour la génération de recettes et l'identification des ingrédients. |
| InterSystems Iris Vector Database pour découverte de recettes sémantiques | Utilisation de la base de données Vector Iris pour les incorporations de recettes et les recherches sémantiques basées sur les entrées "VIBE" utilisateur. |
Dans le fichier Visionmama.zip, veuillez télécharger et extraire cela
Nous avons construit un point final que nous avons frappé de notre Vision Pro et de notre site réflexe. Fondamentalement, ce qui se passe, c'est que nous soumettons la nourriture souhaitée par un utilisateur tel que la "soupe aux bananes". Nous passons cela à notre LLM Mistral-7b à réglage fin pour générer une recette. Ensuite, nous utilisons rapidement GPT-4-Turbo pour analyser la recette et extraire les ingrédients. Ensuite, nous utilisons l'API SERP sur chaque ingrédient pour trouver où il peut être acheté à proximité. Nous priorisons les ingrédients moins chers et utilisons un algorithme pour essayer de visiter le moins de magasins pour acheter tous les ingrédients. Enfin, nous remplissons un appel API de commande Instacart pour acheter les ingrédients (simulé pour l'instant car nous n'avons pas un accès partenaire réel à l'API d'Instacart)
Nous avons trouvé un ensemble de données en ligne de 250 000 recettes. Nous les avons prétraités et les avons divisés et les avons jetés pour pré-formation. Nous avons utilisé le tokenizer en codage de la paire d'octets GPT2. Nous avons formé notre paramètre 40m LLM en utilisant une implémentation de nanogpt modifiée, nous n'avons pas eu le temps de comprendre comment déployer le LLM, nous avons donc opté pour notre modèle Mistral-7B affiné (qui a également mieux fonctionné). Plus de détails sur notre DevPost.
Nous avons affiné Mistral-7B à l'aide de la plate-forme en ligne de Monsterapi: Monsterapi.ai. (Merci à l'équipe de nous avoir donné des crédits gratuits!) Paramètres: Une époque, Lora R = 8, Lora Alpha = 16, dépôt = 0, biais = aucun, étapes d'accumulation de gradient = 32, LR = 0,0002, étapes d'échauffement = 100
Avant le réglage fin, nous avons préparé 250k recettes que nous avons obtenues en ligne dans un format d'instruments standard en utilisant ce script: PreparereCipesForFineTUning.py Le format est: vous êtes un chef expert. Vous connaissez beaucoup de cuisines diverses. Vous écrivez des recettes savoureuses utiles. N n ### Instruction: Veuillez réfléchir étape par étape et générer une recette détaillée pour {invite} n n ### Réponse: {Achèvement}
Nous avons également bien classé toutes les invites et les achèvements. Nous avons expérimenté le réglage fin en utilisant des recettes 10K, 50K et 250k. Nous avons observé que l'utilisation de plus de données entraînait une perte plus faible, mais à des rendements diminués. Nous avons déployé notre Mistral-7b (250k d'exemples) affiné à l'aide de monsterapi.ai Le script Finetuned-Mistral7b-monsterapi.py montre comment nous appelons le modèle affiné et traitons la sortie dans un format standardisé à l'aide de méthodes de traitement RegEx et String.
Nous avons utilisé Reflex.dev, qui est comme React mais entièrement dans Python, pour créer une interface de chat simple pour interagir avec notre agent, car la plupart des gens n'ont pas de Vision Pro. Nous exécutons GPT-3.5-turbo qui est invité à fournir des informations nutritionnelles à l'utilisateur s'ils posent une question. However, if the user begins their chat message with "get me " and then an imaginary food, it triggers our AI agent pipeline which then calls our fine-tuned Mistral-7b to generate a recipe, GPT-4-turbo to process and extract ingredients from the recipe, and then Google Search via SERP API and a sophisticiated multiobjective ranking algorithm to identify the cheapest and best ingredients from the minimal number of stores, et enfin remplit les appels API de commande Instacart . Nous l'avons hébergé sur Reflex.dev, ce qui a été facile. Nous venons de faire un déploiement Reflex et de mettre notre variable Env à partir du terminal! Merci à Reflex.
Nous avons utilisé la version Early Access de la base de données Vector Iris , en l'exécutant sur un Mac avec Docker. Nous avons intégré 10 000 recettes uniques à partir de plats de cuisines en utilisant l'intégration Text-ADA-002 d'OpenAI. Nous avons stocké les incorporations et les recettes dans une base de données de vecteur d'iris. Ensuite, nous avons laissé l'utilisateur saisir une "ambiance", comme "journée d'hiver pluvieuse froide". Nous utilisons Mistral-7b pour générer trois invites de document hypothétique (HYDE) dans un format structuré. Nous interrogeons ensuite l'iris dB en utilisant les trois invites générées par Mistral. La clé ici est que la recherche sémantique ordinaire ne vous permet pas de rechercher efficacement par ambiance. Si vous effectuez une recherche sémantique sur la "journée d'hiver pluvieuse froide", il est plus susceptible de vous donner des résultats liés au froid ou à la pluie, plutôt qu'aux aliments. Notre incitation encourage Mistral à comprendre l'ambiance de votre contribution et à la convertir en de meilleures invites hyde. Exemple réel: Entrée des utilisateurs: quelque chose pour une froide journée d'hiver Généré des requêtes de recherche: {'requêtes': ['réchauffer les recettes des plats d'hiver', 'Reconfort Food Recipes for Cold Days' ', «des ragoûts et des soupes et des soupes froides»]}