--- license: mit model-index: - name: chef-gpt-base results: [] language: - bg pipeline_tag: text-generation widget: - text: "[ING]1 картоф[REC]" - text: "[ING]4 бр. яйца[EOL]1 кофичка кисело мляко[EOL]1/4 ч.л. сода[REC]" --- # chef-gpt-base GPT-2 architecture trained to generate recipes based on ingredients. [Visit website](https://chef-gpt.streamlit.app/). ## Model description This is GPT-2 pretrained on a custom dataset of recipies in Bulgarian. You can find the dataset [here](https://www.kaggle.com/datasets/auhide/bulgarian-recipes-dataset). ## Usage ```python import re # Using this library to beautifully print the long recipe string. from pprint import pprint from transformers import AutoModelForCausalLM, AutoTokenizer # Load the model and tokenizer: MODEL_ID = "auhide/chef-gpt-base" tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) chef_gpt = AutoModelForCausalLM.from_pretrained(MODEL_ID) # Prepare the input: ingredients = [ "1 ч.ч. брашно", "4 яйца", "1 кофичка кисело мляко", "1/4 ч.л. сода", ] input_text = f"[ING]{'[EOL]'.join(ingredients)}[REC]" input_ids = tokenizer(input_text, return_tensors="pt").input_ids # Generate text: output = chef_gpt.generate(input_ids, max_length=150) recipe = tokenizer.batch_decode(output)[0] # Get the generated recipe - it is up until the 1st [SEP] token. recipe = re.findall(r"\[REC\](.+?)\[SEP\]", recipe)[0] print("Съставки/Ingredients:") pprint(ingredients) print("\nРецепта/Recipe:") pprint(recipe) ``` ```bash Съставки/Ingredients: ['1 ч.ч. брашно', '4 яйца', '1 кофичка кисело мляко', '1/4 ч.л. сода'] Рецепта/Recipe: ('В дълбока купа се разбиват яйцата. Добавя се киселото мляко, в което ' 'предварително е сложена содата, и се разбива. Добавя се брашното и се омесва ' 'тесто. Ако е много гъсто се добавя още малко брашно, ако е много гъсто се ' 'добавя още малко брашно. Фурната се загрява предварително на 180С градуса. ' 'Когато тестото е готово, се вади от фурната и се разделя на три части.') ``` ## Additional tokens - [ING] - ingredients token; denotes the begining of the tokens representing the ingredients - [EOL] - end-of-line token; equivalent to a newline - [REC] - recipe token; denotes the begining of the recipe