126 lines
3.6 KiB
Go
126 lines
3.6 KiB
Go
package integration
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"io"
|
|
"time"
|
|
)
|
|
|
|
type SourceCursor struct {
|
|
Revision string `json:"revision,omitempty"`
|
|
State json.RawMessage `json:"state,omitempty"`
|
|
}
|
|
|
|
type SourceChange struct {
|
|
Key string `json:"key"`
|
|
Operation string `json:"operation"`
|
|
Content []byte `json:"content,omitempty"`
|
|
MediaType string `json:"media_type,omitempty"`
|
|
Metadata map[string]string `json:"metadata,omitempty"`
|
|
ACL []string `json:"acl,omitempty"`
|
|
Revision string `json:"revision,omitempty"`
|
|
ObservedAt time.Time `json:"observed_at"`
|
|
}
|
|
|
|
type SourceChangeStream interface {
|
|
Next(context.Context) (SourceChange, error)
|
|
Close() error
|
|
}
|
|
|
|
type SourceConnector interface {
|
|
Changes(context.Context, SourceCursor) (SourceChangeStream, error)
|
|
}
|
|
|
|
type IndexPublication struct {
|
|
ProjectID string `json:"project_id"`
|
|
KnowledgeBaseID string `json:"knowledge_base_id"`
|
|
ReleaseID string `json:"release_id"`
|
|
DatasetURI string `json:"dataset_uri"`
|
|
DatasetHash string `json:"dataset_hash"`
|
|
Policy json.RawMessage `json:"policy"`
|
|
}
|
|
|
|
type PublishedIndex struct {
|
|
ExternalID string `json:"external_id"`
|
|
Revision string `json:"revision"`
|
|
Metadata json.RawMessage `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type RetrievalRequest struct {
|
|
ExternalIndexID string `json:"external_index_id"`
|
|
Query string `json:"query"`
|
|
TopK int `json:"top_k"`
|
|
Filters json.RawMessage `json:"filters,omitempty"`
|
|
}
|
|
|
|
type RetrievedItem struct {
|
|
ID string `json:"id"`
|
|
Content string `json:"content"`
|
|
Score float64 `json:"score"`
|
|
Citation json.RawMessage `json:"citation,omitempty"`
|
|
Metadata json.RawMessage `json:"metadata,omitempty"`
|
|
}
|
|
|
|
type RetrievalBackend interface {
|
|
Publish(context.Context, IndexPublication) (PublishedIndex, error)
|
|
Retrieve(context.Context, RetrievalRequest) ([]RetrievedItem, error)
|
|
Retire(context.Context, PublishedIndex) error
|
|
}
|
|
|
|
type EmbeddingRequest struct {
|
|
Model string `json:"model"`
|
|
Texts []string `json:"texts"`
|
|
}
|
|
|
|
type EmbeddingResponse struct {
|
|
Model string `json:"model"`
|
|
Dimensions int `json:"dimensions"`
|
|
Vectors [][]float32 `json:"vectors"`
|
|
Usage json.RawMessage `json:"usage,omitempty"`
|
|
}
|
|
|
|
type EmbeddingProvider interface {
|
|
Embed(context.Context, EmbeddingRequest) (EmbeddingResponse, error)
|
|
}
|
|
|
|
type RerankRequest struct {
|
|
Model string `json:"model"`
|
|
Query string `json:"query"`
|
|
Candidates []RetrievedItem `json:"candidates"`
|
|
TopK int `json:"top_k"`
|
|
}
|
|
|
|
type RerankProvider interface {
|
|
Rerank(context.Context, RerankRequest) ([]RetrievedItem, error)
|
|
}
|
|
|
|
type GenerationRequest struct {
|
|
Model string `json:"model"`
|
|
Query string `json:"query"`
|
|
Context []RetrievedItem `json:"context"`
|
|
Parameters json.RawMessage `json:"parameters,omitempty"`
|
|
}
|
|
|
|
type GenerationEvent struct {
|
|
Delta string `json:"delta,omitempty"`
|
|
Usage json.RawMessage `json:"usage,omitempty"`
|
|
Done bool `json:"done"`
|
|
}
|
|
|
|
type GenerationStream interface {
|
|
Receive(context.Context) (GenerationEvent, error)
|
|
Close() error
|
|
}
|
|
|
|
type GenerationProvider interface {
|
|
Generate(context.Context, GenerationRequest) (GenerationStream, error)
|
|
}
|
|
|
|
type SecretResolver interface {
|
|
Resolve(context.Context, string) ([]byte, error)
|
|
}
|
|
|
|
type ArtifactReader interface {
|
|
Open(context.Context, string) (io.ReadCloser, error)
|
|
}
|