Files
multy-stub/server/routers/kfu-m-24-1/sber_mobile/initiatives-ai-agents/moderation.js
Дания 39a62818e9 fix error
2025-06-12 21:07:06 +03:00

57 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"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;