from pydantic import BaseModel, ConfigDict , Field from typing import Optional class State(BaseModel): interactions: Optional[list] = [] model_config = ConfigDict(arbitrary_types_allowed=True) # Pydantic model for extracted business info class DetailsFormatter(BaseModel): ''' Format the details from the business interaction of User and Assistant ''' business_type_or_name: str = Field(description="The type or name of the business.") platform: str = Field(description="The platform used for the promotion of business") target_audience: str = Field(description="The target audience of the business") business_goals: str = Field(description="The business goals of the business") offerings: str = Field(description="The offerings of the business") devices_used_to_create_videos: str = Field(description="The devices used to create videos.") Challenges_faced: str = Field(description="The challenges faced by the business") additional_informations: str = Field(description="Additional queries or details regarding the video or idea creation.") class CompletionFormatter(BaseModel): completion: str = Field(description="Just the one word result: **completed** or **not completed**") class ConversationFormatter(BaseModel): response: str = Field(description="The entire response of the assistant.") complete: str = Field(description= "Return 'True' if the details extraction is completed. Return 'False' if not completed.")