28 lines
588 B
Go
28 lines
588 B
Go
package ai
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
type Provider interface {
|
|
Name() string
|
|
Summarize(ctx context.Context, prompt string) (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)
|
|
}
|
|
}
|