Spaces:
Running
Running
| from typing import Literal | |
| from pydantic import BaseModel, Field, field_serializer, field_validator | |
| class Source(BaseModel): | |
| id: str | None = Field(default=None, description="The id of the source component.") | |
| display_name: str | None = Field(default=None, description="The display name of the source component.") | |
| source: str | None = Field( | |
| default=None, | |
| description="The source of the message. Normally used to display the model name (e.g. 'gpt-4o')", | |
| ) | |
| class Properties(BaseModel): | |
| text_color: str | None = None | |
| background_color: str | None = None | |
| edited: bool = False | |
| source: Source = Field(default_factory=Source) | |
| icon: str | None = None | |
| allow_markdown: bool = False | |
| state: Literal["partial", "complete"] = "complete" | |
| targets: list = [] | |
| def validate_source(cls, v): | |
| if isinstance(v, str): | |
| return Source(id=v, display_name=v, source=v) | |
| return v | |
| def serialize_source(self, value): | |
| if isinstance(value, Source): | |
| return value.model_dump() | |
| return value | |