mirror of
https://gitcode.com/JianFeeeee/ModelRouter.git
synced 2026-09-21 09:28:00 +00:00
fix(gateway): record actual served model for image requests
handleImage recorded the raw request model id, so AUTO image generations showed up as model=AUTO in the request records and by-model aggregates instead of the image model actually served (e.g. Kwai-Kolors/Kolors). UnifiedResponse gains an optional Model field; Provider.Image fills it with the resolved id (AUTO resolves to the source's best image model), and handleImage prefers it when writing the audit record.
This commit is contained in:
@ -932,6 +932,9 @@ func (g *Gateway) handleImage(w http.ResponseWriter, r *http.Request) {
|
|||||||
if usedSrc != "" {
|
if usedSrc != "" {
|
||||||
rec.Source = usedSrc
|
rec.Source = usedSrc
|
||||||
}
|
}
|
||||||
|
if resp.Model != "" {
|
||||||
|
rec.Model = resp.Model // record the actual model served, not the raw request id
|
||||||
|
}
|
||||||
rec.OK = true
|
rec.OK = true
|
||||||
rec.Status = http.StatusOK
|
rec.Status = http.StatusOK
|
||||||
rec.Compl = int64(len(resp.ImageData))
|
rec.Compl = int64(len(resp.ImageData))
|
||||||
|
|||||||
@ -988,6 +988,7 @@ func (p *Provider) Image(ctx context.Context, req *types.ImageGenRequest) (*type
|
|||||||
unified, terr := p.vm.Transform(p.adapter+"_image", "transform_response", raw)
|
unified, terr := p.vm.Transform(p.adapter+"_image", "transform_response", raw)
|
||||||
if terr == nil && unified != raw {
|
if terr == nil && unified != raw {
|
||||||
if err := json.Unmarshal([]byte(unified), &out); err == nil {
|
if err := json.Unmarshal([]byte(unified), &out); err == nil {
|
||||||
|
out.Model = model // actual model served (AUTO resolved to bestImageModel)
|
||||||
p.RecordSuccess(model)
|
p.RecordSuccess(model)
|
||||||
return &out, nil
|
return &out, nil
|
||||||
}
|
}
|
||||||
@ -1000,6 +1001,7 @@ func (p *Provider) Image(ctx context.Context, req *types.ImageGenRequest) (*type
|
|||||||
return nil, fmt.Errorf("unmarshal image response: %w", err)
|
return nil, fmt.Errorf("unmarshal image response: %w", err)
|
||||||
}
|
}
|
||||||
out.ImageData = img.Data
|
out.ImageData = img.Data
|
||||||
|
out.Model = model // actual model served (AUTO resolved to bestImageModel)
|
||||||
p.RecordSuccess(model)
|
p.RecordSuccess(model)
|
||||||
return &out, nil
|
return &out, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,6 +71,7 @@ type ToolCall struct {
|
|||||||
// ---- Unified internal representation (what adapters produce) ----
|
// ---- Unified internal representation (what adapters produce) ----
|
||||||
|
|
||||||
type UnifiedResponse struct {
|
type UnifiedResponse struct {
|
||||||
|
Model string `json:"model,omitempty"`
|
||||||
Content string `json:"content"`
|
Content string `json:"content"`
|
||||||
ReasoningContent string `json:"reasoning_content,omitempty"`
|
ReasoningContent string `json:"reasoning_content,omitempty"`
|
||||||
FinishReason string `json:"finish_reason,omitempty"`
|
FinishReason string `json:"finish_reason,omitempty"`
|
||||||
|
|||||||
Reference in New Issue
Block a user