Skip to content

Commit cc4d56f

Browse files
committed
observability support
Signed-off-by: JaredforReal <w13431838023@gmail.com>
1 parent 4031955 commit cc4d56f

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

src/semantic-router/pkg/extproc/request_handler.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,9 @@ func (r *OpenAIRouter) handleRequestHeaders(v *ext_proc.ProcessingRequest_Reques
339339
return r.createErrorResponse(404, "Responses API not enabled"), nil
340340
}
341341

342+
// Metrics: record that adapter is handling this request
343+
metrics.ResponsesAdapterRequests.WithLabelValues("false").Inc()
344+
342345
// Prepare header mutation to rewrite :path to legacy chat completions
343346
// Actual body mapping occurs in handleRequestBody
344347
newPath := strings.Replace(path, "/v1/responses", "/v1/chat/completions", 1)

src/semantic-router/pkg/extproc/response_handler.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ func (r *OpenAIRouter) handleResponseBody(v *ext_proc.ProcessingRequest_Response
213213
},
214214
},
215215
}
216+
metrics.ResponsesAdapterSSEEvents.WithLabelValues("response.completed").Inc()
216217
return response, nil
217218
}
218219

@@ -239,6 +240,13 @@ func (r *OpenAIRouter) handleResponseBody(v *ext_proc.ProcessingRequest_Response
239240
sb.WriteString("data: ")
240241
sb.Write(ev)
241242
sb.WriteString("\n\n")
243+
// Inspect the event type for metrics
244+
var et map[string]interface{}
245+
if err := json.Unmarshal(ev, &et); err == nil {
246+
if t, _ := et["type"].(string); t != "" {
247+
metrics.ResponsesAdapterSSEEvents.WithLabelValues(t).Inc()
248+
}
249+
}
242250
}
243251
v.ResponseBody.Body = []byte(sb.String())
244252
}

src/semantic-router/pkg/metrics/metrics.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,24 @@ var (
380380
},
381381
[]string{"fallback_reason", "fallback_strategy"},
382382
)
383+
384+
// ResponsesAdapterRequests counts requests handled via the Responses adapter
385+
ResponsesAdapterRequests = promauto.NewCounterVec(
386+
prometheus.CounterOpts{
387+
Name: "llm_responses_adapter_requests_total",
388+
Help: "Total number of /v1/responses requests handled by the adapter",
389+
},
390+
[]string{"streaming"},
391+
)
392+
393+
// ResponsesAdapterSSEEvents counts emitted Responses SSE events during translation
394+
ResponsesAdapterSSEEvents = promauto.NewCounterVec(
395+
prometheus.CounterOpts{
396+
Name: "llm_responses_adapter_sse_events_total",
397+
Help: "Total number of Responses SSE events emitted by the adapter",
398+
},
399+
[]string{"event_type"},
400+
)
383401
)
384402

385403
// RecordModelRequest increments the counter for requests to a specific model

0 commit comments

Comments
 (0)