fix(promptMessage): correct field_serializer implementation for content serialization (#18458)

This commit is contained in:
Novice 2025-04-21 15:09:49 +08:00 committed by GitHub
parent cb69cb2d64
commit f191d372f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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):
"""