added effective model id for routed responses
This commit is contained in:
@@ -764,6 +764,7 @@ type Usage struct {
|
||||
CachedTokens int `json:"cached_tokens"`
|
||||
} `json:"prompt_tokens_details"`
|
||||
CachedTokens int `json:"cached_tokens"`
|
||||
Model string `json:"-"`
|
||||
}
|
||||
|
||||
func (u Usage) Cached() int {
|
||||
@@ -799,12 +800,19 @@ func formatUsage(u Usage, cw int) string {
|
||||
if cached > 0 {
|
||||
uncached := u.PromptTokens - cached
|
||||
if uncached < 0 { uncached = 0 }
|
||||
return fmt.Sprintf("[tokens: %d prompt (%d cached, %d uncached) + %d completion | context: %d/%d (%.1f%%)]", u.PromptTokens, cached, uncached, u.CompletionTokens, u.PromptTokens, cw, pct)
|
||||
if u.Model != "" {
|
||||
return fmt.Sprintf("[%s: %d prompt (%d cached, %d uncached) + %d completion | context: %d/%d (%.1f%%)]", u.Model, u.PromptTokens, cached, uncached, u.CompletionTokens, u.PromptTokens, cw, pct)
|
||||
}
|
||||
return fmt.Sprintf("[%d prompt (%d cached, %d uncached) + %d completion | context: %d/%d (%.1f%%)]", u.PromptTokens, cached, uncached, u.CompletionTokens, u.PromptTokens, cw, pct)
|
||||
}
|
||||
return fmt.Sprintf("[tokens: %d prompt + %d completion | context: %d/%d (%.1f%%)]", u.PromptTokens, u.CompletionTokens, u.PromptTokens, cw, pct)
|
||||
if u.Model != "" {
|
||||
return fmt.Sprintf("[%s: %d prompt + %d completion | context: %d/%d (%.1f%%)]", u.Model, u.PromptTokens, u.CompletionTokens, u.PromptTokens, cw, pct)
|
||||
}
|
||||
return fmt.Sprintf("[%d prompt + %d completion | context: %d/%d (%.1f%%)]", u.PromptTokens, u.CompletionTokens, u.PromptTokens, cw, pct)
|
||||
}
|
||||
|
||||
type streamDelta struct {
|
||||
Model string `json:"model"`
|
||||
Choices []struct {
|
||||
Delta struct {
|
||||
ReasoningContent string `json:"reasoning_content"`
|
||||
@@ -946,6 +954,7 @@ func llm(ctx context.Context, cfg *Cfg, msgs []Message, tools []map[string]any)
|
||||
if COL { fmt.Print("\r\033[K") }
|
||||
if !cfg.Stream {
|
||||
var cr struct {
|
||||
Model string `json:"model"`
|
||||
Choices []struct {
|
||||
Message struct {
|
||||
Message
|
||||
@@ -964,6 +973,7 @@ func llm(ctx context.Context, cfg *Cfg, msgs []Message, tools []map[string]any)
|
||||
if m.ReasoningContent == "" { m.ReasoningContent = cr.Choices[0].Message.Reasoning }
|
||||
if m.ReasoningContent == "" { m.ReasoningContent = cr.Choices[0].Message.Thought }
|
||||
u := cr.Usage
|
||||
if cr.Model != "" { u.Model = cr.Model }
|
||||
if u.PromptTokens == 0 {
|
||||
u.PromptTokens = estTokens(msgs)
|
||||
u.CompletionTokens = estTokens([]Message{m})
|
||||
@@ -1010,6 +1020,7 @@ func parseStream(ctx context.Context, r io.Reader) (Message, Usage, error) {
|
||||
if d.Usage != nil && (d.Usage.PromptTokens > 0 || d.Usage.TotalTokens > 0) {
|
||||
lastUsage = *d.Usage
|
||||
}
|
||||
if d.Model != "" { lastUsage.Model = d.Model }
|
||||
if len(d.Choices) == 0 { continue }
|
||||
dl := d.Choices[0].Delta
|
||||
rc := dl.ReasoningContent
|
||||
@@ -1209,6 +1220,7 @@ func AL(ctx context.Context, cfg *Cfg, msgs []Message) ([]Message, Usage, error)
|
||||
turnUsage.CompletionTokens += u.CompletionTokens
|
||||
turnUsage.TotalTokens += u.TotalTokens
|
||||
if u.Cached() > 0 { turnUsage.CachedTokens = u.Cached() }
|
||||
if u.Model != "" { turnUsage.Model = u.Model }
|
||||
for j := range m.ToolCalls {
|
||||
tc := &m.ToolCalls[j]
|
||||
tc.Function.Arguments = filterText(tc.Function.Arguments)
|
||||
|
||||
Reference in New Issue
Block a user