@iyio/convo-lang
Version:
A conversational language.
51 lines • 2.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createConvoVisionFunction = void 0;
const zod_1 = require("zod");
const convo_lib_1 = require("./convo-lib");
const paramsType = zod_1.z.object({
query: zod_1.z.string().describe('The question or request made by the user.'),
supportInfo: zod_1.z.string().optional().describe("Any supporting information required to answer the user's question or complete their request. This can include information from previous messages."),
imageUrls: zod_1.z.string().array().describe('URLs of referenced images')
});
const createConvoVisionFunction = ({ ...defaults } = {}) => {
return {
...defaults,
name: convo_lib_1.convoFunctions.queryImage,
description: 'Queries an image based on a user request',
paramsType,
scopeCallback: async (scope, ctx) => {
const { query, supportInfo, imageUrls } = paramsType.parse((0, convo_lib_1.convoLabeledScopeParamsToObj)(scope));
const srcConvo = ctx.convo.conversation;
if (!srcConvo) {
return { error: 'no parent conversation found' };
}
const convo = srcConvo?.createChild({
capabilities: [],
serviceCapabilities: ['vision'],
});
const varMsg = ctx.getVar(convo_lib_1.convoVars.__visionServiceSystemMessage, scope);
if (typeof varMsg === 'string') {
convo.append(/*convo*/ `
> system
${(0, convo_lib_1.escapeConvoMessageContent)(varMsg)}
`);
}
convo.append(/*convo*/ `
> user
${(supportInfo ? (0, convo_lib_1.escapeConvoMessageContent)(supportInfo) + '\n\n' : '') + imageUrls.map(i => ``).join('\n')}
${(0, convo_lib_1.escapeConvoMessageContent)(query)}
`);
convo.unregisteredVars['__debug'] = true;
const completion = await convo.completeAsync();
const response = completion.message?.content;
if (response !== undefined) {
return { result: response };
}
const d = ctx.getVar(convo_lib_1.convoVars.__defaultVisionResponse, scope);
return { result: (typeof d === 'string') ? d : convo_lib_1.defaultConvoVisionResponse };
}
};
};
exports.createConvoVisionFunction = createConvoVisionFunction;
//# sourceMappingURL=createConvoVisionFunction.js.map