SyedHasanCronosPMC commited on
Commit
cc7fc3b
·
verified ·
1 Parent(s): 26c39c0

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -0
app.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import gradio as gr
3
+ from langchain.llms import OpenAI
4
+ from langchain.prompts import PromptTemplate
5
+ from langchain.chains import LLMChain, SequentialChain
6
+
7
+ # Set your OpenAI API key (this will be set via HF Secrets, not hardcoded)
8
+ openai_api_key = os.getenv("OPENAI_API_KEY")
9
+ if not openai_api_key:
10
+ raise ValueError("Please set the OPENAI_API_KEY in your Hugging Face Space secrets.")
11
+
12
+ os.environ["OPENAI_API_KEY"] = openai_api_key
13
+
14
+ # Initialize LLM
15
+ llm = OpenAI(temperature=0.9)
16
+
17
+ # Prompt for restaurant name
18
+ prompt_template_name = PromptTemplate(
19
+ input_variables=["cuisine"],
20
+ template="""
21
+ I want to start a premium restaurant serving {cuisine} cuisine.
22
+ Suggest a unique and classy name that reflects the richness and tradition of this food type.
23
+ Avoid clichés. The name should be memorable and ideal for a fine-dining experience.
24
+ """
25
+ )
26
+ name_chain = LLMChain(llm=llm, prompt=prompt_template_name, output_key="restaraunt_name")
27
+
28
+ # Prompt for menu items
29
+ prompt_template_items = PromptTemplate(
30
+ input_variables=["restaraunt_name"],
31
+ template="""
32
+ Create a detailed and elegant sample menu for a fine-dining restaurant named "{restaraunt_name}".
33
+
34
+ Structure the response into the following categories:
35
+ 1. 🥗 Starters (3-4 items with names, short descriptions, and suggested prices)
36
+ 2. 🍝 Main Course (3-4 items with names, short descriptions, and suggested prices)
37
+ 3. 🍹 Drinks (3-4 items with names, short descriptions, and suggested prices)
38
+
39
+ Ensure that:
40
+ - Each item has a creative name and is culturally relevant.
41
+ - Prices are in USD and reflect a premium dining experience.
42
+ - The tone is refined, as if for a menu booklet or launch event.
43
+ """
44
+ )
45
+ food_items_chain = LLMChain(llm=llm, prompt=prompt_template_items, output_key="menu_items")
46
+
47
+ # Combine chains
48
+ chain = SequentialChain(
49
+ chains=[name_chain, food_items_chain],
50
+ input_variables=["cuisine"],
51
+ output_variables=["restaraunt_name", "menu_items"],
52
+ verbose=True
53
+ )
54
+
55
+ # Gradio interface logic
56
+ def generate_restaurant(cuisine):
57
+ result = chain({"cuisine": cuisine})
58
+ return result["restaraunt_name"], result["menu_items"]
59
+
60
+ # Gradio UI
61
+ with gr.Blocks() as demo:
62
+ gr.Markdown("## 🍽️ AI Restaurant Name & Gourmet Menu Generator")
63
+ cuisine_input = gr.Textbox(label="Enter Cuisine Type", placeholder="e.g., Korean, French, Lebanese")
64
+ name_output = gr.Textbox(label="✨ Suggested Restaurant Name")
65
+ menu_output = gr.Textbox(label="📜 Gourmet Menu", lines=15)
66
+
67
+ generate_button = gr.Button("Generate Menu")
68
+ generate_button.click(generate_restaurant, inputs=[cuisine_input], outputs=[name_output, menu_output])
69
+
70
+ # Launch
71
+ demo.launch()