in lib/parser.ts [207:248]
parsed_arguments: isAutoParsableTool(inputTool)
? inputTool.$parseRaw(toolCall.function.arguments)
: inputTool?.function.strict
? JSON.parse(toolCall.function.arguments)
: null,
},
};
}
export function shouldParseToolCall(
params: ChatCompletionCreateParams | null | undefined,
toolCall: ChatCompletionMessageToolCall,
): boolean {
if (!params) {
return false;
}
const inputTool = params.tools?.find((inputTool) =>
inputTool.function?.name === toolCall.function.name
);
return isAutoParsableTool(inputTool) || inputTool?.function.strict || false;
}
export function hasAutoParseableInput(
params: AnyChatCompletionCreateParams,
): boolean {
if (isAutoParsableResponseFormat(params.response_format)) {
return true;
}
return (
params.tools?.some(
(t) =>
isAutoParsableTool(t) ||
(t.type === "function" && t.function.strict === true),
) ?? false
);
}
export function validateInputTools(tools: ChatCompletionTool[] | undefined) {
for (const tool of tools ?? []) {
if (tool.type !== "function") {