({
messages,
includeCacheControl = true,
logger,
}: {
messages: Message[]
includeCacheControl?: boolean
logger?: Logger
})
| 211 | } |
| 212 | |
| 213 | export function convertCbToModelMessages({ |
| 214 | messages, |
| 215 | includeCacheControl = true, |
| 216 | logger, |
| 217 | }: { |
| 218 | messages: Message[] |
| 219 | includeCacheControl?: boolean |
| 220 | logger?: Logger |
| 221 | }): ModelMessage[] { |
| 222 | const toolMessagesConverted: ModelMessageWithAuxiliaryData[] = |
| 223 | convertToolMessages(messages) |
| 224 | |
| 225 | const aggregated: ModelMessageWithAuxiliaryData[] = [] |
| 226 | for (const message of toolMessagesConverted) { |
| 227 | if (aggregated.length === 0) { |
| 228 | aggregated.push(message) |
| 229 | continue |
| 230 | } |
| 231 | |
| 232 | const lastMessage = aggregated[aggregated.length - 1] |
| 233 | if ( |
| 234 | lastMessage.timeToLive !== message.timeToLive || |
| 235 | !isEqual(lastMessage.providerOptions, message.providerOptions) || |
| 236 | !isEqual(lastMessage.tags, message.tags) |
| 237 | ) { |
| 238 | aggregated.push(message) |
| 239 | continue |
| 240 | } |
| 241 | if (lastMessage.role === 'system' && message.role === 'system') { |
| 242 | lastMessage.content += '\n\n' + message.content |
| 243 | continue |
| 244 | } |
| 245 | if (lastMessage.role === 'user' && message.role === 'user') { |
| 246 | lastMessage.content.push(...message.content) |
| 247 | continue |
| 248 | } |
| 249 | if (lastMessage.role === 'assistant' && message.role === 'assistant') { |
| 250 | lastMessage.content.push(...message.content) |
| 251 | continue |
| 252 | } |
| 253 | |
| 254 | aggregated.push(message) |
| 255 | } |
| 256 | |
| 257 | if (!includeCacheControl) { |
| 258 | return aggregated |
| 259 | } |
| 260 | |
| 261 | // Add cache control to specific messages (max of 4 can be marked for caching!): |
| 262 | // - The message right before the three tagged messages |
| 263 | // - Last message |
| 264 | for (const tag of [ |
| 265 | 'LAST_ASSISTANT_MESSAGE', |
| 266 | 'USER_PROMPT', |
| 267 | 'STEP_PROMPT', |
| 268 | undefined, // Last message |
| 269 | ] as const) { |
| 270 | let index = |
no test coverage detected