|
package grpc |
|
|
|
import ( |
|
"context" |
|
|
|
"github.com/mudler/LocalAI/core/schema" |
|
pb "github.com/mudler/LocalAI/pkg/grpc/proto" |
|
"google.golang.org/grpc" |
|
) |
|
|
|
var embeds = map[string]*embedBackend{} |
|
|
|
func Provide(addr string, llm LLM) { |
|
embeds[addr] = &embedBackend{s: &server{llm: llm}} |
|
} |
|
|
|
func NewClient(address string, parallel bool, wd WatchDog, enableWatchDog bool) Backend { |
|
if bc, ok := embeds[address]; ok { |
|
return bc |
|
} |
|
return NewGrpcClient(address, parallel, wd, enableWatchDog) |
|
} |
|
|
|
func NewGrpcClient(address string, parallel bool, wd WatchDog, enableWatchDog bool) Backend { |
|
if !enableWatchDog { |
|
wd = nil |
|
} |
|
return &Client{ |
|
address: address, |
|
parallel: parallel, |
|
wd: wd, |
|
} |
|
} |
|
|
|
type Backend interface { |
|
IsBusy() bool |
|
HealthCheck(ctx context.Context) (bool, error) |
|
Embeddings(ctx context.Context, in *pb.PredictOptions, opts ...grpc.CallOption) (*pb.EmbeddingResult, error) |
|
Predict(ctx context.Context, in *pb.PredictOptions, opts ...grpc.CallOption) (*pb.Reply, error) |
|
LoadModel(ctx context.Context, in *pb.ModelOptions, opts ...grpc.CallOption) (*pb.Result, error) |
|
PredictStream(ctx context.Context, in *pb.PredictOptions, f func(s []byte), opts ...grpc.CallOption) error |
|
GenerateImage(ctx context.Context, in *pb.GenerateImageRequest, opts ...grpc.CallOption) (*pb.Result, error) |
|
TTS(ctx context.Context, in *pb.TTSRequest, opts ...grpc.CallOption) (*pb.Result, error) |
|
AudioTranscription(ctx context.Context, in *pb.TranscriptRequest, opts ...grpc.CallOption) (*schema.TranscriptionResult, error) |
|
TokenizeString(ctx context.Context, in *pb.PredictOptions, opts ...grpc.CallOption) (*pb.TokenizationResponse, error) |
|
Status(ctx context.Context) (*pb.StatusResponse, error) |
|
|
|
StoresSet(ctx context.Context, in *pb.StoresSetOptions, opts ...grpc.CallOption) (*pb.Result, error) |
|
StoresDelete(ctx context.Context, in *pb.StoresDeleteOptions, opts ...grpc.CallOption) (*pb.Result, error) |
|
StoresGet(ctx context.Context, in *pb.StoresGetOptions, opts ...grpc.CallOption) (*pb.StoresGetResult, error) |
|
StoresFind(ctx context.Context, in *pb.StoresFindOptions, opts ...grpc.CallOption) (*pb.StoresFindResult, error) |
|
|
|
Rerank(ctx context.Context, in *pb.RerankRequest, opts ...grpc.CallOption) (*pb.RerankResult, error) |
|
} |
|
|