MixtrainDocsBlog
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:

CategoryDescriptionTypes
File referencesReference a file by URL and download it locallyFile, Image, Video, Audio
Content typesInline text contentText, Markdown, JSON
EmbeddingsVector data for ML featuresEmbedding

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 instance

extract_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"}}

On this page