@@ -32,7 +32,7 @@ type ProxyCall struct {
3232 Body []byte
3333}
3434
35- // Proxy runs a chat-completions request. The gateway authenticates, routes,
35+ // Proxy runs an inference request. The gateway authenticates, routes,
3636// validates, masks PII for keys that ask for it, reserves credit, and meters
3737// the usage it reads from the response; it never rebuilds the request or the
3838// response.
@@ -45,7 +45,13 @@ func (s *GenerateService) Proxy(ctx context.Context, endpoint string, raw []byte
4545 s .recordTerminalOutcome (metrics .OutcomeError , endpoint , req , nil , time .Since (start ).Milliseconds ())
4646 return nil , err
4747 }
48- model , execReq , err := s .resolveModel (ctx , req )
48+ var model domain.PublicModel
49+ execReq := req
50+ if endpoint == domain .EndpointSystemOne {
51+ model , err = s .catalog .GetPublicModel (ctx , req .PublicModelID )
52+ } else {
53+ model , execReq , err = s .resolveModel (ctx , req )
54+ }
4955 if err != nil {
5056 s .recordTerminalOutcome (metrics .OutcomeError , endpoint , req , nil , time .Since (start ).Milliseconds ())
5157 return nil , err
@@ -55,7 +61,7 @@ func (s *GenerateService) Proxy(ctx context.Context, endpoint string, raw []byte
5561 s .recordFailure (ctx , nil , & authCtx , endpoint , & execReq , & model , err , nil , time .Since (start ).Milliseconds ())
5662 return nil , err
5763 }
58- masked , mapping , err := s .maskBody (ctx , raw , authCtx .APIKey .PIIMode )
64+ masked , mapping , err := s .maskBody (ctx , raw , authCtx .APIKey .PIIMode , endpoint )
5965 if err != nil {
6066 s .recordTerminalOutcome (metrics .OutcomeError , endpoint , execReq , & model , time .Since (start ).Milliseconds ())
6167 s .recordFailure (ctx , nil , & authCtx , endpoint , & execReq , & model , err , nil , time .Since (start ).Milliseconds ())
@@ -76,6 +82,9 @@ func (s *GenerateService) Proxy(ctx context.Context, endpoint string, raw []byte
7682 }
7783
7884 attempt := func (target domain.PublicModel ) (* ProxyCall , error ) {
85+ if err := s .validateRequest (endpoint , execReq , target ); err != nil {
86+ return nil , err
87+ }
7988 provider , err := s .registry .GetProvider (target .ProviderConfig .ProviderName )
8089 if err != nil {
8190 return nil , domain .ErrProviderUnavailable (target .ProviderConfig .ProviderName )
@@ -87,7 +96,13 @@ func (s *GenerateService) Proxy(ctx context.Context, endpoint string, raw []byte
8796 if err != nil {
8897 return nil , err
8998 }
90- rewritten , o , err := observeJSON (body , target .PublicModelID , unmask (target ))
99+ var rewritten []byte
100+ var o outcome
101+ if endpoint == domain .EndpointSystemOne {
102+ rewritten , o , err = observeSystemOne (body , target .PublicModelID , unmask (target ))
103+ } else {
104+ rewritten , o , err = observeJSON (body , target .PublicModelID , unmask (target ))
105+ }
91106 if err != nil {
92107 return nil , err
93108 }
@@ -116,7 +131,8 @@ func (s *GenerateService) Proxy(ctx context.Context, endpoint string, raw []byte
116131
117132 call , err := attempt (model )
118133 executed := model
119- if err != nil && shouldTryFallback (ctx , err , model .Fallback ) {
134+ if err != nil && shouldTryFallback (ctx , err , model .Fallback ) &&
135+ withProviderTarget (model , * model .Fallback ).SupportsEndpoint (endpoint ) {
120136 executed = withProviderTarget (model , * model .Fallback )
121137 s .logFallback (requestID , model , executed , sanitizeErrorWithPIIMapping (err , mapping ))
122138 call , err = attempt (executed )
0 commit comments