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 to the Cohere API and replaces it with the model's response.`, 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{} 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 specified input field (default: ".Payload.After"), sends it to the Cohere API, and stores the resulting embeddings in the record's ".Payload.After" field 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"). Note that the compressed embeddings cannot be directly compared in this test, so the focus is on verifying the metadata update.`, Config: config.Config{ "apiKey": "fake-api-key", }, Have: opencdc.Record{ Operation: opencdc.OperationCreate, Position: opencdc.Position("pos-1"), Metadata: map[string]string{}, }, Want: sdk.SingleRecord{ Operation: opencdc.OperationCreate, Position: opencdc.Position("pos-1"), Metadata: opencdc.Metadata{"cohere.embed.model": "embed-english-v2.0"}, }, })
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": null } }
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 specified input field (default: ".Payload.After"), sends it to the Cohere API, and stores the response in the record's ".Payload.After" field. 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.