()
| 35 | // Tokens approximates token count as char/4, good enough for budgeting. |
| 36 | func Tokens(s string) int { return (len(s) + 3) / 4 } |
| 37 | |
| 38 | func (m Message) Tokens() int { |
| 39 | n := Tokens(m.Content) |
| 40 | for _, tc := range m.ToolCalls { |
| 41 | n += Tokens(tc.Name) |
| 42 | for k, v := range tc.Arguments { |
| 43 | n += Tokens(k) + Tokens(fmt.Sprint(v)) |
| 44 | } |
| 45 | } |
| 46 | return n + 8 |
| 47 | } |
| 48 | |
| 49 | const ( |