SyedHasanCronosPMC's picture
Create app.py
cc7fc3b verified
import os
import gradio as gr
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain, SequentialChain
# Set your OpenAI API key (this will be set via HF Secrets, not hardcoded)
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
# Initialize LLM
llm = OpenAI(temperature=0.9)
# Prompt for restaurant name
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 for menu items
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")
# Combine chains
chain = SequentialChain(
chains=[name_chain, food_items_chain],
input_variables=["cuisine"],
output_variables=["restaraunt_name", "menu_items"],
verbose=True
)
# Gradio interface logic
def generate_restaurant(cuisine):
result = chain({"cuisine": cuisine})
return result["restaraunt_name"], result["menu_items"]
# Gradio UI
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])
# Launch
demo.launch()