|  | import os | 
					
						
						|  | import gradio as gr | 
					
						
						|  | from langchain.llms import OpenAI | 
					
						
						|  | from langchain.prompts import PromptTemplate | 
					
						
						|  | from langchain.chains import LLMChain, SequentialChain | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | openai_api_key = os.getenv("OPENAI_API_KEY") | 
					
						
						|  | if not openai_api_key: | 
					
						
						|  | raise ValueError("Please set the OPENAI_API_KEY in your Hugging Face Space secrets.") | 
					
						
						|  |  | 
					
						
						|  | os.environ["OPENAI_API_KEY"] = openai_api_key | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | llm = OpenAI(temperature=0.9) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | prompt_template_name = PromptTemplate( | 
					
						
						|  | input_variables=["cuisine"], | 
					
						
						|  | template=""" | 
					
						
						|  | I want to start a premium restaurant serving {cuisine} cuisine. | 
					
						
						|  | Suggest a unique and classy name that reflects the richness and tradition of this food type. | 
					
						
						|  | Avoid clichés. The name should be memorable and ideal for a fine-dining experience. | 
					
						
						|  | """ | 
					
						
						|  | ) | 
					
						
						|  | name_chain = LLMChain(llm=llm, prompt=prompt_template_name, output_key="restaraunt_name") | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | prompt_template_items = PromptTemplate( | 
					
						
						|  | input_variables=["restaraunt_name"], | 
					
						
						|  | template=""" | 
					
						
						|  | Create a detailed and elegant sample menu for a fine-dining restaurant named "{restaraunt_name}". | 
					
						
						|  |  | 
					
						
						|  | Structure the response into the following categories: | 
					
						
						|  | 1. 🥗 Starters (3-4 items with names, short descriptions, and suggested prices) | 
					
						
						|  | 2. 🍝 Main Course (3-4 items with names, short descriptions, and suggested prices) | 
					
						
						|  | 3. 🍹 Drinks (3-4 items with names, short descriptions, and suggested prices) | 
					
						
						|  |  | 
					
						
						|  | Ensure that: | 
					
						
						|  | - Each item has a creative name and is culturally relevant. | 
					
						
						|  | - Prices are in USD and reflect a premium dining experience. | 
					
						
						|  | - The tone is refined, as if for a menu booklet or launch event. | 
					
						
						|  | """ | 
					
						
						|  | ) | 
					
						
						|  | food_items_chain = LLMChain(llm=llm, prompt=prompt_template_items, output_key="menu_items") | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | chain = SequentialChain( | 
					
						
						|  | chains=[name_chain, food_items_chain], | 
					
						
						|  | input_variables=["cuisine"], | 
					
						
						|  | output_variables=["restaraunt_name", "menu_items"], | 
					
						
						|  | verbose=True | 
					
						
						|  | ) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | def generate_restaurant(cuisine): | 
					
						
						|  | result = chain({"cuisine": cuisine}) | 
					
						
						|  | return result["restaraunt_name"], result["menu_items"] | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | with gr.Blocks() as demo: | 
					
						
						|  | gr.Markdown("## 🍽️ AI Restaurant Name & Gourmet Menu Generator") | 
					
						
						|  | cuisine_input = gr.Textbox(label="Enter Cuisine Type", placeholder="e.g., Korean, French, Lebanese") | 
					
						
						|  | name_output = gr.Textbox(label="✨ Suggested Restaurant Name") | 
					
						
						|  | menu_output = gr.Textbox(label="📜 Gourmet Menu", lines=15) | 
					
						
						|  |  | 
					
						
						|  | generate_button = gr.Button("Generate Menu") | 
					
						
						|  | generate_button.click(generate_restaurant, inputs=[cuisine_input], outputs=[name_output, menu_output]) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | demo.launch() | 
					
						
						|  |  |