Planning Agent
Learn how to create AI agents for trip planning and itinerary generation.
Build detailed travel itineraries — flights, hotels, and day-by-day plans — with a single Agent that searches the web.
from praisonaiagents import Agent
from praisonaiagents.tools import duckduckgo
agent = Agent(
name="TravelPlanner",
instructions="You are a travel planning agent. Create detailed itineraries.",
tools=[duckduckgo],
)
agent.start("Plan a 3-day trip to Tokyo")Travel planning agent with web search for finding flights, hotels, and creating itineraries.
Quick Start
- Simple Usage
Attach a search tool and ask for a plan.
python from praisonaiagents import Agent from praisonaiagents.tools import duckduckgo agent = Agent( name="TravelPlanner", instructions="You are a travel planning agent. Create detailed itineraries.", tools=[duckduckgo], ) agent.start("Plan a 3-day trip to Tokyo") - With Configuration
Enable memory so the agent adjusts an existing itinerary.
python from praisonaiagents import Agent from praisonaiagents.tools import duckduckgo agent = Agent( name="TravelPlanner", instructions="Create and refine travel itineraries with a budget.", tools=[duckduckgo], memory=True, ) agent.start("Plan a 3-day Tokyo trip, then swap day 2 for a budget option.")
How It Works
Simple
Agents: 1 — Single agent with search tool handles research and planning.
Workflow
- Receive travel request
- Search for flights and hotels
- Generate detailed itinerary
Setup
pip install praisonaiagents praisonai duckduckgo-search
export OPENAI_API_KEY="your-key"Run — Python
from praisonaiagents import Agent
from praisonaiagents.tools import duckduckgo
agent = Agent(
name="TravelPlanner",
instructions="You are a travel planning agent. Create detailed itineraries.",
tools=[duckduckgo]
)
result = agent.start("Plan a 3-day trip to Tokyo")
print(result)Run — CLI
praisonai "Plan a weekend trip to Paris" --web-searchRun — agents.yaml
framework: praisonai
topic: Travel Planning
roles:
travel_planner:
role: Travel Planning Specialist
goal: Create comprehensive travel plans
backstory: You are an expert travel planner
tools:
- duckduckgo
tasks:
plan_trip:
description: Plan a 3-day trip to Tokyo
expected_output: A detailed itinerarypraisonai agents.yamlServe API
from praisonaiagents import Agent
from praisonaiagents.tools import duckduckgo
agent = Agent(
name="TravelPlanner",
instructions="You are a travel planning agent.",
tools=[duckduckgo]
)
agent.launch(port=8080)curl -X POST http://localhost:8080/chat \
-H "Content-Type: application/json" \
-d '{"message": "Plan a weekend getaway to Barcelona"}'Advanced Workflow (All Features)
Agents: 1 — Single agent with memory, persistence, structured output, and session resumability.
Workflow
- Initialize session for trip tracking
- Configure SQLite persistence for travel history
- Search and plan with structured output
- Store itinerary in memory for modifications
- Resume session for trip updates
Setup
pip install praisonaiagents praisonai duckduckgo-search pydantic
export OPENAI_API_KEY="your-key"Run — Python
from praisonaiagents import Agent, Task, AgentTeam, Session
from praisonaiagents.tools import duckduckgo
from pydantic import BaseModel
# Structured output schema
class Itinerary(BaseModel):
destination: str
duration: str
daily_plans: list[str]
estimated_cost: str
recommendations: list[str]
# Create session for trip tracking
session = Session(session_id="trip-001", user_id="user-1")
# Agent with memory and tools
agent = Agent(
name="TravelPlanner",
instructions="Create structured travel itineraries.",
tools=[duckduckgo],
memory=True
)
# Task with structured output
task = Task(
description="Plan a 3-day trip to Tokyo with budget",
expected_output="Structured itinerary",
agent=agent,
output_pydantic=Itinerary
)
# Run with SQLite persistence
agents = AgentTeam(
agents=[agent],
tasks=[task],
memory=True
)
result = agents.start()
print(result)
# Resume later
session2 = Session(session_id="trip-001", user_id="user-1")
history = session2.search_memory("Tokyo")Run — CLI
praisonai "Plan a trip to Tokyo" --web-search --memory --verboseRun — agents.yaml
framework: praisonai
topic: Travel Planning
memory: true
memory_config:
provider: sqlite
db_path: travel.db
roles:
travel_planner:
role: Travel Planning Specialist
goal: Create structured travel plans
backstory: You are an expert travel planner
tools:
- duckduckgo
memory: true
tasks:
plan_trip:
description: Plan a 3-day trip to Tokyo with budget
expected_output: Structured itinerary
output_json:
destination: string
duration: string
daily_plans: array
estimated_cost: string
recommendations: arraypraisonai agents.yaml --verboseServe API
from praisonaiagents import Agent
from praisonaiagents.tools import duckduckgo
agent = Agent(
name="TravelPlanner",
instructions="Create structured travel itineraries.",
tools=[duckduckgo],
memory=True
)
agent.launch(port=8080)curl -X POST http://localhost:8080/chat \
-H "Content-Type: application/json" \
-d '{"message": "Plan a trip to Paris", "session_id": "trip-001"}'Monitor / Verify
praisonai "test planning" --web-search --verboseCleanup
rm -f travel.dbFeatures Demonstrated
| Feature | Implementation |
|---|---|
| Workflow | Multi-step travel planning |
| DB Persistence | SQLite via memory_config |
| Observability | --verbose flag |
| Tools | DuckDuckGo search |
| Resumability | Session with session_id |
| Structured Output | Pydantic Itinerary model |
Best Practices
State constraints up front
Include dates, budget, and party size in the prompt. The agent searches more effectively when it knows the boundaries instead of guessing.
Use structured output for itineraries
Define a Pydantic schema with destination, daily_plans, and estimated_cost so the plan renders cleanly in a UI or calendar.
Enable memory for trip revisions
Set memory=True so the agent tweaks an existing itinerary — swapping a hotel or a day — without rebuilding it from scratch.
Combine with Research for deep destination info
Hand off to the Research Agent when a trip needs visa rules or in-depth local guides beyond quick search snippets.