18 lines
1.4 KiB
JavaScript
18 lines
1.4 KiB
JavaScript
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
// see https://github.com/openai/openai-node/blob/master/examples/tool-call-helpers-zod.ts
|
|
export const zodFunction = ({ function: fn, schema, description = '', name, }) => {
|
|
return {
|
|
type: 'function',
|
|
function: {
|
|
function: fn,
|
|
name: name ?? fn.name,
|
|
description: description,
|
|
parameters: zodToJsonSchema(schema),
|
|
parse(input) {
|
|
const obj = JSON.parse(input);
|
|
return schema.parse(obj);
|
|
}
|
|
}
|
|
};
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVwRCwwRkFBMEY7QUFDMUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFFLENBQW1CLEVBQ3pDLFFBQVEsRUFBRSxFQUFFLEVBQ1osTUFBTSxFQUNOLFdBQVcsR0FBRyxFQUFFLEVBQ2hCLElBQUksR0FNTCxFQUFxQyxFQUFFO0lBQ3RDLE9BQU87UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixRQUFRLEVBQUU7WUFDUixRQUFRLEVBQUUsRUFBRTtZQUNaLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLElBQUk7WUFDckIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQWU7WUFDakQsS0FBSyxDQUFDLEtBQWE7Z0JBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQzdCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMxQixDQUFDO1NBQ0Y7S0FDRixDQUFBO0FBQ0gsQ0FBQyxDQUFBIn0=
|