File size: 2,808 Bytes
fbdcaaf
9ff2b7e
fd07ca2
 
 
 
 
 
 
fbdcaaf
 
 
 
 
fd07ca2
5182c3f
fbdcaaf
fd07ca2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fbdcaaf
 
 
 
 
fd07ca2
 
fbdcaaf
 
 
fd07ca2
 
fbdcaaf
 
 
fd07ca2
 
 
 
 
 
 
 
 
 
 
 
 
 
fbdcaaf
fd07ca2
fbdcaaf
 
fd07ca2
 
 
 
 
fbdcaaf
8bab72c
fbdcaaf
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# imports
import streamlit as st
import numpy as np
import pandas as pd
import re
import json
import openai
openai.api_key = st.secrets["open_ai_key"]

# state management
if 'gpt_response' not in st.session_state:
    st.session_state.gpt_response = None

# app
user_direction = st.text_area(
    "Let's get cooking! What do you feel like making?",
    placeholder="quick snack, asian style bowl with either noodles or rice, something italian",
    )

serving_size = st.number_input(
    "How many people are you cooking for?",
    min_value=1,
    max_value=100,
    value=2,
    step=1
)

difficulty = st.radio(
    "Choose a difficulty level for your recipe.",
    ["Beginner", "Home Chef", "Professional"],
    captions = [
        "Easy recipes with straightforward instructions. Ideal for first-timers or those seeking quick and simple cooking.",
        "Recipes with some intricate steps that invite a little challenge. Perfect for regular cooks wanting to expand their repertoire with new ingredients and techniques.", 
        "Complex recipes that demand a high level of skill and precision. Suited for seasoned cooks aspiring to professional-level sophistication and creativity."
    ])

exclusions = st.text_area(
    "Any ingredients you want to exclude?",
    placeholder="gluten, dairy, nuts, cilantro",
    )

user_inputs = {
    "user_direction" : user_direction,
    "exclusions": exclusions,
    "serving_size": serving_size,
    "difficulty": difficulty
}

    
def generate_recipe(user_inputs):
    context = """Provide me a recipe based on the user input. The recipe output should contain the following components:
    - recipe name
    - serving size
    - time to make
    - ingredients list
    - instructions
    Output this in a valid JSON object with the following properties:
    recipe_name (string): the name of the recipe
    recipe_serving_size (string): the serving size of the recipe (example: "Serving Size: 4 people")
    recipe_time (string): the amount of time required to make the recipe (example: "Time to Make: 60 minutes (Preparation: 20 minutes, Baking: 40 minutes)")
    recipe_ingredients (string): python list of ingredients required to make the recipe
    recipe_instructions (string): python list of instructions to make the recipe
    """
    messages = [
        {"role": "system", "content": context},
        {"role": "user", "content": str(user_inputs)}
        ]
    
    st.session_state.gpt_response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages,
        temperature=0.2
    )


st.button(label='Submit', on_click=generate_recipe, kwargs=dict(user_inputs=user_inputs))

if st.session_state.gpt_response is not None:
    st.json(json.loads(st.session_state.gpt_response['choices'][0]['message']['content']))