package ai import ( "context" "fmt" ) // GenOptions permet de contrôler le comportement de génération par appel. type GenOptions struct { Think bool // active le mode raisonnement (Qwen3 /think) NumCtx int // taille du contexte KV (0 = valeur par défaut du provider) } type Provider interface { Name() string Summarize(ctx context.Context, prompt string, opts GenOptions) (string, error) ListModels(ctx context.Context) ([]string, error) } func NewProvider(name, apiKey, model, endpoint string) (Provider, error) { switch name { case "openai": return newOpenAI(apiKey, model), nil case "anthropic": return newAnthropic(apiKey, model), nil case "gemini": return newGemini(apiKey, model), nil case "ollama": return newOllama(endpoint, model), nil default: return nil, fmt.Errorf("unknown provider: %s", name) } }