"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.moderationText = void 0; const node_https_1 = require("node:https"); const langchain_gigachat_1 = require("langchain-gigachat"); const zod_1 = require("zod"); const httpsAgent = new node_https_1.Agent({ rejectUnauthorized: false, }); const llm = new langchain_gigachat_1.GigaChat({ credentials: process.env.GIGA_AUTH, temperature: 0.2, model: 'GigaChat-2', httpsAgent, }); // возвращаю комментарий + исправленное предложение + булево значение const moderationLlm = llm.withStructuredOutput(zod_1.z.object({ comment: zod_1.z.string(), fixedText: zod_1.z.string().optional(), isApproved: zod_1.z.boolean(), })); const moderationText = async (title, body) => { const prompt = ` Представь, что ты модерируешь предложения от жильцов многоквартирного дома (это личная инициатива по улучшения, не имеющая отношения к Управляющей компании). Заголовок: ${title} Основной текст: ${body} Твои задачи: 1. Проверь предложение и заголовок на спам. 2. Проверь, чтобы заголовок и текст были на одну тему. 3. Проверь само предложение пользователя на отсутствие грубой лексики и пошлостей. 4. Проверь грамматику. 5. Проверь на бессмысленность предложения. Оно не должно содержать только случайные символы. 6. Не должно быть рекламы, ссылок и т.д. 7. Проверь предложение на информативность, оно не должно быть слишком коротким. 8. Предложение должно быть в вежливой форме. - Если все правила соблюдены, то предложение принимается! Правила написания комментария: - Если предложение отклоняется, верни комментарий со следующей формулировкой: "Предложение отклонено. Причина: (укажи проблему)" Правила написания fixedBody: - Если предложение отклонено, то верни в поле "fixedBody" новый текст, который будет соответствовать правилам. - Если предложение отклонено и содержит запрещённый контент (рекламу, личные данные), удали всю информацию, которая противоречит правилам, и верни в только подходящий фрагмент, сохраняя общий смысл. - Если текст не представляет никакой ценности, возврати в поле "fixedBody" правило, по которому оно не прошло. -Если предложение принимается, то ничего не возвращай в поле fixedBody. `; const result = await moderationLlm.invoke(prompt); return [result.comment, result.fixedText, result.isApproved]; }; exports.moderationText = moderationText;