travelling-agent / models.py
MYousafRana's picture
Update models.py
b2032cd verified
# models.py
from pydantic import BaseModel, Field
from typing import List, Dict, Optional
class TravelDataInput(BaseModel):
destination: Optional[str] = Field(None, description="e.g., Neelum Valley")
location_type: str = Field(..., description="City, Beach, Mountain, etc.")
province: str = Field(..., description="Punjab, Sindh, etc.")
starting_location: str = Field(..., description="e.g., Islamabad")
gender: str = Field(..., description="Male, Female, Mixed")
num_people: int = Field(..., gt=0, description="Number of people")
has_children: bool = Field(False, description="Whether children are present")
activity_type: str = Field(..., description="Adventure, Sightseeing, Both")
travel_group: str = Field(..., description="Solo, With partner, etc.")
preferences: List[str] = Field([], description="Cultural Experience, Food, etc.")
budget: int = Field(0, ge=0, description="Budget in PKR")
num_days: int = Field(..., gt=0, description="Number of days")
additional_preferences: Optional[str] = Field(None, description="Any other requests")
class PlanResponse(BaseModel):
plan_text: str
destination_used: str
images: List[Dict]
image_queries_used: List[str]
source: str
class ExtractionInput(BaseModel):
plan_text: str
class PackageData(BaseModel):
packageName: str
packageDescription: str
packageDestination: str
packageDays: int
packageNights: int
packageAccommodation: str
packageTransportation: str
packageMeals: str
packageActivities: str
packagePrice: Optional[float]
packageDiscountPrice: Optional[float]
packageOffer: bool
packageRating: int
packageTotalRatings: int
packageImages: Optional[List[Dict]] = None
class ChatMessage(BaseModel):
role: str # user or assistant
content: str
class ChatInput(BaseModel):
plan_text: str
destination: str
num_days: int
chat_history: List[ChatMessage]
user_input: str
class ChatResponse(BaseModel):
assistant_response: str