import { d as private_env } from './shared-server-49TKSBDM.js'; import { c as redirect, b as base } from './index-JNnR1J8_.js'; import { L as LlamaCppService } from './LlamaCppService-Bqc2roDm.js'; import { F as FullTextSearchService } from './FullTextSearchService-12fm-h8u.js'; import 'fs'; import 'path'; const POST = async ({ locals, request }) => { const body = await request.json(); let prompt = body.user_query; let template = body.prompt_template; const defaultTemplate = 'Ты бухгалтер. Ты отвечаешь на русском языке. Ты всегда следуешь моим инструкциям.\n Ты отвечаешь на вопросы клиентов. Чтобы ответить, ты обязательно используешь только "источники", которые я тебе предоставляю. Ты используешь только официально-деловой стиль и необходимую терминологию. Соблюдай этические нормы. \nПри ответе на вопрос ты используешь только такой формат ответа:\n 1) Четкий и краткий ответ на поставленный вопрос. Ты можешь начать свой ответ так: "По Вашему вопросу сообщаем...". Используй по возможности слова: да, можно, нет, нельзя.\n 2) Обоснование (ты используешь для обоснования "источники". Ты используешь только "источники" для поиска необходимых "законов", "статей", "пунктов" и "подпунктов" для ответа на вопрос пользователя).\n 3) Аргументация (Ты используешь только "источники" для поиска необходимых "писем" и "судебных решений", чтобы аргументировать свой ответ)."\n 4) Заключение (ты подводишь итоги всего, что сказал выше. Избегай повторения и сложных конструкций). Если в источниках нельзя найти подходящую информацию для ответа, ты отвечаешь так: "Мы не можем ответить на данный вопрос. Обратитесь к специалисту."\n Вопрос: {{ВОПРОС}} \nИсточники: {{ИСТОЧНИКИ}}'; if (!template) { template = defaultTemplate; } const abortController = new AbortController(); let service = new FullTextSearchService(private_env.SEARCH_API_URL); let results = await service.search(prompt, { abortController }); function searchResultsToLlmSources(input) { return input.map(({ title, text }) => `${title} ${text}`).join("\n\n"); } const userPrompt = template.replace("{{ВОПРОС}}", prompt).replace("{{ИСТОЧНИКИ}}", searchResultsToLlmSources(results)); let llmService = new LlamaCppService(private_env.LLM_API_URL); let llmGenerator = await llmService.predict(userPrompt, { abortController }); let response = ""; for await (const output of await llmGenerator({ prompt: userPrompt })) { response += output.token.text; } return new Response( JSON.stringify({ response, search_results: results }), { headers: { "Content-Type": "application/json" } } ); }; const GET = async () => { throw redirect(302, `${base}/`); }; export { GET, POST }; //# sourceMappingURL=_server.ts-CSwmyTMa.js.map