2024-01-23 07:56:36 +00:00
|
|
|
package grpc
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
2024-02-21 01:21:19 +00:00
|
|
|
|
2024-06-23 08:24:36 +00:00
|
|
|
pb "github.com/mudler/LocalAI/pkg/grpc/proto"
|
2024-01-23 07:56:36 +00:00
|
|
|
"google.golang.org/grpc"
|
|
|
|
"google.golang.org/grpc/metadata"
|
|
|
|
)
|
|
|
|
|
|
|
|
var _ Backend = new(embedBackend)
|
|
|
|
var _ pb.Backend_PredictStreamServer = new(embedBackendServerStream)
|
|
|
|
|
|
|
|
type embedBackend struct {
|
|
|
|
s *server
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) IsBusy() bool {
|
|
|
|
return e.s.llm.Busy()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) HealthCheck(ctx context.Context) (bool, error) {
|
|
|
|
return true, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) Embeddings(ctx context.Context, in *pb.PredictOptions, opts ...grpc.CallOption) (*pb.EmbeddingResult, error) {
|
|
|
|
return e.s.Embedding(ctx, in)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) Predict(ctx context.Context, in *pb.PredictOptions, opts ...grpc.CallOption) (*pb.Reply, error) {
|
|
|
|
return e.s.Predict(ctx, in)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) LoadModel(ctx context.Context, in *pb.ModelOptions, opts ...grpc.CallOption) (*pb.Result, error) {
|
|
|
|
return e.s.LoadModel(ctx, in)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) PredictStream(ctx context.Context, in *pb.PredictOptions, f func(s []byte), opts ...grpc.CallOption) error {
|
|
|
|
bs := &embedBackendServerStream{
|
|
|
|
ctx: ctx,
|
|
|
|
fn: f,
|
|
|
|
}
|
|
|
|
return e.s.PredictStream(in, bs)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) GenerateImage(ctx context.Context, in *pb.GenerateImageRequest, opts ...grpc.CallOption) (*pb.Result, error) {
|
|
|
|
return e.s.GenerateImage(ctx, in)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) TTS(ctx context.Context, in *pb.TTSRequest, opts ...grpc.CallOption) (*pb.Result, error) {
|
|
|
|
return e.s.TTS(ctx, in)
|
|
|
|
}
|
|
|
|
|
2024-08-24 00:20:28 +00:00
|
|
|
func (e *embedBackend) SoundGeneration(ctx context.Context, in *pb.SoundGenerationRequest, opts ...grpc.CallOption) (*pb.Result, error) {
|
|
|
|
return e.s.SoundGeneration(ctx, in)
|
|
|
|
}
|
|
|
|
|
2024-09-02 13:48:53 +00:00
|
|
|
func (e *embedBackend) AudioTranscription(ctx context.Context, in *pb.TranscriptRequest, opts ...grpc.CallOption) (*pb.TranscriptResult, error) {
|
|
|
|
return e.s.AudioTranscription(ctx, in)
|
2024-01-23 07:56:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) TokenizeString(ctx context.Context, in *pb.PredictOptions, opts ...grpc.CallOption) (*pb.TokenizationResponse, error) {
|
|
|
|
return e.s.TokenizeString(ctx, in)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) Status(ctx context.Context) (*pb.StatusResponse, error) {
|
|
|
|
return e.s.Status(ctx, &pb.HealthMessage{})
|
|
|
|
}
|
|
|
|
|
2024-03-22 20:14:04 +00:00
|
|
|
func (e *embedBackend) StoresSet(ctx context.Context, in *pb.StoresSetOptions, opts ...grpc.CallOption) (*pb.Result, error) {
|
|
|
|
return e.s.StoresSet(ctx, in)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) StoresDelete(ctx context.Context, in *pb.StoresDeleteOptions, opts ...grpc.CallOption) (*pb.Result, error) {
|
|
|
|
return e.s.StoresDelete(ctx, in)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) StoresGet(ctx context.Context, in *pb.StoresGetOptions, opts ...grpc.CallOption) (*pb.StoresGetResult, error) {
|
|
|
|
return e.s.StoresGet(ctx, in)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackend) StoresFind(ctx context.Context, in *pb.StoresFindOptions, opts ...grpc.CallOption) (*pb.StoresFindResult, error) {
|
|
|
|
return e.s.StoresFind(ctx, in)
|
|
|
|
}
|
|
|
|
|
2024-04-24 22:19:02 +00:00
|
|
|
func (e *embedBackend) Rerank(ctx context.Context, in *pb.RerankRequest, opts ...grpc.CallOption) (*pb.RerankResult, error) {
|
|
|
|
return e.s.Rerank(ctx, in)
|
|
|
|
}
|
|
|
|
|
2024-01-23 07:56:36 +00:00
|
|
|
type embedBackendServerStream struct {
|
|
|
|
ctx context.Context
|
|
|
|
fn func(s []byte)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackendServerStream) Send(reply *pb.Reply) error {
|
|
|
|
e.fn(reply.GetMessage())
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackendServerStream) SetHeader(md metadata.MD) error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackendServerStream) SendHeader(md metadata.MD) error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackendServerStream) SetTrailer(md metadata.MD) {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackendServerStream) Context() context.Context {
|
|
|
|
return e.ctx
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackendServerStream) SendMsg(m any) error {
|
|
|
|
if x, ok := m.(*pb.Reply); ok {
|
|
|
|
return e.Send(x)
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e *embedBackendServerStream) RecvMsg(m any) error {
|
|
|
|
return nil
|
|
|
|
}
|