- Migrate `compress_image.go` to `internal/imageutil` for better encapsulation. - Reorganize LLM provider implementations into distinct packages (`google`, `openai`, and `anthropic`). - Replace `go_llm` package name with `llm`. - Refactor internal APIs for improved clarity, including renaming `anthropic` to `anthropicImpl` and `google` to `googleImpl`. - Add helper methods and restructure message handling for better separation of concerns.
31 lines
731 B
Go
31 lines
731 B
Go
package llm
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
// ChatCompletion is the interface for chat completion.
|
|
type ChatCompletion interface {
|
|
ChatComplete(ctx context.Context, req Request) (Response, error)
|
|
}
|
|
|
|
// LLM is the interface for language model providers.
|
|
type LLM interface {
|
|
ModelVersion(modelVersion string) (ChatCompletion, error)
|
|
}
|
|
|
|
// OpenAI creates a new OpenAI LLM provider with the given API key.
|
|
func OpenAI(key string) LLM {
|
|
return openaiImpl{key: key}
|
|
}
|
|
|
|
// Anthropic creates a new Anthropic LLM provider with the given API key.
|
|
func Anthropic(key string) LLM {
|
|
return anthropicImpl{key: key}
|
|
}
|
|
|
|
// Google creates a new Google LLM provider with the given API key.
|
|
func Google(key string) LLM {
|
|
return googleImpl{key: key}
|
|
}
|