add llm adapter interface and implementations

This commit is contained in:
leonardotrapani
2026-01-31 20:42:14 +01:00
parent e3bf09b02f
commit bb8effc69f
7 changed files with 424 additions and 1 deletions
+42
View File
@@ -0,0 +1,42 @@
package llm
import (
"context"
"fmt"
)
// Adapter interface for LLM text processing
type Adapter interface {
Process(ctx context.Context, text string) (string, error)
}
// Config holds LLM adapter configuration
type Config struct {
Provider string
APIKey string
Model string
RemoveStutters bool
AddPunctuation bool
FixGrammar bool
RemoveFillerWords bool
CustomPrompt string
Keywords []string
}
// NewAdapter creates an LLM adapter based on the provider
func NewAdapter(cfg Config) (Adapter, error) {
switch cfg.Provider {
case "openai":
if cfg.APIKey == "" {
return nil, fmt.Errorf("OpenAI API key required")
}
return NewOpenAIAdapter(cfg), nil
case "groq":
if cfg.APIKey == "" {
return nil, fmt.Errorf("Groq API key required")
}
return NewGroqAdapter(cfg), nil
default:
return nil, fmt.Errorf("unsupported LLM provider: %s", cfg.Provider)
}
}