Documentation
¶
Index ¶
- func ParseTransformerConfig(input interface{}) ([]config.TransformerConfig, error)
- func RegisterBuiltinTransformers(service *Service) error
- func StreamPipe(reader StreamReader, writer StreamWriter, ...) error
- type AnthropicTransformer
- type BaseTransformer
- func (t *BaseTransformer) GetEndpoint() string
- func (t *BaseTransformer) GetName() string
- func (t *BaseTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
- func (t *BaseTransformer) TransformRequestOut(ctx context.Context, request interface{}) (interface{}, error)
- func (t *BaseTransformer) TransformResponseIn(ctx context.Context, response *http.Response) (*http.Response, error)
- func (t *BaseTransformer) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
- type DeepSeekTransformer
- type GeminiTransformer
- func (t *GeminiTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
- func (t *GeminiTransformer) TransformRequestOut(ctx context.Context, request interface{}) (interface{}, error)
- func (t *GeminiTransformer) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
- type MaxTokenTransformer
- func (t *MaxTokenTransformer) GetProviderLimit(provider string) int
- func (t *MaxTokenTransformer) SetProviderLimit(provider string, limit int)
- func (t *MaxTokenTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
- func (t *MaxTokenTransformer) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
- type OpenAITransformer
- type OpenRouterTransformer
- type ParametersTransformer
- func (t *ParametersTransformer) SetParameterLimit(provider, parameter string, min, max float64)
- func (t *ParametersTransformer) SetParameterMapping(provider, original, mapped string)
- func (t *ParametersTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
- type Range
- type RequestConfig
- type Response
- type SSEEvent
- type SSEReader
- type SSEWriter
- type Service
- func (s *Service) ApplyRequestTransformation(ctx context.Context, provider *config.Provider, request interface{}) (interface{}, error)
- func (s *Service) ApplyResponseTransformation(ctx context.Context, provider *config.Provider, response interface{}) (interface{}, error)
- func (s *Service) CreateChain(configs []config.TransformerConfig) (*TransformerChain, error)
- func (s *Service) CreateChainFromNames(names []string) (*TransformerChain, error)
- func (s *Service) Get(name string) (Transformer, error)
- func (s *Service) GetByEndpoint(endpoint string) []Transformer
- func (s *Service) GetChainForProvider(providerName string) *TransformerChain
- func (s *Service) GetOrCreateChain(provider *config.Provider) (*TransformerChain, error)
- func (s *Service) Register(transformer Transformer) error
- func (s *Service) TransformRequest(ctx context.Context, transformerName string, req *http.Request, body []byte) ([]byte, map[string]string, error)
- type StreamReader
- type StreamTransformer
- type StreamWriter
- type ToolTransformer
- func (t *ToolTransformer) CreateToolResultMessage(results []tools.ToolResult) interface{}
- func (t *ToolTransformer) ExtractToolCalls(message interface{}) ([]tools.ToolUse, error)
- func (t *ToolTransformer) TransformRequest(ctx context.Context, provider *config.Provider, request interface{}) (interface{}, error)
- func (t *ToolTransformer) TransformResponse(ctx context.Context, provider *config.Provider, response interface{}) (interface{}, error)
- func (t *ToolTransformer) TransformSSEEvent(ctx context.Context, provider *config.Provider, event string) (string, error)
- type ToolUseTransformer
- type Transformer
- type TransformerChain
- func (c *TransformerChain) Add(transformer Transformer)
- func (c *TransformerChain) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
- func (c *TransformerChain) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
- func (c *TransformerChain) TransformSSEEvent(ctx context.Context, event *SSEEvent, provider string) (*SSEEvent, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ParseTransformerConfig ¶
func ParseTransformerConfig(input interface{}) ([]config.TransformerConfig, error)
ParseTransformerConfig parses transformer configuration from various formats
func RegisterBuiltinTransformers ¶
RegisterBuiltinTransformers registers all built-in transformers
func StreamPipe ¶
func StreamPipe(reader StreamReader, writer StreamWriter, transform func(*SSEEvent) (*SSEEvent, error)) error
StreamPipe pipes data from reader to writer with optional transformation
Types ¶
type AnthropicTransformer ¶
type AnthropicTransformer struct {
BaseTransformer
}
AnthropicTransformer converts between OpenAI and Anthropic message formats
func NewAnthropicTransformer ¶
func NewAnthropicTransformer() *AnthropicTransformer
NewAnthropicTransformer creates a new Anthropic transformer
func (*AnthropicTransformer) TransformRequestIn ¶
func (t *AnthropicTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
TransformRequestIn transforms OpenAI format to Anthropic format
func (*AnthropicTransformer) TransformResponseOut ¶
func (t *AnthropicTransformer) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
TransformResponseOut transforms Anthropic streaming response to OpenAI format
type BaseTransformer ¶
type BaseTransformer struct {
// contains filtered or unexported fields
}
BaseTransformer provides default implementations
func NewBaseTransformer ¶
func NewBaseTransformer(name string, endpoint string) *BaseTransformer
NewBaseTransformer creates a new base transformer
func (*BaseTransformer) GetEndpoint ¶
func (t *BaseTransformer) GetEndpoint() string
func (*BaseTransformer) GetName ¶
func (t *BaseTransformer) GetName() string
func (*BaseTransformer) TransformRequestIn ¶
func (t *BaseTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
func (*BaseTransformer) TransformRequestOut ¶
func (t *BaseTransformer) TransformRequestOut(ctx context.Context, request interface{}) (interface{}, error)
func (*BaseTransformer) TransformResponseIn ¶
func (*BaseTransformer) TransformResponseOut ¶
type DeepSeekTransformer ¶
type DeepSeekTransformer struct {
BaseTransformer
}
DeepSeekTransformer handles DeepSeek-specific transformations
func NewDeepSeekTransformer ¶
func NewDeepSeekTransformer() *DeepSeekTransformer
NewDeepSeekTransformer creates a new DeepSeek transformer
func (*DeepSeekTransformer) TransformRequestIn ¶
func (t *DeepSeekTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
TransformRequestIn transforms the request for DeepSeek
func (*DeepSeekTransformer) TransformResponseOut ¶
func (t *DeepSeekTransformer) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
TransformResponseOut transforms DeepSeek streaming response
type GeminiTransformer ¶
type GeminiTransformer struct {
BaseTransformer
}
GeminiTransformer handles Google Gemini-specific transformations
func NewGeminiTransformer ¶
func NewGeminiTransformer() *GeminiTransformer
NewGeminiTransformer creates a new Gemini transformer
func (*GeminiTransformer) TransformRequestIn ¶
func (t *GeminiTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
TransformRequestIn transforms OpenAI format to Gemini format
func (*GeminiTransformer) TransformRequestOut ¶
func (t *GeminiTransformer) TransformRequestOut(ctx context.Context, request interface{}) (interface{}, error)
TransformRequestOut modifies the outgoing HTTP request
func (*GeminiTransformer) TransformResponseOut ¶
func (t *GeminiTransformer) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
TransformResponseOut transforms Gemini response to OpenAI format
type MaxTokenTransformer ¶
type MaxTokenTransformer struct {
*BaseTransformer
// contains filtered or unexported fields
}
MaxTokenTransformer handles max_tokens parameter across different providers
func NewMaxTokenTransformer ¶
func NewMaxTokenTransformer() *MaxTokenTransformer
NewMaxTokenTransformer creates a new MaxToken transformer
func (*MaxTokenTransformer) GetProviderLimit ¶
func (t *MaxTokenTransformer) GetProviderLimit(provider string) int
GetProviderLimit returns the token limit for a provider
func (*MaxTokenTransformer) SetProviderLimit ¶
func (t *MaxTokenTransformer) SetProviderLimit(provider string, limit int)
SetProviderLimit sets the token limit for a provider
func (*MaxTokenTransformer) TransformRequestIn ¶
func (t *MaxTokenTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
TransformRequestIn ensures max_tokens is within provider limits
func (*MaxTokenTransformer) TransformResponseOut ¶
func (t *MaxTokenTransformer) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
TransformResponseOut adds token usage information if available
type OpenAITransformer ¶
type OpenAITransformer struct {
BaseTransformer
}
OpenAITransformer is a minimal transformer for OpenAI API It primarily serves to define the endpoint, as OpenAI's format is already the standard that other transformers convert to/from
func NewOpenAITransformer ¶
func NewOpenAITransformer() *OpenAITransformer
NewOpenAITransformer creates a new OpenAI transformer
type OpenRouterTransformer ¶
type OpenRouterTransformer struct {
BaseTransformer
}
OpenRouterTransformer handles OpenRouter-specific transformations
func NewOpenRouterTransformer ¶
func NewOpenRouterTransformer() *OpenRouterTransformer
NewOpenRouterTransformer creates a new OpenRouter transformer
func (*OpenRouterTransformer) TransformResponseOut ¶
func (t *OpenRouterTransformer) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
TransformResponseOut transforms OpenRouter streaming response
type ParametersTransformer ¶
type ParametersTransformer struct {
*BaseTransformer
// contains filtered or unexported fields
}
ParametersTransformer handles common parameters across different providers
func NewParametersTransformer ¶
func NewParametersTransformer() *ParametersTransformer
NewParametersTransformer creates a new Parameters transformer
func (*ParametersTransformer) SetParameterLimit ¶
func (t *ParametersTransformer) SetParameterLimit(provider, parameter string, min, max float64)
SetParameterLimit sets a parameter limit for a provider
func (*ParametersTransformer) SetParameterMapping ¶
func (t *ParametersTransformer) SetParameterMapping(provider, original, mapped string)
SetParameterMapping sets a custom parameter mapping for a provider
func (*ParametersTransformer) TransformRequestIn ¶
func (t *ParametersTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
TransformRequestIn validates and maps parameters for the provider
type RequestConfig ¶
type RequestConfig struct {
Body interface{} `json:"body"`
URL string `json:"url,omitempty"`
Headers map[string]string `json:"headers,omitempty"`
Method string `json:"method,omitempty"`
Timeout int `json:"timeout,omitempty"`
}
RequestConfig allows transformers to modify HTTP request configuration
type SSEEvent ¶
type SSEEvent struct {
Event string `json:"event,omitempty"`
Data string `json:"data"`
ID string `json:"id,omitempty"`
Retry int `json:"retry,omitempty"`
}
SSEEvent represents a Server-Sent Event
type SSEReader ¶
type SSEReader struct {
// contains filtered or unexported fields
}
SSEReader implements StreamReader for Server-Sent Events
func NewSSEReader ¶
func NewSSEReader(r io.ReadCloser) *SSEReader
NewSSEReader creates a new SSE reader
type SSEWriter ¶
type SSEWriter struct {
// contains filtered or unexported fields
}
SSEWriter implements StreamWriter for Server-Sent Events
func (*SSEWriter) WriteEvent ¶
WriteEvent writes an SSE event
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service manages transformers and their lifecycle
func (*Service) ApplyRequestTransformation ¶
func (s *Service) ApplyRequestTransformation(ctx context.Context, provider *config.Provider, request interface{}) (interface{}, error)
ApplyRequestTransformation applies request transformations for a provider
func (*Service) ApplyResponseTransformation ¶
func (s *Service) ApplyResponseTransformation(ctx context.Context, provider *config.Provider, response interface{}) (interface{}, error)
ApplyResponseTransformation applies response transformations for a provider
func (*Service) CreateChain ¶
func (s *Service) CreateChain(configs []config.TransformerConfig) (*TransformerChain, error)
CreateChain creates a transformer chain from configuration
func (*Service) CreateChainFromNames ¶
func (s *Service) CreateChainFromNames(names []string) (*TransformerChain, error)
CreateChainFromNames creates a transformer chain from transformer names
func (*Service) Get ¶
func (s *Service) Get(name string) (Transformer, error)
Get retrieves a transformer by name
func (*Service) GetByEndpoint ¶
func (s *Service) GetByEndpoint(endpoint string) []Transformer
GetByEndpoint retrieves transformers that handle a specific endpoint
func (*Service) GetChainForProvider ¶
func (s *Service) GetChainForProvider(providerName string) *TransformerChain
GetChainForProvider gets the transformer chain for a provider by name
func (*Service) GetOrCreateChain ¶
func (s *Service) GetOrCreateChain(provider *config.Provider) (*TransformerChain, error)
GetOrCreateChain gets or creates a transformer chain for a provider
func (*Service) Register ¶
func (s *Service) Register(transformer Transformer) error
Register registers a transformer
type StreamReader ¶
type StreamReader interface {
// ReadEvent reads the next SSE event from the stream
ReadEvent() (*SSEEvent, error)
// Close closes the stream reader
Close() error
}
StreamReader provides methods to read from a stream
type StreamTransformer ¶
type StreamTransformer interface {
Transformer
// TransformStream handles streaming response transformation
TransformStream(ctx context.Context, reader StreamReader, writer StreamWriter) error
}
StreamTransformer defines additional methods for streaming transformers
type StreamWriter ¶
type StreamWriter interface {
// WriteEvent writes an SSE event to the stream
WriteEvent(event *SSEEvent) error
// Flush flushes any buffered data
Flush() error
// Close closes the stream writer
Close() error
}
StreamWriter provides methods to write to a stream
type ToolTransformer ¶
type ToolTransformer struct {
BaseTransformer
// contains filtered or unexported fields
}
ToolTransformer handles tool-related transformations
func NewToolTransformer ¶
func NewToolTransformer() *ToolTransformer
NewToolTransformer creates a new tool transformer
func (*ToolTransformer) CreateToolResultMessage ¶
func (t *ToolTransformer) CreateToolResultMessage(results []tools.ToolResult) interface{}
CreateToolResultMessage creates a tool result message
func (*ToolTransformer) ExtractToolCalls ¶
func (t *ToolTransformer) ExtractToolCalls(message interface{}) ([]tools.ToolUse, error)
ExtractToolCalls extracts tool calls from a response message
func (*ToolTransformer) TransformRequest ¶
func (t *ToolTransformer) TransformRequest(ctx context.Context, provider *config.Provider, request interface{}) (interface{}, error)
TransformRequest transforms tool definitions in the request
func (*ToolTransformer) TransformResponse ¶
func (t *ToolTransformer) TransformResponse(ctx context.Context, provider *config.Provider, response interface{}) (interface{}, error)
TransformResponse processes tool use in responses
func (*ToolTransformer) TransformSSEEvent ¶
func (t *ToolTransformer) TransformSSEEvent(ctx context.Context, provider *config.Provider, event string) (string, error)
TransformSSEEvent transforms tool use in SSE events
type ToolUseTransformer ¶
type ToolUseTransformer struct {
BaseTransformer
}
ToolUseTransformer handles tool mode transformations
func NewToolUseTransformer ¶
func NewToolUseTransformer() *ToolUseTransformer
NewToolUseTransformer creates a new ToolUse transformer
func (*ToolUseTransformer) TransformRequestIn ¶
func (t *ToolUseTransformer) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
TransformRequestIn adds ExitTool and enforces tool usage
func (*ToolUseTransformer) TransformResponseOut ¶
func (t *ToolUseTransformer) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
TransformResponseOut intercepts ExitTool calls and converts to content
type Transformer ¶
type Transformer interface {
// GetName returns the transformer name
GetName() string
// GetEndpoint returns the endpoint this transformer handles (optional)
GetEndpoint() string
// TransformRequestIn transforms an incoming unified request to provider-specific format
// Can return just the body, or RequestConfig with additional HTTP configuration
TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
// TransformRequestOut transforms a provider-specific request to unified format
TransformRequestOut(ctx context.Context, request interface{}) (interface{}, error)
// TransformResponseIn transforms a provider response to internal format
TransformResponseIn(ctx context.Context, response *http.Response) (*http.Response, error)
// TransformResponseOut transforms an internal response to client format
TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
}
Transformer defines the interface for request/response transformations
type TransformerChain ¶
type TransformerChain struct {
// contains filtered or unexported fields
}
TransformerChain represents a chain of transformers
func NewTransformerChain ¶
func NewTransformerChain(transformers ...Transformer) *TransformerChain
NewTransformerChain creates a new transformer chain
func (*TransformerChain) Add ¶
func (c *TransformerChain) Add(transformer Transformer)
Add adds a transformer to the chain
func (*TransformerChain) TransformRequestIn ¶
func (c *TransformerChain) TransformRequestIn(ctx context.Context, request interface{}, provider string) (interface{}, error)
TransformRequestIn applies all transformers' TransformRequestIn in order
func (*TransformerChain) TransformResponseOut ¶
func (c *TransformerChain) TransformResponseOut(ctx context.Context, response *http.Response) (*http.Response, error)
TransformResponseOut applies all transformers' TransformResponseOut in reverse order
func (*TransformerChain) TransformSSEEvent ¶
func (c *TransformerChain) TransformSSEEvent(ctx context.Context, event *SSEEvent, provider string) (*SSEEvent, error)
TransformSSEEvent transforms an SSE event through the chain