{"version":3,"file":"_server.ts-CSwmyTMa.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/_server.ts.js"],"sourcesContent":["import { d as private_env } from \"../../../chunks/shared-server.js\";\nimport { r as redirect } from \"../../../chunks/index.js\";\nimport { b as base } from \"../../../chunks/paths.js\";\nimport { L as LlamaCppService } from \"../../../chunks/LlamaCppService.js\";\nimport { F as FullTextSearchService } from \"../../../chunks/FullTextSearchService.js\";\nconst POST = async ({ locals, request }) => {\n const body = await request.json();\n let prompt = body.user_query;\n let template = body.prompt_template;\n const defaultTemplate = 'Ты бухгалтер. Ты отвечаешь на русском языке. Ты всегда следуешь моим инструкциям.\\n Ты отвечаешь на вопросы клиентов. Чтобы ответить, ты обязательно используешь только \"источники\", которые я тебе предоставляю. Ты используешь только официально-деловой стиль и необходимую терминологию. Соблюдай этические нормы. \\nПри ответе на вопрос ты используешь только такой формат ответа:\\n 1) Четкий и краткий ответ на поставленный вопрос. Ты можешь начать свой ответ так: \"По Вашему вопросу сообщаем...\". Используй по возможности слова: да, можно, нет, нельзя.\\n 2) Обоснование (ты используешь для обоснования \"источники\". Ты используешь только \"источники\" для поиска необходимых \"законов\", \"статей\", \"пунктов\" и \"подпунктов\" для ответа на вопрос пользователя).\\n 3) Аргументация (Ты используешь только \"источники\" для поиска необходимых \"писем\" и \"судебных решений\", чтобы аргументировать свой ответ).\"\\n 4) Заключение (ты подводишь итоги всего, что сказал выше. Избегай повторения и сложных конструкций). Если в источниках нельзя найти подходящую информацию для ответа, ты отвечаешь так: \"Мы не можем ответить на данный вопрос. Обратитесь к специалисту.\"\\n Вопрос: {{ВОПРОС}} \\nИсточники: {{ИСТОЧНИКИ}}';\n if (!template) {\n template = defaultTemplate;\n }\n const abortController = new AbortController();\n let service = new FullTextSearchService(private_env.SEARCH_API_URL);\n let results = await service.search(prompt, { abortController });\n function searchResultsToLlmSources(input) {\n return input.map(({ title, text }) => `${title}\n${text}`).join(\"\\n\\n\");\n }\n const userPrompt = template.replace(\"{{ВОПРОС}}\", prompt).replace(\"{{ИСТОЧНИКИ}}\", searchResultsToLlmSources(results));\n let llmService = new LlamaCppService(private_env.LLM_API_URL);\n let llmGenerator = await llmService.predict(userPrompt, { abortController });\n let response = \"\";\n for await (const output of await llmGenerator({ prompt: userPrompt })) {\n response += output.token.text;\n }\n return new Response(\n JSON.stringify({ response, search_results: results }),\n {\n headers: { \"Content-Type\": \"application/json\" }\n }\n );\n};\nconst GET = async () => {\n throw redirect(302, `${base}/`);\n};\nexport {\n GET,\n POST\n};\n"],"names":[],"mappings":";;;;;;;AAKK,MAAC,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;AAC5C,EAAE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;AACpC,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/B,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;AACtC,EAAE,MAAM,eAAe,GAAG,6qCAA6qC,CAAC;AACxsC,EAAE,IAAI,CAAC,QAAQ,EAAE;AACjB,IAAI,QAAQ,GAAG,eAAe,CAAC;AAC/B,GAAG;AACH,EAAE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;AAChD,EAAE,IAAI,OAAO,GAAG,IAAI,qBAAqB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACtE,EAAE,IAAI,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;AAClE,EAAE,SAAS,yBAAyB,CAAC,KAAK,EAAE;AAC5C,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC;AACnD,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvB,GAAG;AACH,EAAE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;AACzH,EAAE,IAAI,UAAU,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;AAChE,EAAE,IAAI,YAAY,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;AAC/E,EAAE,IAAI,QAAQ,GAAG,EAAE,CAAC;AACpB,EAAE,WAAW,MAAM,MAAM,IAAI,MAAM,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE;AACzE,IAAI,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAClC,GAAG;AACH,EAAE,OAAO,IAAI,QAAQ;AACrB,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;AACzD,IAAI;AACJ,MAAM,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;AACrD,KAAK;AACL,GAAG,CAAC;AACJ,EAAE;AACG,MAAC,GAAG,GAAG,YAAY;AACxB,EAAE,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC;;;;"}