mirror of
https://github.com/Dvorinka/Devour.git
synced 2026-06-04 20:43:05 +00:00
first commit
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
// Package ai provides AI integration for embeddings and context injection.
|
||||
package ai
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
// Config holds AI configuration.
|
||||
type Config struct {
|
||||
Provider string `yaml:"provider"`
|
||||
Model string `yaml:"model"`
|
||||
Dimensions int `yaml:"dimensions"`
|
||||
APIKey string `yaml:"api_key"`
|
||||
BatchSize int `yaml:"batch_size"`
|
||||
BaseURL string `yaml:"base_url"`
|
||||
Temperature float64 `yaml:"temperature"`
|
||||
}
|
||||
|
||||
// Client provides AI operations.
|
||||
type Client interface {
|
||||
// Embed generates embeddings for texts.
|
||||
Embed(ctx context.Context, texts []string) ([][]float32, error)
|
||||
|
||||
// QueryWithContext generates a response with context injection.
|
||||
QueryWithContext(ctx context.Context, query string, context []string) (string, error)
|
||||
}
|
||||
|
||||
// NewClient creates a new AI client based on provider.
|
||||
func NewClient(config *Config) Client {
|
||||
switch config.Provider {
|
||||
case "openai":
|
||||
return NewOpenAIClient(config)
|
||||
case "mock":
|
||||
return NewMockClient(config.Dimensions)
|
||||
default:
|
||||
return NewMockClient(1536)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user