2024-01-23 07:56:36 +00:00
|
|
|
package grpc
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2024-02-21 01:21:19 +00:00
|
|
|
|
|
|
|
"github.com/go-skynet/LocalAI/core/schema"
|
2024-01-23 07:56:36 +00:00
|
|
|
pb "github.com/go-skynet/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)
|
2024-04-17 21:33:49 +00:00
|
|
|
AudioTranscription(ctx context.Context, in *pb.TranscriptRequest, opts ...grpc.CallOption) (*schema.Result, error)
|
2024-01-23 07:56:36 +00:00
|
|
|
TokenizeString(ctx context.Context, in *pb.PredictOptions, opts ...grpc.CallOption) (*pb.TokenizationResponse, error)
|
|
|
|
Status(ctx context.Context) (*pb.StatusResponse, error)
|
2024-03-22 20:14:04 +00:00
|
|
|
|
|
|
|
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)
|
2024-01-23 07:56:36 +00:00
|
|
|
}
|