History

fix(kimi): reduce redundant payload cloning and simplify translation calls

Luis Pater committed 9 months agov6.8.3

Commit 78ef04f1 parent b7e4f001 file · +9 −7Browse files

Unified · Split

internal/runtime/executor/kimi_executor.go+9−7
@@ -79,10 +79,11 @@ func (e *KimiExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req · 78 unmodified lines
79 defer reporter.trackFailure(ctx, &err)79 defer reporter.trackFailure(ctx, &err)
80 80
81 to := sdktranslator.FromString("openai")81 to := sdktranslator.FromString("openai")
82 originalPayload := bytes.Clone(req.Payload)82 originalPayloadSource := req.Payload
83 if len(opts.OriginalRequest) > 0 {83 if len(opts.OriginalRequest) > 0 {
84 originalPayload = bytes.Clone(opts.OriginalRequest)84 originalPayloadSource = opts.OriginalRequest
85 }85 }
86 originalPayload := bytes.Clone(originalPayloadSource)
86 originalTranslated := sdktranslator.TranslateRequest(from, to, baseModel, originalPayload, false)87 originalTranslated := sdktranslator.TranslateRequest(from, to, baseModel, originalPayload, false)
87 body := sdktranslator.TranslateRequest(from, to, baseModel, bytes.Clone(req.Payload), false)88 body := sdktranslator.TranslateRequest(from, to, baseModel, bytes.Clone(req.Payload), false)
88 89
@@ -154,7 +155,7 @@ func (e *KimiExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req · 65 unmodified lines
154 var param any155 var param any
155 // Note: TranslateNonStream uses req.Model (original with suffix) to preserve156 // Note: TranslateNonStream uses req.Model (original with suffix) to preserve
156 // the original model name in the response for client compatibility.157 // the original model name in the response for client compatibility.
157 out := sdktranslator.TranslateNonStream(ctx, to, from, req.Model, bytes.Clone(opts.OriginalRequest), body, data, &param)158 out := sdktranslator.TranslateNonStream(ctx, to, from, req.Model, opts.OriginalRequest, body, data, &param)
158 resp = cliproxyexecutor.Response{Payload: []byte(out)}159 resp = cliproxyexecutor.Response{Payload: []byte(out)}
159 return resp, nil160 return resp, nil
160}161}
@@ -174,10 +175,11 @@ func (e *KimiExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Aut · 13 unmodified lines
174 defer reporter.trackFailure(ctx, &err)175 defer reporter.trackFailure(ctx, &err)
175 176
176 to := sdktranslator.FromString("openai")177 to := sdktranslator.FromString("openai")
177 originalPayload := bytes.Clone(req.Payload)178 originalPayloadSource := req.Payload
178 if len(opts.OriginalRequest) > 0 {179 if len(opts.OriginalRequest) > 0 {
179 originalPayload = bytes.Clone(opts.OriginalRequest)180 originalPayloadSource = opts.OriginalRequest
180 }181 }
182 originalPayload := bytes.Clone(originalPayloadSource)
181 originalTranslated := sdktranslator.TranslateRequest(from, to, baseModel, originalPayload, true)183 originalTranslated := sdktranslator.TranslateRequest(from, to, baseModel, originalPayload, true)
182 body := sdktranslator.TranslateRequest(from, to, baseModel, bytes.Clone(req.Payload), true)184 body := sdktranslator.TranslateRequest(from, to, baseModel, bytes.Clone(req.Payload), true)
183 185
@@ -259,12 +261,12 @@ func (e *KimiExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Aut · 75 unmodified lines
259 if detail, ok := parseOpenAIStreamUsage(line); ok {261 if detail, ok := parseOpenAIStreamUsage(line); ok {
260 reporter.publish(ctx, detail)262 reporter.publish(ctx, detail)
261 }263 }
262 chunks := sdktranslator.TranslateStream(ctx, to, from, req.Model, bytes.Clone(opts.OriginalRequest), body, bytes.Clone(line), &param)264 chunks := sdktranslator.TranslateStream(ctx, to, from, req.Model, opts.OriginalRequest, body, bytes.Clone(line), &param)
263 for i := range chunks {265 for i := range chunks {
264 out <- cliproxyexecutor.StreamChunk{Payload: []byte(chunks[i])}266 out <- cliproxyexecutor.StreamChunk{Payload: []byte(chunks[i])}
265 }267 }
266 }268 }
267 doneChunks := sdktranslator.TranslateStream(ctx, to, from, req.Model, bytes.Clone(opts.OriginalRequest), body, bytes.Clone([]byte("[DONE]")), &param)269 doneChunks := sdktranslator.TranslateStream(ctx, to, from, req.Model, opts.OriginalRequest, body, []byte("[DONE]"), &param)
268 for i := range doneChunks {270 for i := range doneChunks {
269 out <- cliproxyexecutor.StreamChunk{Payload: []byte(doneChunks[i])}271 out <- cliproxyexecutor.StreamChunk{Payload: []byte(doneChunks[i])}
270 }272 }