|
import streamlit as st |
|
from langchain_google_genai import ChatGoogleGenerativeAI |
|
|
|
|
|
api_key = st.secrets["GOOGLE_API_KEY"] |
|
|
|
st.title("The Chef Story Chatbot") |
|
|
|
def get_bot_response(user_input): |
|
|
|
llm = ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=api_key) |
|
|
|
|
|
if "menu" in user_input.lower(): |
|
return format_menu() |
|
elif "special" in user_input.lower(): |
|
return "Today's special is Grilled Salmon with Lemon Butter Sauce. Don't miss it!" |
|
elif "offers" in user_input.lower(): |
|
return "We have a 20% discount on all orders above $50. Use code CHEF20 at checkout." |
|
elif "delivery" in user_input.lower(): |
|
return "We offer home delivery for a minimal charge of $5. Free delivery for orders above $30." |
|
|
|
|
|
prompt = f"User asked: {user_input}" |
|
response = llm.invoke(prompt) |
|
return response.content |
|
|
|
def format_menu(): |
|
menu = { |
|
"Italian": { |
|
"Margherita Pizza": "$12", |
|
"Pasta Carbonara": "$15" |
|
}, |
|
"Chinese": { |
|
"Sweet and Sour Chicken": "$13", |
|
"Kung Pao Shrimp": "$14" |
|
}, |
|
"Indian": { |
|
"Chicken Curry": "$16", |
|
"Paneer Tikka": "$14" |
|
}, |
|
"Thai": { |
|
"Pad Thai": "$14", |
|
"Green Curry": "$15" |
|
}, |
|
"Desserts": { |
|
"Cheesecake": "$8", |
|
"Chocolate Lava Cake": "$9" |
|
}, |
|
"Kids Special": { |
|
"Chicken Nuggets": "$7", |
|
"Mini Pizzas": "$8" |
|
}, |
|
"Low Calorie Foods": { |
|
"Grilled Chicken Salad": "$12", |
|
"Quinoa Bowl": "$11" |
|
} |
|
} |
|
|
|
menu_text = "Here is our full menu with prices:\n\n" |
|
for category, items in menu.items(): |
|
menu_text += f"**{category}**:\n" |
|
for item, price in items.items(): |
|
menu_text += f"- {item}: {price}\n" |
|
menu_text += "\n" |
|
return menu_text |
|
|
|
|
|
with st.form("chat_form"): |
|
user_input = st.text_input("You:") |
|
submitted = st.form_submit_button("Send") |
|
|
|
if submitted: |
|
if user_input: |
|
response = get_bot_response(user_input) |
|
st.write(f"Bot: {response}") |
|
else: |
|
st.error("Please enter a message.") |
|
|