retort-js
Version:
Intuitive, production-ready prompt chaining in Javascript
30 lines (29 loc) • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defineGeneration = void 0;
const claude_chat_completion_1 = require("./claude-chat-completion");
const log_message_1 = require("./log-message");
const message_1 = require("./message");
const openai_chat_completion_1 = require("./openai-chat-completion");
function defineGeneration(conversation, role, push) {
return function generation(generationSettings) {
let settings = { ...conversation.settings, ...generationSettings };
let promises = conversation.messages.map((message) => message.promise);
if (settings?.model?.startsWith("claude-")) {
var stream = (0, claude_chat_completion_1.claudeChatCompletion)(settings, promises);
}
else {
// Default to OpenAI.
stream = (0, openai_chat_completion_1.openAiChatCompletion)(settings, promises);
}
let retortMessage = new message_1.RetortMessage({ stream, role, json: !!("parameters" in settings && settings.parameters) });
if (push) {
conversation.messages.push(retortMessage);
}
retortMessage.promise.then((message) => {
(0, log_message_1.logMessage)(message);
});
return retortMessage.promise;
};
}
exports.defineGeneration = defineGeneration;