Refactor OmniRequestOutput to encapsulate multimodal output

- Changed the multimodal_output field to a private attribute _multimodal_output for better encapsulation.
- Added a property method to access multimodal_output, allowing for a clearer interface and improved handling of request outputs.

Signed-off-by: [Your Name] <[Your Email]>

Signed-off-by: tzhouam <tzhouam@connect.ust.hk>
This commit is contained in:
tzhouam committed 2026-01-30 10:02:22 +00:00
1 parent 2b009b3cef
commit 3208afd82b
1 file changed
+14 -3
+14 -3
View File
@@ -59,7 +59,7 @@ class OmniRequestOutput:
prompt: OmniPromptType | None = None
latents: torch.Tensor | None = None
metrics: dict[str, Any] = field(default_factory=dict)
multimodal_output: dict[str, Any] = field(default_factory=dict)
_multimodal_output: dict[str, Any] = field(default_factory=dict)
@classmethod
def from_pipeline(
@@ -116,10 +116,21 @@ class OmniRequestOutput:
prompt=prompt,
latents=latents,
metrics=metrics or {},
multimodal_output=multimodal_output or {},
_multimodal_output=multimodal_output or {},
finished=True,
)
@property
def multimodal_output(self) -> dict[str, Any]:
"""Return multimodal output from the underlying request output or local field.
For pipeline outputs, this proxies to request_output.multimodal_output.
For diffusion outputs, this returns the local _multimodal_output field.
"""
if self.request_output is not None:
return getattr(self.request_output, "multimodal_output", {})
return self._multimodal_output
@property
def num_images(self) -> int:
"""Return the number of generated images."""
@@ -229,7 +240,7 @@ class OmniRequestOutput:
f"prompt={self.prompt!r}",
f"latents={self.latents}",
f"metrics={self.metrics}",
f"multimodal_output={self.multimodal_output}",
f"multimodal_output={self._multimodal_output}",
]
return f"OmniRequestOutput({', '.join(parts)})"