diff --git a/src/crewai/utilities/crew_json_encoder.py b/src/crewai/utilities/crew_json_encoder.py new file mode 100644 index 000000000..071d134f3 --- /dev/null +++ b/src/crewai/utilities/crew_json_encoder.py @@ -0,0 +1,22 @@ +import json +from datetime import datetime +from uuid import UUID + +from openai import BaseModel + + +class CrewJSONEncoder(json.JSONEncoder): + """ + Custom JSON Encoder for Crew related objects. + """ + + def default(self, obj): + if isinstance(obj, datetime): + return obj.isoformat() + if isinstance(obj, UUID): + return str(obj) + if isinstance(obj, BaseModel): + return obj.model_dump() + if isinstance(obj, set): + return list(obj) + return super().default(obj)