from mixtrain import (
Audio,
Embedding,
File,
Image,
JSON,
Markdown,
Text,
Video,
)Use these types when your model inputs or outputs include media, structured text, JSON, or embeddings. Mixtrain uses the type information to display results clearly in the app, such as inline images, video players, audio players, and formatted JSON.
Types fall into a few categories:
| Category | Description | Types |
|---|---|---|
| File references | Reference a file by URL and download it locally | File, Image, Video, Audio |
| Content types | Inline text content | Text, Markdown, JSON |
| Embeddings | Vector data for ML features | Embedding |
Downloadable file types (File, Image, Video, and Audio) support URLs from https://, gs://, and s3://.
Returning Multimodal Outputs
Return typed outputs from your MixModel:
from mixtrain import Image, MixModel, Video
class ImageGenerator(MixModel):
def run(self, inputs=None):
image_url = self._generate(inputs["prompt"])
return {
"image": Image(
url=image_url,
width=1024,
height=1024
)
}
class VideoGenerator(MixModel):
def run(self, inputs=None):
video_url = self._generate(inputs["prompt"])
return {
"video": Video(
url=video_url,
width=1920,
height=1080,
duration_seconds=5.0
)
}Reading Model Results
When you run a model, common media and text outputs are available through convenience properties:
from mixtrain import Model
model = Model("flux-pro")
result = model.run({"prompt": "A sunset"})
if result.image:
print(result.image.url)
print(f"{result.image.width}x{result.image.height}")
# For video models
model = Model("hunyuan-video")
result = model.run({"prompt": "A cat playing"})
if result.video:
print(result.video.url)
print(f"Duration: {result.video.duration_seconds}s")Use result.outputs for other output names or values such as markdown, json, or embedding.
Serialization
Mixtrain sends typed values as JSON-serializable dictionaries with a _type field, so the app can render each value correctly.
serialize_output()
from mixtrain import Image, serialize_output
serialize_output(Image("https://...", width=256, height=256))
# {"_type": "image", "url": "https://...", "width": 256, "height": 256}Nested lists and dictionaries are handled automatically.
deserialize_output()
from mixtrain import deserialize_output
deserialize_output({
"_type": "image",
"url": "https://..."
}) # Returns Image instanceextract_output_schema()
from mixtrain import extract_output_schema
class MyModel(MixModel):
def run(self, inputs) -> dict[str, Image]:
...
extract_output_schema(MyModel)
# {"type": "dict", "valueSchema": {"type": "image"}}