Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var HTTPClient httpClient = http.DefaultClient
Functions ¶
Types ¶
type OllamaProcessor ¶
type OllamaProcessor struct { sdk.UnimplementedProcessor // contains filtered or unexported fields }
Example ¶
package main import ( _ "embed" "io" "net/http" "strings" "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" ) //go:embed test/ollama-record-response.json var ollamaRecResp string func main() { processor := NewOllamaProcessor(log.Nop()) mockClient := &MockhttpClient{ DoFunc: func(req *http.Request) (*http.Response, error) { return &http.Response{ StatusCode: 200, Body: io.NopCloser(strings.NewReader(ollamaRecResp)), }, nil }, } HTTPClient = mockClient exampleutil.RunExample(processor, exampleutil.Example{ Summary: "Ollama Prompt Example", Description: `This example will process the record stored in ` + "`.Payload.After`" + `. The model is prompted to return the records unchanged. The records are returned as a JSON with the same format as the data. `, Config: config.Config{ "prompt": "Take the incoming record in JSON format, with a structure of {'test-field': integer}. Add one to the value of the integer and return that field.", "model": "llama3.2", "url": "http://localhost:11434", "field": ".Payload.After", }, Have: opencdc.Record{ Position: opencdc.Position("test-position"), Operation: opencdc.OperationCreate, Metadata: map[string]string{"key1": "val1"}, Key: opencdc.RawData("test-key"), Payload: opencdc.Change{ After: opencdc.StructuredData{"test-field": 123}, }, }, Want: sdk.SingleRecord{ Position: opencdc.Position("test-position"), Operation: opencdc.OperationCreate, Metadata: map[string]string{"key1": "val1"}, Key: opencdc.RawData("test-key"), Payload: opencdc.Change{ After: opencdc.StructuredData{"test-field": float64(124)}, }, }, }) } type MockhttpClient struct { DoFunc func(req *http.Request) (*http.Response, error) } func (m *MockhttpClient) Do(req *http.Request) (*http.Response, error) { if m.DoFunc != nil { return m.DoFunc(req) } return &http.Response{StatusCode: 200}, nil }
Output: processor transformed record: --- before +++ after @@ -1,14 +1,14 @@ { "position": "dGVzdC1wb3NpdGlvbg==", "operation": "create", "metadata": { "key1": "val1" }, "key": "test-key", "payload": { "before": null, "after": { - "test-field": 123 + "test-field": 124 } } }
func (*OllamaProcessor) Process ¶
func (p *OllamaProcessor) Process(ctx context.Context, records []opencdc.Record) []sdk.ProcessedRecord
func (*OllamaProcessor) Specification ¶
func (p *OllamaProcessor) Specification() (sdk.Specification, error)
type OllamaResponse ¶
type PromptValidationConfig ¶
Click to show internal directories.
Click to hide internal directories.