UNPKG

@convo-lang/convo-lang

Version:
83 lines 3.13 kB
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