UNPKG

medusa-product-ai-widget

Version:
38 lines 3.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ai_1 = require("ai"); const PROMPTS = { fix_writing: "Fix spelling and grammar. Don't introduce new ideas, just fix the writing.", make_longer: "Make the text longer, without losing the original meaning. Get creative.", make_shorter: "Make as short as possbile, without losing the original meaning. Don't introduce any new ideas or words, but fix grammar and spelling.", improve_seo: "Paraphrase this product description using SEO best practices. Use active voice and short sentences to make the content more readable for potential shoppers in the context of the focus keyword: '{keyword}'. Text length may exceed 160 characters. The text should be unique and not copied from other sources. The focus keyword should be used 2-3 times in your output.", }; async function default_1(req, res) { // Create an OpenAI API client const openAiService = req.scope.resolve("openAiService"); // Extract the relevant data from the request body const { messages, type, description, keyword } = req.body; // Set up the initial prompt let prompt = PROMPTS[type]; if (type === "improve_seo") { prompt = prompt.replace("{keyword}", keyword); } // Add the prompt to the messages const userMessages = [ { role: "user", content: "Prompt: " + prompt + " Description: " + description, }, ]; messages.push(...userMessages); // Ask OpenAI for a streaming chat completion given the prompt const completion = await openAiService.create(messages); // Set up response headers res.setHeader("Content-Type", "text/plain"); // Convert the response into a friendly text-stream const stream = (0, ai_1.OpenAIStream)(completion); // Pipe the stream to the response (0, ai_1.streamToResponse)(stream, res); } exports.default = default_1; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXNjcmlwdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3JvdXRlcy9hZG1pbi9jb21wbGV0aW9uL3Byb2R1Y3QtZGVzY3JpcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMkJBQW9EO0FBR3BELE1BQU0sT0FBTyxHQUFZO0lBQ3ZCLFdBQVcsRUFDVCw0RUFBNEU7SUFDOUUsV0FBVyxFQUNULDBFQUEwRTtJQUM1RSxZQUFZLEVBQ1YsdUlBQXVJO0lBQ3pJLFdBQVcsRUFDVCw4V0FBOFc7Q0FDalgsQ0FBQztBQUVhLEtBQUssb0JBQVcsR0FBWSxFQUFFLEdBQWE7SUFDeEQsOEJBQThCO0lBQzlCLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRXpELGtEQUFrRDtJQUNsRCxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztJQUUxRCw0QkFBNEI7SUFDNUIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNCLElBQUksSUFBSSxLQUFLLGFBQWEsRUFBRTtRQUMxQixNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDL0M7SUFFRCxpQ0FBaUM7SUFDakMsTUFBTSxZQUFZLEdBQUc7UUFDbkI7WUFDRSxJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRSxVQUFVLEdBQUcsTUFBTSxHQUFHLGdCQUFnQixHQUFHLFdBQVc7U0FDOUQ7S0FDRixDQUFDO0lBRUYsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDO0lBRS9CLDhEQUE4RDtJQUM5RCxNQUFNLFVBQVUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFeEQsMEJBQTBCO0lBQzFCLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRTVDLG1EQUFtRDtJQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGlCQUFZLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEMsa0NBQWtDO0lBQ2xDLElBQUEscUJBQWdCLEVBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFuQ0QsNEJBbUNDIn0=