Files
2026-07-13 13:22:34 +08:00

27 lines
879 B
Python

import inspect
from pydantic import BaseModel
def convert_to_serializable(response):
"""
Convert the response to a JSON serializable format.
LangChain response objects often contains Pydantic objects, which causes an serialization
error when the model is served behind REST endpoint.
"""
# LangChain >= 0.3.0 uses Pydantic 2.x
if isinstance(response, BaseModel):
return response.model_dump()
if inspect.isgenerator(response):
return (convert_to_serializable(chunk) for chunk in response)
elif isinstance(response, dict):
return {k: convert_to_serializable(v) for k, v in response.items()}
elif isinstance(response, list):
return [convert_to_serializable(v) for v in response]
elif isinstance(response, tuple):
return tuple(convert_to_serializable(v) for v in response)
return response