( task: LLMTask, chat: OpenAI.Chat.Completions.ChatCompletionMessageParam[] )
| 241 | } |
| 242 | |
| 243 | export function estimateChatTokens( |
| 244 | task: LLMTask, |
| 245 | chat: OpenAI.Chat.Completions.ChatCompletionMessageParam[] |
| 246 | ): LLMTask['debugging']['estimatedTokens'] { |
| 247 | const functions: ExtendedTool[] = mapFunctionNames(task.allowedTools || []); |
| 248 | const singlePromptTokens = countStringTokens(task.content || ''); |
| 249 | const promptTokens = countChatTokens(chat); |
| 250 | const functionTokens = Math.floor(countToolTokens(functions) * 0.7); |
| 251 | const resultTokens = countStringTokens( |
| 252 | task.result?.chatResponse?.choices[0].message.content || '' |
| 253 | ); |
| 254 | return { |
| 255 | singlePromptTokens, |
| 256 | promptTokens, |
| 257 | functionTokens, |
| 258 | resultTokens, |
| 259 | }; |
| 260 | } |
| 261 | |
| 262 | function generateHeaders(chatState: ChatStateType) { |
| 263 | let headers: Record<string, string> = { |
no test coverage detected