2024-01-02 23:42:00 +08:00
|
|
|
import pydantic
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
2025-04-27 11:32:14 +08:00
|
|
|
from core.model_runtime.entities.message_entities import PromptMessageContentUnionTypes
|
|
|
|
|
2024-01-02 23:42:00 +08:00
|
|
|
|
|
|
|
def dump_model(model: BaseModel) -> dict:
|
2024-09-10 17:00:20 +08:00
|
|
|
if hasattr(pydantic, "model_dump"):
|
2024-12-24 18:38:51 +08:00
|
|
|
# FIXME mypy error, try to fix it instead of using type: ignore
|
|
|
|
return pydantic.model_dump(model) # type: ignore
|
2024-01-02 23:42:00 +08:00
|
|
|
else:
|
2024-06-14 01:05:37 +08:00
|
|
|
return model.model_dump()
|
2025-04-27 11:32:14 +08:00
|
|
|
|
|
|
|
|
|
|
|
def convert_llm_result_chunk_to_str(content: None | str | list[PromptMessageContentUnionTypes]) -> str:
|
|
|
|
if content is None:
|
|
|
|
message_text = ""
|
|
|
|
elif isinstance(content, str):
|
|
|
|
message_text = content
|
|
|
|
elif isinstance(content, list):
|
|
|
|
# Assuming the list contains PromptMessageContent objects with a "data" attribute
|
|
|
|
message_text = "".join(
|
|
|
|
item.data if hasattr(item, "data") and isinstance(item.data, str) else str(item) for item in content
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
message_text = str(content)
|
|
|
|
return message_text
|