Spaces:
Sleeping
Sleeping
import streamlit as st | |
import google.generativeai as genai | |
from langchain_core.messages import SystemMessage, HumanMessage | |
from langchain_google_genai import ChatGoogleGenerativeAI | |
# Set your Google GenAI API key | |
GOOGLE_GENAI_API_KEY = "AIzaSyC4DJCI1yp8W7Kzb72lFHTclD12jGLb9ao" | |
# Initialize Google GenAI | |
genai.configure(api_key=GOOGLE_GENAI_API_KEY) | |
# Initialize LangChain Google GenAI Chat Model | |
chat_model = ChatGoogleGenerativeAI(model="models/gemini-1.5-flash-latest", google_api_key=GOOGLE_GENAI_API_KEY) | |
def get_travel_recommendations(source, destination, mode, budget, time, travelers): | |
"""Fetch AI-generated travel recommendations between source and destination.""" | |
messages = [ | |
SystemMessage(content="You are an AI travel assistant providing travel recommendations."), | |
HumanMessage(content=f"Find me travel options from {source} to {destination} by {mode}. " | |
f"My budget is {budget} USD, I prefer traveling in the {time}, " | |
f"and we are {travelers} people.") | |
] | |
try: | |
response = chat_model.invoke(messages) | |
return response.content # Extract the AI-generated response | |
except Exception as e: | |
return f"Error fetching travel recommendations: {str(e)}" | |
# Streamlit UI | |
st.set_page_config(page_title="AI Travel Planner", layout="centered") | |
st.title("βοΈ AI-Powered Travel Planner") | |
st.markdown("Enter your travel details below to get recommendations!") | |
# User Inputs | |
source = st.text_input("πΊοΈ Source Location", placeholder="Enter starting location") | |
destination = st.text_input("π Destination Location", placeholder="Enter destination") | |
# Travel mode selection | |
mode = st.selectbox("πβοΈπ Select Travel Mode", ["Any", "Flight", "Train", "Bus", "Cab"]) | |
# Budget input | |
budget = st.slider("π° Select Your Budget (in USD)", 50, 5000, 500) | |
# Preferred travel time | |
time = st.selectbox("π Preferred Travel Time", ["Morning", "Afternoon", "Night"]) | |
# Number of travelers | |
travelers = st.number_input("π₯ Number of Travelers", min_value=1, max_value=10, value=1, step=1) | |
if st.button("Get Travel Options π"): | |
if source and destination: | |
with st.spinner("π Fetching travel recommendations..."): | |
travel_info = get_travel_recommendations(source, destination, mode, budget, time, travelers) | |
st.subheader("π Recommended Travel Options") | |
st.write(travel_info) | |
else: | |
st.error("β Please enter both source and destination.") | |