Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import os | |
| from crewai import Agent, Task, Crew, Process, LLM | |
| from crewai_tools import SerperDevTool | |
| gemini_key=os.getenv("GOOGLE_API_KEY") | |
| serper_key=os.getenv("SERPER_API_KEY") | |
| # Initialize a search tool (to fetch real-time travel info) | |
| search_tool = SerperDevTool() | |
| st.title("Trip Planner") | |
| # Define the AI Model | |
| llm = LLM(model="gemini/gemini-1.5-flash", | |
| verbose=True, | |
| temperature=0.5, | |
| api_key=gemini_key)#os.environ["GOOGLE_API_KEY"] | |
| # π§ Travel Researcher Agent (Finds historical sites + weather) | |
| researcher = Agent( | |
| role="Travel Researcher", | |
| goal="Find {places_type} of places , public transport hotels, and real-time weather for {destination} from {starting} based on {type}.", | |
| verbose=True, | |
| memory=True, | |
| backstory="You are an expert travel researcher, providing up-to-date information about history-focused trips.", | |
| llm=llm, | |
| tools=[search_tool], # Uses live search tool | |
| allow_delegation=True | |
| ) | |
| # π° Budget Planner Agent (Ensures trip stays under $1500) | |
| budget_planner = Agent( | |
| role="Budget Planner", | |
| goal="Find budget flights, hotels, and activities within {budget} for {destination} from {starting},with in the dates from date {staring_date} to {ending_date}.", | |
| verbose=True, | |
| memory=True, | |
| backstory="You are a skilled budget analyst ensuring trips fit within financial constraints.", | |
| llm=llm, | |
| tools=[search_tool], | |
| allow_delegation=False | |
| ) | |
| # πΊοΈ Itinerary Planner Agent (Creates a balanced 3-day plan) | |
| itinerary_planner = Agent( | |
| role="Itinerary Planner", | |
| goal="Create a itinerary for {destination} from {starting}, ensuring all historical sites are covered under {budget} based on {type}.", | |
| verbose=True, | |
| memory=True, | |
| backstory="You are an expert in trip planning, ensuring travelers get the best experience within their budget.", | |
| llm=llm, | |
| tools=[search_tool], | |
| allow_delegation=False | |
| ) | |
| # π Travel Research Task | |
| research_task = Task( | |
| description="Find the best historical sites, weather forecast, and public transport hotels for {destination}.", | |
| expected_output="A list of top historical sites, a real-time weather update, and 3 hotel options near public transport.", | |
| tools=[search_tool], | |
| agent=researcher | |
| ) | |
| # π² Budget Estimation Task | |
| budget_task = Task( | |
| description="Find budget flights, hotel options, and daily food/transport costs for {destination} based on from date {staring_date} to {ending_date}. Ensure total cost stays under {budget}.", | |
| expected_output="A full cost breakdown (flights, hotel, food, attractions) ensuring a {budget} budget is maintained.", | |
| tools=[search_tool], | |
| agent=budget_planner | |
| ) | |
| # π Itinerary Planning Task | |
| itinerary_task = Task( | |
| description="Plan a from date {staring_date} to {ending_date} itinerary for {destination}, focusing on historical sites, budget constraints, and real-time weather conditions.", | |
| expected_output="A detailed 3-day plan, considering weather and budget constraints, with transport recommendations.", | |
| tools=[search_tool], | |
| agent=itinerary_planner | |
| ) | |
| # π Crew Setup: All agents working together! | |
| crew = Crew( | |
| agents=[researcher, budget_planner, itinerary_planner], | |
| tasks=[research_task, budget_task, itinerary_task], | |
| process=Process.sequential # Runs tasks in sequence | |
| ) | |
| col1,col2=st.columns(2) | |
| with col1: | |
| start=st.text_input("Enter the starting Place") | |
| with col2: | |
| destination=st.text_input("Enter the destinataion Place") | |
| col1,col2 =st.columns(2) | |
| with col1: | |
| staring_date = st.date_input("pick start date of trip") | |
| with col2: | |
| ending_date =st.date_input("pick ending date of trip") | |
| col1,col2=st.columns(2) | |
| with col1: | |
| type_option=[ "Business / Luxury "," Economics/Budget Friendly","cheaper "] | |
| type=st.selectbox("select the type of Experience ",options=type_option) | |
| with col2: | |
| budget=st.number_input("Enter the Budget in Rupees",step=100) | |
| places= st.text_input("Enter the places Your are intersted to vist (Please separe the places with colums ',')") | |
| places_type=places.split(",") | |
| if st.button("submit "): | |
| result = crew.kickoff(inputs={"starting":start,'destination':destination ,"type":type,"places_type":places_type, | |
| 'budget': budget,"staring_date":str(staring_date) ,"ending_date":str(ending_date)}) | |
| st.write(result.raw) | |