Documentation
¶
Index ¶
- Constants
- func AsActor(ctx context.Context, actorID string, metadata recorder.Metadata) context.Context
- func NewAnthropicProvider(cfg config.Anthropic, bedrockCfg *config.AWSBedrock) provider.Provider
- func NewCopilotProvider(cfg config.Copilot) provider.Provider
- func NewMetrics(reg prometheus.Registerer) *metrics.Metrics
- func NewOpenAIProvider(cfg config.OpenAI) provider.Provider
- type AWSBedrockConfig
- type AnthropicConfig
- type CopilotConfig
- type InterceptionRecord
- type InterceptionRecordEnded
- type Metadata
- type Metrics
- type OpenAIConfig
- type PromptUsageRecord
- type Provider
- type Recorder
- type RequestBridge
- type SSEEvent
- type SSEParser
- type TokenUsageRecord
- type ToolUsageRecord
Constants ¶
const ( ProviderAnthropic = config.ProviderAnthropic ProviderOpenAI = config.ProviderOpenAI ProviderCopilot = config.ProviderCopilot )
Const + Type + function aliases for backwards compatibility.
const ( SSEEventTypeMessage = "message" SSEEventTypeError = "error" SSEEventTypePing = "ping" )
Variables ¶
This section is empty.
Functions ¶
func NewAnthropicProvider ¶
func NewCopilotProvider ¶ added in v1.0.0
func NewMetrics ¶ added in v0.2.0
func NewMetrics(reg prometheus.Registerer) *metrics.Metrics
Types ¶
type AWSBedrockConfig ¶ added in v0.1.6
type AWSBedrockConfig = config.AWSBedrock
type AnthropicConfig ¶ added in v0.1.6
type CopilotConfig ¶ added in v1.0.0
type InterceptionRecord ¶
type InterceptionRecord = recorder.InterceptionRecord
type InterceptionRecordEnded ¶ added in v0.1.5
type InterceptionRecordEnded = recorder.InterceptionRecordEnded
type OpenAIConfig ¶ added in v0.1.6
type PromptUsageRecord ¶
type PromptUsageRecord = recorder.PromptUsageRecord
type RequestBridge ¶
type RequestBridge struct {
// contains filtered or unexported fields
}
RequestBridge is an http.Handler which is capable of masquerading as AI providers' APIs; specifically, OpenAI's & Anthropic's at present. RequestBridge intercepts requests to - and responses from - these upstream services to provide a centralized governance layer.
RequestBridge has no concept of authentication or authorization. It does have a concept of identity, in the narrow sense that it expects an [actor] to be defined in the context, to record the initiator of each interception.
RequestBridge is safe for concurrent use.
func NewRequestBridge ¶
func NewRequestBridge(ctx context.Context, providers []provider.Provider, rec recorder.Recorder, mcpProxy mcp.ServerProxier, logger slog.Logger, m *metrics.Metrics, tracer trace.Tracer) (*RequestBridge, error)
NewRequestBridge creates a new *RequestBridge and registers the HTTP routes defined by the given providers. Any routes which are requested but not registered will be reverse-proxied to the upstream service.
A [intercept.Recorder] is also required to record prompt, tool, and token use.
mcpProxy will be closed when the RequestBridge is closed.
Circuit breaker configuration is obtained from each provider's CircuitBreakerConfig() method. Providers returning nil will not have circuit breaker protection.
func (*RequestBridge) InflightRequests ¶
func (b *RequestBridge) InflightRequests() int32
func (*RequestBridge) ServeHTTP ¶
func (b *RequestBridge) ServeHTTP(rw http.ResponseWriter, r *http.Request)
ServeHTTP exposes the internal http.Handler, which has all [Provider]s' routes registered. It also tracks inflight requests.
type SSEParser ¶
type SSEParser struct {
// contains filtered or unexported fields
}
func NewSSEParser ¶
func NewSSEParser() *SSEParser
func (*SSEParser) EventsByType ¶
func (*SSEParser) MessageEvents ¶
type TokenUsageRecord ¶
type TokenUsageRecord = recorder.TokenUsageRecord
type ToolUsageRecord ¶
type ToolUsageRecord = recorder.ToolUsageRecord
Directories
¶
| Path | Synopsis |
|---|---|
|
internal
|
|
|
Package mcpmock is a generated GoMock package.
|
Package mcpmock is a generated GoMock package. |
