Spaces:
Running
Running
Update travel.py
Browse files
travel.py
CHANGED
|
@@ -92,19 +92,7 @@ itinerary_agent = Agent(
|
|
| 92 |
llm=llm,
|
| 93 |
)
|
| 94 |
|
| 95 |
-
|
| 96 |
-
final_report_agent = Agent(
|
| 97 |
-
role="Final Report Generation Agent",
|
| 98 |
-
goal="Generate a comprehensive, visually appealing travel itinerary document that is easy to follow and includes all necessary details."
|
| 99 |
-
"1. Compile outputs from all agents into a cohesive travel plan. "
|
| 100 |
-
"2. Create clearly defined, organized daily schedules with times, locations, and activity durations. "
|
| 101 |
-
"3. Include practical information such as estimated costs, contact details, and reservation information. "
|
| 102 |
-
"4. Implement a clean, travel-themed design with proper spacing, alignment, and highlights. "
|
| 103 |
-
"5. Output the final itinerary as valid HTML with inline CSS for styling.",
|
| 104 |
-
backstory="A creative travel document specialist who transforms complex travel plans into beautiful, functional itineraries that enhance the travel experience.",
|
| 105 |
-
personality="Creative, detail-oriented, and user-focused.",
|
| 106 |
-
llm=llm,
|
| 107 |
-
)
|
| 108 |
|
| 109 |
# ------------------------------------------------------------------------------
|
| 110 |
# Define Tasks
|
|
@@ -218,27 +206,27 @@ itinerary_task = Task(
|
|
| 218 |
description="""Create a day-by-day itinerary for a {duration} trip to {destination} from {origin}, incorporating all recommendations.
|
| 219 |
|
| 220 |
Detailed requirements:
|
| 221 |
-
|
| 222 |
- Structure each day with:
|
| 223 |
* Morning, afternoon, and evening activity blocks with precise timing
|
| 224 |
* Estimated travel times between locations using various transportation methods
|
| 225 |
* Buffer time for rest, spontaneous exploration, and unexpected delays
|
| 226 |
* Meal recommendations with reservation details and backup options
|
| 227 |
* Sunset/sunrise opportunities for optimal photography or experiences
|
| 228 |
-
|
| 229 |
* Group attractions by geographic proximity to minimize transit time
|
| 230 |
* Schedule indoor activities strategically for predicted weather patterns
|
| 231 |
* Balance high-energy activities with relaxation periods
|
| 232 |
* Alternate between cultural immersion and entertainment experiences
|
| 233 |
* Account for opening days/hours of attractions and potential closures
|
| 234 |
-
|
| 235 |
* Museum/attraction fatigue limitations
|
| 236 |
* Jet lag recovery for first 1-2 days
|
| 237 |
* Time zone adjustment strategies
|
| 238 |
* Local rush hours and traffic patterns to avoid
|
| 239 |
* Cultural norms for meal times and business hours
|
| 240 |
-
|
| 241 |
-
|
| 242 |
* Local festivals or events coinciding with the travel dates
|
| 243 |
* Free time blocks for personal exploration or shopping
|
| 244 |
* Contingency recommendations for weather disruptions
|
|
@@ -264,46 +252,7 @@ itinerary_task = Task(
|
|
| 264 |
Format should include both a condensed overview calendar and detailed daily breakdowns with time, activity, location, notes, and contingency plans."""
|
| 265 |
)
|
| 266 |
|
| 267 |
-
|
| 268 |
-
description="""Generate a comprehensive, visually appealing travel itinerary document for a {duration} trip to {destination} from {origin}.
|
| 269 |
-
|
| 270 |
-
Technical requirements:
|
| 271 |
-
- Implement using Tailwind CSS for responsive styling and utility classes
|
| 272 |
-
- Enhance with Alpine.js for lightweight interactive components
|
| 273 |
-
- Include Mapbox GL JS integration for interactive maps with points of interest
|
| 274 |
-
- Use Chart.js for visualizing trip budget breakdowns
|
| 275 |
-
- Implement with DaisyUI or Flowbite components for consistent UI elements
|
| 276 |
-
- Ensure cross-browser compatibility and mobile-first responsive design
|
| 277 |
-
- Meet WCAG 2.1 AA accessibility standards
|
| 278 |
-
|
| 279 |
-
UI/UX features:
|
| 280 |
-
- Create collapsible day-by-day itinerary sections
|
| 281 |
-
- Include interactive map with customized markers for attractions, hotels, and restaurants
|
| 282 |
-
- Implement dark/light mode toggle with user preference storage
|
| 283 |
-
- Add weather forecast integration via OpenWeatherMap API
|
| 284 |
-
- Design printable version with QR codes for digital access
|
| 285 |
-
- Include local emergency information in an accessible sidebar
|
| 286 |
-
- Create animated transitions between sections for improved user experience
|
| 287 |
-
- Implement offline capabilities with service workers""",
|
| 288 |
-
|
| 289 |
-
agent=final_report_agent,
|
| 290 |
-
|
| 291 |
-
expected_output="""Complete HTML travel itinerary featuring:
|
| 292 |
-
1. Responsive layout using Tailwind CSS that adapts to all device sizes
|
| 293 |
-
2. Interactive components powered by Alpine.js for seamless user interactions
|
| 294 |
-
3. Dynamic map visualization with Mapbox GL JS showing the complete travel route
|
| 295 |
-
4. Collapsible sections for daily activities with smooth animations
|
| 296 |
-
5. Dark/light mode toggle that persists user preferences
|
| 297 |
-
6. Weather forecast widgets integrated with OpenWeatherMap
|
| 298 |
-
7. Printable version with optimized styling for physical documents
|
| 299 |
-
8. Trip budget visualization with interactive charts
|
| 300 |
-
9. Offline-capable implementation with service worker caching
|
| 301 |
-
10. Accessibility-compliant design including keyboard navigation and screen reader support
|
| 302 |
-
11. Performance optimization with lazy-loading images and content
|
| 303 |
-
12. Custom PDF export functionality
|
| 304 |
-
|
| 305 |
-
All code should be clean, well-commented, and follow modern web development best practices."""
|
| 306 |
-
)
|
| 307 |
|
| 308 |
# ------------------------------------------------------------------------------
|
| 309 |
# Helper Function to Run a Task with Full Agent & Task Information
|
|
@@ -469,25 +418,10 @@ Dining Recommendations:
|
|
| 469 |
)
|
| 470 |
print("✓ Itinerary creation completed")
|
| 471 |
|
| 472 |
-
#
|
| 473 |
-
print("
|
| 474 |
-
final_context = f"""{combined_info}
|
| 475 |
-
|
| 476 |
-
Day-by-Day Itinerary:
|
| 477 |
-
{itinerary}
|
| 478 |
-
"""
|
| 479 |
-
|
| 480 |
-
final_itinerary = run_task(
|
| 481 |
-
final_report_task,
|
| 482 |
-
final_context.format(
|
| 483 |
-
duration=user_input['duration'],
|
| 484 |
-
origin=user_input['origin'],
|
| 485 |
-
destination=user_input['destination']
|
| 486 |
-
)
|
| 487 |
-
)
|
| 488 |
-
print("✓ Final itinerary document generated")
|
| 489 |
|
| 490 |
-
return
|
| 491 |
|
| 492 |
# ------------------------------------------------------------------------------
|
| 493 |
# Save Itinerary to File
|
|
@@ -495,7 +429,7 @@ Day-by-Day Itinerary:
|
|
| 495 |
def save_itinerary_to_file(itinerary, user_input, output_dir=None):
|
| 496 |
# Create a filename based on the destination and date
|
| 497 |
date_str = datetime.now().strftime("%Y-%m-%d")
|
| 498 |
-
filename = f"{user_input['destination'].replace(' ', '_')}_{date_str}_itinerary.
|
| 499 |
|
| 500 |
# If output directory is specified, ensure it exists and use it
|
| 501 |
if output_dir:
|
|
|
|
| 92 |
llm=llm,
|
| 93 |
)
|
| 94 |
|
| 95 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 96 |
|
| 97 |
# ------------------------------------------------------------------------------
|
| 98 |
# Define Tasks
|
|
|
|
| 206 |
description="""Create a day-by-day itinerary for a {duration} trip to {destination} from {origin}, incorporating all recommendations.
|
| 207 |
|
| 208 |
Detailed requirements:
|
| 209 |
+
- Begin with arrival logistics including airport transfer options, check-in times, and first-day orientation activities
|
| 210 |
- Structure each day with:
|
| 211 |
* Morning, afternoon, and evening activity blocks with precise timing
|
| 212 |
* Estimated travel times between locations using various transportation methods
|
| 213 |
* Buffer time for rest, spontaneous exploration, and unexpected delays
|
| 214 |
* Meal recommendations with reservation details and backup options
|
| 215 |
* Sunset/sunrise opportunities for optimal photography or experiences
|
| 216 |
+
- Apply intelligent sequencing to:
|
| 217 |
* Group attractions by geographic proximity to minimize transit time
|
| 218 |
* Schedule indoor activities strategically for predicted weather patterns
|
| 219 |
* Balance high-energy activities with relaxation periods
|
| 220 |
* Alternate between cultural immersion and entertainment experiences
|
| 221 |
* Account for opening days/hours of attractions and potential closures
|
| 222 |
+
- Include practical timing considerations:
|
| 223 |
* Museum/attraction fatigue limitations
|
| 224 |
* Jet lag recovery for first 1-2 days
|
| 225 |
* Time zone adjustment strategies
|
| 226 |
* Local rush hours and traffic patterns to avoid
|
| 227 |
* Cultural norms for meal times and business hours
|
| 228 |
+
- End with departure logistics including check-out procedures, airport transfer timing, and luggage considerations
|
| 229 |
+
- Add specialized planning elements:
|
| 230 |
* Local festivals or events coinciding with the travel dates
|
| 231 |
* Free time blocks for personal exploration or shopping
|
| 232 |
* Contingency recommendations for weather disruptions
|
|
|
|
| 252 |
Format should include both a condensed overview calendar and detailed daily breakdowns with time, activity, location, notes, and contingency plans."""
|
| 253 |
)
|
| 254 |
|
| 255 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 256 |
|
| 257 |
# ------------------------------------------------------------------------------
|
| 258 |
# Helper Function to Run a Task with Full Agent & Task Information
|
|
|
|
| 418 |
)
|
| 419 |
print("✓ Itinerary creation completed")
|
| 420 |
|
| 421 |
+
# Return the completed itinerary
|
| 422 |
+
print("✓ Itinerary generation completed")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 423 |
|
| 424 |
+
return itinerary
|
| 425 |
|
| 426 |
# ------------------------------------------------------------------------------
|
| 427 |
# Save Itinerary to File
|
|
|
|
| 429 |
def save_itinerary_to_file(itinerary, user_input, output_dir=None):
|
| 430 |
# Create a filename based on the destination and date
|
| 431 |
date_str = datetime.now().strftime("%Y-%m-%d")
|
| 432 |
+
filename = f"{user_input['destination'].replace(' ', '_')}_{date_str}_itinerary.txt"
|
| 433 |
|
| 434 |
# If output directory is specified, ensure it exists and use it
|
| 435 |
if output_dir:
|