---
name: image_gen_result
lang: go
domain: ml
version: "1.0.0"
algebraic: product
definition: |
  type ImageGenResult struct {
      ImageBytes  []byte         `json:"-"`
      Format      string         `json:"format"`
      Meta        map[string]any `json:"meta"`
      DurationMs  int64          `json:"duration_ms"`
      VramPeakMb  *int           `json:"vram_peak_mb,omitempty"`
  }
description: "Resultado de una solicitud de generacion de imagen. ImageBytes contiene los bytes raw del PNG (excluido del JSON). Meta transporta metadata del backend (seed efectivo, steps, modelo, etc.)."
tags: [ml, image-gen, diffusion, result]
uses_types: []
file_path: "functions/ml/image_gen_result.go"
---

## Ejemplo

```go
result, err := gen.Generate(ctx, cfg)
if err != nil {
    log.Fatal(err)
}
// Bytes raw del PNG — escribir a disco o enviar como multipart
os.WriteFile("output.png", result.ImageBytes, 0644)
// Metadata serializable a JSON
fmt.Println(result.DurationMs, result.Format)
```

## Notas

`ImageBytes` usa `json:"-"` porque viaja por canal binario separado (multipart, gRPC bytes, archivo).
El JSON de este tipo solo transporta metadata, no los bytes de la imagen.
`Meta` es un mapa libre — los backends lo usan para devolver seed efectivo, steps realizados,
nombre del modelo, etc. `VramPeakMb` es opcional y solo se rellena si el backend lo reporta.
