 Documentation
      ¶
      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.