Documentation
¶
Index ¶
- Constants
- type ChatResponse
- type CommandProcessor
- type EmbedProcessor
- func (p *EmbedProcessor) Configure(ctx context.Context, cfg config.Config) error
- func (p *EmbedProcessor) Open(ctx context.Context) error
- func (p *EmbedProcessor) Process(ctx context.Context, records []opencdc.Record) []sdk.ProcessedRecord
- func (p *EmbedProcessor) Specification() (sdk.Specification, error)
- type RerankProcessor
- type RerankResponse
- type RerankResult
Examples ¶
Constants ¶
View Source
const EmbedModelMetadata = "cohere.embed.model"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ChatResponse ¶
type CommandProcessor ¶ added in v0.13.4
type CommandProcessor struct { sdk.UnimplementedProcessor // contains filtered or unexported fields }
Example ¶
package main import ( "context" "fmt" "github.com/conduitio/conduit-commons/config" "github.com/conduitio/conduit-commons/opencdc" sdk "github.com/conduitio/conduit-processor-sdk" "github.com/conduitio/conduit/pkg/foundation/log" "github.com/conduitio/conduit/pkg/plugin/processor/builtin/internal/exampleutil" ) func main() { p := NewCommandProcessor(log.Nop()) p.client = &mockCommandClient{} exampleutil.RunExample(p, exampleutil.Example{ Summary: `Generate responses using Cohere's command model`, Description: ` This example demonstrates how to use the Cohere command processor to generate responses for a record's ` + "`.Payload.After`" + ` field. The processor sends the input text from the configured "request.body" to the Cohere API and stores the model's response into the configured "response.body"`, Config: config.Config{ commandProcessorConfigApiKey: "apikey", commandProcessorConfigPrompt: "hello", }, Have: opencdc.Record{ Operation: opencdc.OperationUpdate, Position: opencdc.Position("pos-1"), Payload: opencdc.Change{ After: opencdc.RawData("who are you?"), }, }, Want: sdk.SingleRecord{ Operation: opencdc.OperationUpdate, Position: opencdc.Position("pos-1"), Payload: opencdc.Change{ After: opencdc.RawData("cohere command response content"), }, }, }) } type mockCommandClient struct{} func (m mockCommandClient) command(ctx context.Context, content string) (string, error) { if content == "" { return "", fmt.Errorf("mocked api error") } return "cohere command response content", nil }
Output: processor transformed record: --- before +++ after @@ -1,10 +1,10 @@ { "position": "cG9zLTE=", "operation": "update", "metadata": null, "key": null, "payload": { "before": null, - "after": "who are you?" + "after": "cohere command response content" } }
func NewCommandProcessor ¶
func NewCommandProcessor(l log.CtxLogger) *CommandProcessor
func (*CommandProcessor) Process ¶ added in v0.13.4
func (p *CommandProcessor) Process(ctx context.Context, records []opencdc.Record) []sdk.ProcessedRecord
func (*CommandProcessor) Specification ¶ added in v0.13.4
func (p *CommandProcessor) Specification() (sdk.Specification, error)
type EmbedProcessor ¶ added in v0.13.4
type EmbedProcessor struct { sdk.UnimplementedProcessor // contains filtered or unexported fields }
Example ¶
p := NewEmbedProcessor(log.Nop()) p.client = mockEmbedClient{} embedding, err := p.client.embed(context.Background(), []string{"test input"}) if err != nil { panic(fmt.Sprintf("failed to get embedding: %v", err)) } if len(embedding) == 0 { panic("no embeddings found") } embeddingJSON, err := json.Marshal(embedding[0]) if err != nil { panic(fmt.Sprintf("failed to marshal embeddings: %v", err)) } // Compress the embedding using zstd compressedEmbedding, err := compressData(embeddingJSON) if err != nil { panic(fmt.Sprintf("failed to compress embeddings: %v", err)) } exampleutil.RunExample(p, exampleutil.Example{ Summary: `Generate embeddings using Cohere's embedding model`, Description: ` This example demonstrates how to use the Cohere embedding processor to generate embeddings for a record. The processor extracts text from the configured "inputField" (default: ".Payload.After"), sends it to the Cohere API, and stores the resulting embeddings in the configured "outputField" as compressed data using the zstd algorithm. In this example, the processor is configured with a mock client and an API key. The input record's metadata is updated to include the embedding model used ("embed-english-v2.0").`, Config: config.Config{ "apiKey": "fake-api-key", "inputField": ".Payload.After", "outputField": ".Payload.After", }, Have: opencdc.Record{ Operation: opencdc.OperationCreate, Position: opencdc.Position("pos-1"), Metadata: map[string]string{}, Payload: opencdc.Change{ After: opencdc.RawData("test input"), }, }, Want: sdk.SingleRecord{ Operation: opencdc.OperationCreate, Position: opencdc.Position("pos-1"), Metadata: opencdc.Metadata{"cohere.embed.model": "embed-english-v2.0"}, Payload: opencdc.Change{ After: opencdc.RawData(compressedEmbedding), }, }, })
Output: processor transformed record: --- before +++ after @@ -1,10 +1,12 @@ { "position": "cG9zLTE=", "operation": "create", - "metadata": {}, + "metadata": { + "cohere.embed.model": "embed-english-v2.0" + }, "key": null, "payload": { "before": null, - "after": "test input" + "after": "(\ufffd/\ufffd\u0004\u0000i\u0000\u0000[0.1,0.2,0.3]\ufffd^xH" } }
func NewEmbedProcessor ¶
func NewEmbedProcessor(l log.CtxLogger) *EmbedProcessor
func (*EmbedProcessor) Open ¶ added in v0.13.4
func (p *EmbedProcessor) Open(ctx context.Context) error
func (*EmbedProcessor) Process ¶ added in v0.13.4
func (p *EmbedProcessor) Process(ctx context.Context, records []opencdc.Record) []sdk.ProcessedRecord
func (*EmbedProcessor) Specification ¶ added in v0.13.4
func (p *EmbedProcessor) Specification() (sdk.Specification, error)
type RerankProcessor ¶ added in v0.13.4
type RerankProcessor struct { sdk.UnimplementedProcessor // contains filtered or unexported fields }
Example ¶
package main import ( "context" "fmt" "math" "github.com/conduitio/conduit-commons/config" "github.com/conduitio/conduit-commons/opencdc" sdk "github.com/conduitio/conduit-processor-sdk" "github.com/conduitio/conduit/pkg/foundation/log" "github.com/conduitio/conduit/pkg/plugin/processor/builtin/internal/exampleutil" ) func main() { p := NewRerankProcessor(log.Nop()) p.client = &mockRerankClient{} exampleutil.RunExample(p, exampleutil.Example{ Summary: `Generate responses using Cohere's rerank model`, Description: ` This example demonstrates how to use the Cohere rerank processor.This takes in a query and a list of texts and produces an ordered array with each text assigned a relevance score. The processor extracts text from the configured "request.body" (default: ".Payload.After"), sends it to the Cohere API, and stores the response in the configured "response.body". In this example, the processor is configured with a mock client and an API key. The input record's metadata is updated to include the rerank model used ("rerank-v3.5").`, Config: config.Config{ "apiKey": "fakeapiKey", "query": "What is the capital of the United States?", }, Have: opencdc.Record{ Operation: opencdc.OperationUpdate, Position: opencdc.Position("pos-1"), Payload: opencdc.Change{ After: opencdc.RawData("Carson City is the capital city of the American state of Nevada."), }, }, Want: sdk.SingleRecord{ Operation: opencdc.OperationUpdate, Position: opencdc.Position("pos-1"), Payload: opencdc.Change{ After: opencdc.RawData(`{"document":{"text":"Carson City is the capital city of the American state of Nevada."},"index":0,"relevance_score":0.9}`), }, }, }) } type mockRerankClient struct{} func (m mockRerankClient) rerank(ctx context.Context, docs []string) ([]RerankResult, error) { if len(docs) == 0 { return nil, fmt.Errorf("mocked api error") } result := make([]RerankResult, 0, len(docs)) mockedScore := 1.0 for i, d := range docs { mockedScore -= 0.1 mockedScore = math.Round(mockedScore*10) / 10 res := RerankResult{ Index: i, RelevanceScore: mockedScore, } res.Document.Text = d result = append(result, res) } return result, nil }
Output: processor transformed record: --- before +++ after @@ -1,10 +1,10 @@ { "position": "cG9zLTE=", "operation": "update", "metadata": null, "key": null, "payload": { "before": null, - "after": "Carson City is the capital city of the American state of Nevada." + "after": "{\"document\":{\"text\":\"Carson City is the capital city of the American state of Nevada.\"},\"index\":0,\"relevance_score\":0.9}" } }
func NewRerankProcessor ¶
func NewRerankProcessor(l log.CtxLogger) *RerankProcessor
func (*RerankProcessor) Process ¶ added in v0.13.4
func (p *RerankProcessor) Process(ctx context.Context, records []opencdc.Record) []sdk.ProcessedRecord
func (*RerankProcessor) Specification ¶ added in v0.13.4
func (p *RerankProcessor) Specification() (sdk.Specification, error)
type RerankResponse ¶
type RerankResponse struct { ID string `json:"id"` Results []RerankResult `json:"results"` }
type RerankResult ¶
type RerankResult struct { Document struct { Text string `json:"text"` } `json:"document"` Index int `json:"index"` RelevanceScore float64 `json:"relevance_score"` }
func (RerankResult) String ¶
func (r RerankResult) String() string
Click to show internal directories.
Click to hide internal directories.