github.com/weaviate/weaviate@v1.24.6/usecases/modulecomponents/additional/provider_generative.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package additional 13 14 import ( 15 "context" 16 17 "github.com/sirupsen/logrus" 18 19 "github.com/weaviate/weaviate/entities/modulecapabilities" 20 "github.com/weaviate/weaviate/entities/moduletools" 21 generativegenerate "github.com/weaviate/weaviate/usecases/modulecomponents/additional/generate" 22 generativemodels "github.com/weaviate/weaviate/usecases/modulecomponents/additional/models" 23 ) 24 25 type generativeClient interface { 26 GenerateSingleResult(ctx context.Context, textProperties map[string]string, prompt string, cfg moduletools.ClassConfig) (*generativemodels.GenerateResponse, error) 27 GenerateAllResults(ctx context.Context, textProperties []map[string]string, task string, cfg moduletools.ClassConfig) (*generativemodels.GenerateResponse, error) 28 Generate(ctx context.Context, cfg moduletools.ClassConfig, prompt string) (*generativemodels.GenerateResponse, error) 29 } 30 31 type GraphQLAdditionalGenerativeProvider struct { 32 generative AdditionalProperty 33 } 34 35 func NewGenerativeProvider(client generativeClient, logger logrus.FieldLogger) *GraphQLAdditionalGenerativeProvider { 36 return &GraphQLAdditionalGenerativeProvider{generativegenerate.New(client, logger)} 37 } 38 39 func (p *GraphQLAdditionalGenerativeProvider) AdditionalProperties() map[string]modulecapabilities.AdditionalProperty { 40 additionalProperties := map[string]modulecapabilities.AdditionalProperty{} 41 additionalProperties["generate"] = p.getGenerate() 42 return additionalProperties 43 } 44 45 func (p *GraphQLAdditionalGenerativeProvider) getGenerate() modulecapabilities.AdditionalProperty { 46 return modulecapabilities.AdditionalProperty{ 47 GraphQLNames: []string{"generate"}, 48 GraphQLFieldFunction: p.generative.AdditionalFieldFn, 49 GraphQLExtractFunction: p.generative.ExtractAdditionalFn, 50 SearchFunctions: modulecapabilities.AdditionalSearch{ 51 ExploreGet: p.generative.AdditionalPropertyFn, 52 ExploreList: p.generative.AdditionalPropertyFn, 53 }, 54 } 55 }