| @@ -1,8 +1,8 @@ | |||
| from collections.abc import Sequence | |||
| from enum import Enum, StrEnum | |||
| from typing import Optional | |||
| from typing import Any, Optional, Union | |||
| from pydantic import BaseModel, Field, field_validator | |||
| from pydantic import BaseModel, Field, field_serializer, field_validator | |||
| class PromptMessageRole(Enum): | |||
| @@ -135,6 +135,16 @@ class PromptMessage(BaseModel): | |||
| """ | |||
| return not self.content | |||
| @field_serializer("content") | |||
| def serialize_content( | |||
| self, content: Optional[Union[str, Sequence[PromptMessageContent]]] | |||
| ) -> Optional[str | list[dict[str, Any] | PromptMessageContent] | Sequence[PromptMessageContent]]: | |||
| if content is None or isinstance(content, str): | |||
| return content | |||
| if isinstance(content, list): | |||
| return [item.model_dump() if hasattr(item, "model_dump") else item for item in content] | |||
| return content | |||
| class UserPromptMessage(PromptMessage): | |||
| """ | |||