go-micro.dev/v5@v5.12.0/genai/genai.go (about) 1 // Package genai provides a generic interface for generative AI providers. 2 package genai 3 4 // Result is the unified response from GenAI providers. 5 type Result struct { 6 Prompt string 7 Type string 8 Data []byte // for audio/image binary data 9 Text string // for text or image URL 10 } 11 12 // Stream represents a streaming response from a GenAI provider. 13 type Stream struct { 14 Results <-chan *Result 15 Err error 16 // You can add fields for cancellation, errors, etc. if needed 17 } 18 19 // GenAI is the generic interface for generative AI providers. 20 type GenAI interface { 21 Generate(prompt string, opts ...Option) (*Result, error) 22 Stream(prompt string, opts ...Option) (*Stream, error) 23 String() string 24 } 25 26 // Option is a functional option for configuring providers. 27 type Option func(*Options) 28 29 // Options holds configuration for providers. 30 type Options struct { 31 APIKey string 32 Endpoint string 33 Type string // "text", "image", "audio", etc. 34 Model string // model name, e.g. "gemini-2.5-pro" 35 // Add more fields as needed 36 } 37 38 // Option functions for generation type 39 func Text(o *Options) { o.Type = "text" } 40 func Image(o *Options) { o.Type = "image" } 41 func Audio(o *Options) { o.Type = "audio" } 42 43 // Provider registry 44 var providers = make(map[string]GenAI) 45 46 // Register a GenAI provider by name. 47 func Register(name string, provider GenAI) { 48 providers[name] = provider 49 } 50 51 // Get a GenAI provider by name. 52 func Get(name string) GenAI { 53 return providers[name] 54 }