Skip to content

Commit 6782315

Browse files
wip
1 parent 6bf73ca commit 6782315

4 files changed

Lines changed: 37 additions & 19 deletions

File tree

internal/message/handler.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -707,18 +707,6 @@ func (h *Handler) decorateEvent(m Message) error {
707707
}
708708
}
709709

710-
//if strings.HasPrefix(e.Event.Path, "/api/providers/openai/v1/responses") {
711-
// responsesReq, ok := e.Request.(*openai.ResponseRequest)
712-
// if !ok {
713-
// telemetry.Incr("bricksllm.message.handler.decorate_event.event_request_parsing_error", nil, 1)
714-
// h.log.Debug("event contains data that cannot be converted to responses api request", zap.Any("data", m.Data))
715-
// return errors.New("event request data cannot be parsed as responses api request")
716-
// }
717-
// if gopointer.ToValueOrDefault(responsesReq.Stream, false) {
718-
// fmt.Println("------------- estimating for responses api request --------------")
719-
// }
720-
//}
721-
722710
if e.Event.Path == "/api/providers/vllm/v1/chat/completions" {
723711
ccr, ok := e.Request.(*vllm.ChatRequest)
724712
if !ok {

internal/server/web/proxy/middleware.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -809,8 +809,7 @@ func getMiddleware(cpm CustomProvidersManager, rm routeManager, pm PoliciesManag
809809
enrichedEvent.Request = responsesReq
810810
c.Set("model", gopointer.ToValueOrDefault(responsesReq.Model, ""))
811811

812-
// TODO: log
813-
//logRequest(logWithCid, prod, private, responsesReq)
812+
logResponsesRequest(logWithCid, prod, private, responsesReq)
814813

815814
if gopointer.ToValueOrDefault(responsesReq.Stream, false) {
816815
c.Set("stream", true)

internal/server/web/proxy/proxy.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@ import (
1717
"github.com/bricks-cloud/bricksllm/internal/policy"
1818
"github.com/bricks-cloud/bricksllm/internal/provider"
1919
"github.com/bricks-cloud/bricksllm/internal/provider/custom"
20+
"github.com/bricks-cloud/bricksllm/internal/provider/openai"
2021
"github.com/bricks-cloud/bricksllm/internal/telemetry"
2122
"github.com/bricks-cloud/bricksllm/internal/util"
2223
"github.com/gin-gonic/gin"
24+
responsesOpenai "github.com/openai/openai-go/responses"
2325
goopenai "github.com/sashabaranov/go-openai"
26+
gopointer "github.com/sergei-bronnikov/go-pointer"
2427
"go.uber.org/zap"
2528
"go.uber.org/zap/zapcore"
2629
)
@@ -1344,6 +1347,38 @@ func logRequest(log *zap.Logger, prod, private bool, r *goopenai.ChatCompletionR
13441347
}
13451348
}
13461349

1350+
func logResponsesRequest(log *zap.Logger, prod, private bool, r *openai.ResponseRequest) {
1351+
if prod {
1352+
fields := []zapcore.Field{
1353+
zap.Time("createdAt", time.Now()),
1354+
zap.String("model", gopointer.ToValueOrDefault(r.Model, "unknown")),
1355+
zap.Bool("stream", gopointer.ToValueOrDefault(r.Stream, false)),
1356+
}
1357+
1358+
if !private {
1359+
fields = append(fields, zap.Any("input", r.Input))
1360+
}
1361+
1362+
log.Info("openai responses request", fields...)
1363+
}
1364+
}
1365+
1366+
func logResponsesResponse(log *zap.Logger, prod, private bool, r *responsesOpenai.Response) {
1367+
if prod {
1368+
fields := []zapcore.Field{
1369+
zap.Time("createdAt", time.Now()),
1370+
zap.String("model", r.Model),
1371+
zap.String("id", r.ID),
1372+
}
1373+
1374+
if !private {
1375+
fields = append(fields, zap.Any("output", r.OutputText()))
1376+
}
1377+
1378+
log.Info("openai responses request", fields...)
1379+
}
1380+
}
1381+
13471382
func logOpenAiError(log *zap.Logger, prod bool, errRes *goopenai.ErrorResponse) {
13481383
if prod {
13491384
log.Info("openai error response", zap.Any("error", errRes))

internal/server/web/proxy/responses.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ func getResponsesHandler(prod, private bool, client http.Client, e estimator) gi
4343

4444
copyHttpHeaders(c.Request, req, c.GetBool("removeUserAgent"))
4545

46-
// TODO
4746
isStreaming := c.GetBool("stream")
4847
if isStreaming {
4948
req.Header.Set("Accept", "text/event-stream")
@@ -91,17 +90,14 @@ func getResponsesHandler(prod, private bool, client http.Client, e estimator) gi
9190
if err != nil {
9291
logError(log, "error when unmarshalling openai http response api response body", prod, err)
9392
}
94-
// TODO: implement non-streaming logic here
9593

9694
if err == nil {
97-
// TODO log
98-
//logChatCompletionResponse(log, prod, private, chatRes)
95+
logResponsesResponse(log, prod, private, resp)
9996
cost, err = e.EstimateResponseApiTotalCost(model, resp.Usage)
10097
if err != nil {
10198
telemetry.Incr("bricksllm.proxy.get_chat_completion_handler.estimate_total_cost_error", nil, 1)
10299
logError(log, "error when estimating openai cost", prod, err)
103100
}
104-
//m, exists := c.Get("cost_map")
105101
}
106102

107103
c.Set("costInUsd", cost)

0 commit comments

Comments
 (0)