56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package mock
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/allai/allai-backend/internal/app"
|
|
)
|
|
|
|
// Provider is a lightweight mock that simulates async generation.
|
|
type Provider struct {
|
|
models []app.ModelDescriptor
|
|
}
|
|
|
|
func New() *Provider {
|
|
return &Provider{
|
|
models: []app.ModelDescriptor{
|
|
{
|
|
ID: "nano-banana",
|
|
Label: "Nano Banana",
|
|
Provider: "Gemini",
|
|
Modalities: []string{"image"},
|
|
Capabilities: []string{"text-to-image", "image-edit"},
|
|
},
|
|
{
|
|
ID: "veo3",
|
|
Label: "VEO3",
|
|
Provider: "Google DeepMind",
|
|
Modalities: []string{"video"},
|
|
Capabilities: []string{"text-to-video", "image-to-video"},
|
|
},
|
|
{
|
|
ID: "sora-2",
|
|
Label: "Sora 2",
|
|
Provider: "OpenAI",
|
|
Modalities: []string{"video"},
|
|
Capabilities: []string{"text-to-video"},
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func (p *Provider) ListModels(ctx context.Context) ([]app.ModelDescriptor, error) {
|
|
return p.models, nil
|
|
}
|
|
|
|
func (p *Provider) Generate(ctx context.Context, req app.GenerationRequest) (app.GenerationResponse, error) {
|
|
return app.GenerationResponse{
|
|
ID: "mock-" + time.Now().UTC().Format("20060102T150405Z"),
|
|
ModelID: req.ModelID,
|
|
Status: "queued",
|
|
QueuedAt: time.Now().UTC(),
|
|
ExpiresAt: time.Now().UTC().Add(15 * time.Minute),
|
|
}, nil
|
|
}
|