base.py 731 B

1234567891011121314151617181920
  1. import json
  2. from collections.abc import Generator
  3. from pydantic import BaseModel
  4. class BaseBackwardsInvocation:
  5. @classmethod
  6. def convert_to_event_stream(cls, response: Generator[BaseModel | dict, None, None] | BaseModel | dict):
  7. if isinstance(response, Generator):
  8. for chunk in response:
  9. if isinstance(chunk, BaseModel):
  10. yield chunk.model_dump_json().encode() + b'\n\n'
  11. else:
  12. yield json.dumps(chunk).encode() + b'\n\n'
  13. else:
  14. if isinstance(response, BaseModel):
  15. yield response.model_dump_json().encode() + b'\n\n'
  16. else:
  17. yield json.dumps(response).encode() + b'\n\n'