(messages: Message[], maxTokens: number, model?: string)
| 156 | } |
| 157 | |
| 158 | private applyTokenWindow(messages: Message[], maxTokens: number, model?: string): Message[] { |
| 159 | const result: Message[] = [] |
| 160 | let tokenCount = 0 |
| 161 | |
| 162 | for (let i = messages.length - 1; i >= 0; i--) { |
| 163 | const msg = messages[i] |
| 164 | const msgTokens = getAccurateTokenCount(msg.content, model) |
| 165 | |
| 166 | if (tokenCount + msgTokens <= maxTokens) { |
| 167 | result.unshift(msg) |
| 168 | tokenCount += msgTokens |
| 169 | } else if (result.length === 0) { |
| 170 | result.unshift(msg) |
| 171 | break |
| 172 | } else { |
| 173 | break |
| 174 | } |
| 175 | } |
| 176 | |
| 177 | return result |
| 178 | } |
| 179 | |
| 180 | private applyContextWindowLimit(messages: Message[], model?: string): Message[] { |
| 181 | if (!model) return messages |
no test coverage detected