@convo-lang/convo-lang
Version:
The language of AI
83 lines • 3.13 kB
JavaScript
import { getErrorMessage } from "@iyio/common";
import { Conversation } from "./Conversation.js";
import { escapeConvoMessageContent } from "./convo-lib.js";
export const getConvoCompletionAsync = (messagesOrOptions, conversationOptions) => {
const conversation = new Conversation(conversationOptions);
return conversation.completeAsync(messagesOrOptions);
};
export const getConvoTextCompletionAsync = async (messagesOrOptions, conversationOptions) => {
const r = await getConvoCompletionAsync(messagesOrOptions, conversationOptions);
return r.message?.content;
};
export const getConvoUserMessageCompletionAsync = async (userMessage, conversationOptions) => {
const r = await getConvoCompletionAsync(`> user\n${escapeConvoMessageContent(userMessage)}`, conversationOptions);
return r.message?.content;
};
export const getConvoJsonCompletionAsync = async (messagesOrOptions, conversationOptions) => {
const c = await getConvoCompletionAsync(messagesOrOptions, conversationOptions);
if (c.message?.content === undefined) {
return undefined;
}
try {
return JSON.parse(c.message.content);
}
catch {
return undefined;
}
};
export const callConvoFunctionAsync = async (messagesOrOptions, conversationOptions) => {
if (messagesOrOptions === undefined) {
messagesOrOptions = {};
}
else if (typeof messagesOrOptions === 'string') {
messagesOrOptions = { append: messagesOrOptions };
}
messagesOrOptions.returnOnCall = true;
const c = await getConvoCompletionAsync(messagesOrOptions, conversationOptions);
return c.message?.callParams;
};
export const callConvoFunctionWithSchemeAsync = async (functionName, functionDescription, params, messagesOrOptions, conversationOptions) => {
const conversation = new Conversation(conversationOptions);
conversation.defineFunction({
name: functionName,
paramsType: params,
description: functionDescription,
});
return await conversation.callStubFunctionAsync(messagesOrOptions);
};
export const flattenConvoAsync = async (code, options) => {
try {
const conversation = new Conversation({ ...options, disableAutoFlatten: true });
const r = conversation.append(code);
if (r.error || !r.result) {
return { success: false, parsingResult: r, vars: {}, messages: [] };
}
const flat = await conversation.flattenAsync();
return {
success: true,
flat,
vars: flat.vars,
messages: flat.messages,
parsingResult: r,
};
}
catch (ex) {
return {
success: false,
parsingResult: {
error: {
message: getErrorMessage(ex),
index: 0,
lineNumber: 0,
col: 0,
line: '',
near: '',
},
endIndex: 0,
},
vars: {},
messages: []
};
}
};
//# sourceMappingURL=convo-helpers.js.map