(
response: OpenAI.Chat.Completions.ChatCompletion,
toolChoice: string | { type: string; function?: { name: string }; name?: string },
providerName: string,
forcedTools: string[],
usedForcedTools: string[],
customLogger?: Logger
)
| 1396 | * @returns Object with hasUsedForcedTool flag and updated usedForcedTools array |
| 1397 | */ |
| 1398 | export function checkForForcedToolUsageOpenAI( |
| 1399 | response: OpenAI.Chat.Completions.ChatCompletion, |
| 1400 | toolChoice: string | { type: string; function?: { name: string }; name?: string }, |
| 1401 | providerName: string, |
| 1402 | forcedTools: string[], |
| 1403 | usedForcedTools: string[], |
| 1404 | customLogger?: Logger |
| 1405 | ): { hasUsedForcedTool: boolean; usedForcedTools: string[] } { |
| 1406 | const checkLogger = customLogger || createLogger(`${providerName}Utils`) |
| 1407 | let hasUsedForcedTool = false |
| 1408 | let updatedUsedForcedTools = [...usedForcedTools] |
| 1409 | |
| 1410 | if (typeof toolChoice === 'object' && response.choices[0]?.message?.tool_calls) { |
| 1411 | const toolCallsResponse = response.choices[0].message.tool_calls |
| 1412 | const result = trackForcedToolUsage( |
| 1413 | toolCallsResponse, |
| 1414 | toolChoice, |
| 1415 | checkLogger, |
| 1416 | providerName.toLowerCase().replace(/\s+/g, '-'), |
| 1417 | forcedTools, |
| 1418 | updatedUsedForcedTools |
| 1419 | ) |
| 1420 | hasUsedForcedTool = result.hasUsedForcedTool |
| 1421 | updatedUsedForcedTools = result.usedForcedTools |
| 1422 | } |
| 1423 | |
| 1424 | return { hasUsedForcedTool, usedForcedTools: updatedUsedForcedTools } |
| 1425 | } |
no test coverage detected