from typing import Literal, Optional, Tuple
from langchain_core. import BaseModel, Field
class TutorialSearch(BaseModel):
"""Search over a database of tutorial videos about a software library."""
content_search: str = Field(
description="Similarity search query applied to video transcripts.",
title_search: str = Field(
"Alternate version of the content search query to apply to video titles. "
"Should be succinct and only include key words that could be in a video "
min_view_count: Optional[int] = Field(
description="Minimum view count filter, inclusive. Only use if explicitly specified.",
max_view_count: Optional[int] = Field(
description="Maximum view count filter, exclusive. Only use if explicitly specified.",
earliest_publish_date: Optional[datetime.date] = Field(
description="Earliest publish date filter, inclusive. Only use if explicitly specified.",
latest_publish_date: Optional[datetime.date] = Field(
description="Latest publish date filter, exclusive. Only use if explicitly specified.",
min_length_sec: Optional[int] = Field(
description="Minimum video length in seconds, inclusive. Only use if explicitly specified.",
max_length_sec: Optional[int] = Field(
description="Maximum video length in seconds, exclusive. Only use if explicitly specified.",
def pretty_print(self) -> None:
for field in self.__fields__:
if getattr(self, field) is not None and getattr(self, field) != getattr(
self.__], "default", None
print(f"{field}: {getattr(self, field)}")