您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

123456789101112131415161718192021222324252627
  1. from collections.abc import Generator, Mapping
  2. from typing import Generic, Optional, TypeVar
  3. from pydantic import BaseModel
  4. class BaseBackwardsInvocation:
  5. @classmethod
  6. def convert_to_event_stream(cls, response: Generator[BaseModel | Mapping | str, None, None] | BaseModel | Mapping):
  7. if isinstance(response, Generator):
  8. try:
  9. for chunk in response:
  10. if isinstance(chunk, BaseModel | dict):
  11. yield BaseBackwardsInvocationResponse(data=chunk).model_dump_json().encode()
  12. except Exception as e:
  13. error_message = BaseBackwardsInvocationResponse(error=str(e)).model_dump_json()
  14. yield error_message.encode()
  15. else:
  16. yield BaseBackwardsInvocationResponse(data=response).model_dump_json().encode()
  17. T = TypeVar("T", bound=dict | Mapping | str | bool | int | BaseModel)
  18. class BaseBackwardsInvocationResponse(BaseModel, Generic[T]):
  19. data: Optional[T] = None
  20. error: str = ""