(a: Message[], b: Message[])
| 41 | /** Number of leading messages that are byte-identical between two message arrays. |
| 42 | * This is the prefix the inference server can serve from KV cache. */ |
| 43 | export function commonPrefixLength(a: Message[], b: Message[]): number { |
| 44 | const n = Math.min(a.length, b.length); |
| 45 | let i = 0; |
| 46 | for (; i < n; i++) { |
| 47 | if (serializeMessage(a[i]!) !== serializeMessage(b[i]!)) break; |
| 48 | } |
| 49 | return i; |
| 50 | } |
| 51 | |
| 52 | /** Approximate character count of the first `n` messages (proxy for cached tokens). */ |
| 53 | export function prefixChars(messages: Message[], n: number): number { |
no test coverage detected