Documentation
¶
Index ¶
- func StartConfigWatcher(ctx context.Context, path string, rcv ConfigReceiver, l *slog.Logger, ...) error
- type ConfigReceiver
- type Processor
- type ProcessorFactory
- type Server
- func (s *Server) Check(context.Context, *grpc_health_v1.HealthCheckRequest) (*grpc_health_v1.HealthCheckResponse, error)
- func (s *Server) List(context.Context, *grpc_health_v1.HealthListRequest) (*grpc_health_v1.HealthListResponse, error)
- func (s *Server) LoadConfig(ctx context.Context, config *filterapi.Config) error
- func (s *Server) Process(stream extprocv3.ExternalProcessor_ProcessServer) error
- func (s *Server) Register(path string, newProcessor ProcessorFactory)
- func (s *Server) Watch(*grpc_health_v1.HealthCheckRequest, grpc_health_v1.Health_WatchServer) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StartConfigWatcher ¶
func StartConfigWatcher(ctx context.Context, path string, rcv ConfigReceiver, l *slog.Logger, tick time.Duration) error
StartConfigWatcher starts a watcher for the given path and Receiver. Periodically checks the file for changes and calls the Receiver's UpdateConfig method.
Types ¶
type ConfigReceiver ¶
type ConfigReceiver interface {
// LoadConfig updates the configuration.
LoadConfig(ctx context.Context, config *filterapi.Config) error
}
ConfigReceiver is an interface that can receive *filterapi.Config updates. This is mostly for decoupling and testing purposes.
type Processor ¶
type Processor interface {
// ProcessRequestHeaders processes the request headers message.
ProcessRequestHeaders(context.Context, *corev3.HeaderMap) (*extprocv3.ProcessingResponse, error)
// ProcessRequestBody processes the request body message.
ProcessRequestBody(context.Context, *extprocv3.HttpBody) (*extprocv3.ProcessingResponse, error)
// ProcessResponseHeaders processes the response headers message.
ProcessResponseHeaders(context.Context, *corev3.HeaderMap) (*extprocv3.ProcessingResponse, error)
// ProcessResponseBody processes the response body message.
ProcessResponseBody(context.Context, *extprocv3.HttpBody) (*extprocv3.ProcessingResponse, error)
// SetBackend instructs the processor to set the backend to use for the request. This is only called
// when the processor is used in the upstream filter.
//
// routerProcessor is the processor that is the "parent" which was used to determine the route at the
// router level. It holds the additional state that can be used to determine the backend to use.
SetBackend(ctx context.Context, backend *filterapi.Backend, handler backendauth.Handler, routerProcessor Processor) error
}
Processor is the interface for the processor which corresponds to a single gRPC stream per the external processor filter. This decouples the processor implementation detail from the server implementation.
This can be either a router filter level processor or an upstream filter level processor.
type ProcessorFactory ¶
type ProcessorFactory func(_ *processorConfig, _ map[string]string, _ *slog.Logger, _ tracing.Tracing, isUpstreamFilter bool) (Processor, error)
ProcessorFactory is the factory function used to create new instances of a processor.
func ChatCompletionProcessorFactory ¶ added in v0.1.3
func ChatCompletionProcessorFactory(ccm metrics.ChatCompletionMetrics) ProcessorFactory
ChatCompletionProcessorFactory returns a factory method to instantiate the chat completion processor.
func EmbeddingsProcessorFactory ¶ added in v0.3.0
func EmbeddingsProcessorFactory(em metrics.EmbeddingsMetrics) ProcessorFactory
EmbeddingsProcessorFactory returns a factory method to instantiate the embeddings processor.
func MessagesProcessorFactory ¶ added in v0.3.0
func MessagesProcessorFactory(ccm metrics.ChatCompletionMetrics) ProcessorFactory
MessagesProcessorFactory returns a factory for the Anthropic /v1/messages endpoint.
Requests: Only accepts Anthropic format requests. Responses: Returns Anthropic format responses.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server implements the external processor server.
func (*Server) Check ¶
func (s *Server) Check(context.Context, *grpc_health_v1.HealthCheckRequest) (*grpc_health_v1.HealthCheckResponse, error)
Check implements grpc_health_v1.HealthServer.
func (*Server) List ¶ added in v0.2.0
func (s *Server) List(context.Context, *grpc_health_v1.HealthListRequest) (*grpc_health_v1.HealthListResponse, error)
List implements grpc_health_v1.HealthServer.
func (*Server) LoadConfig ¶
LoadConfig updates the configuration of the external processor.
func (*Server) Process ¶
func (s *Server) Process(stream extprocv3.ExternalProcessor_ProcessServer) error
Process implements extprocv3.ExternalProcessorServer.
func (*Server) Register ¶
func (s *Server) Register(path string, newProcessor ProcessorFactory)
Register a new processor for the given request path.
func (*Server) Watch ¶
func (s *Server) Watch(*grpc_health_v1.HealthCheckRequest, grpc_health_v1.Health_WatchServer) error
Watch implements grpc_health_v1.HealthServer.