Авторизация и регистрация
В случае возникновения проблем при регистрации, воспользуйтесь формой обратной связи, - где в теме кратко укажите проблему, в тексте сообщения укажите ФИО, номер студенческого, факультет, - курс, группу (при наличии). Без указания перечисленных данных обращения в - службу техподдержки не рассматриваются.
- -Форма «Регистрация» с использованием данных номера студенческого и идентификатора предназначена - для АКТИВАЦИИ учетной записи. После активации она работать не будет! Форма «Авторизации» - предназначена для входа ПОСЛЕ активации учетной записи с использованием данных электронного адреса - и пароля, который был отправлен по электронному адресу, указанному при активации или внесенному - в последствии в Профиль.
- -В случае если вы забыли пароль, необходимо нажать «Восстановить пароль» - в форме «Авторизации» и использовать электронный адрес, с которым вы активировали личный кабинет, - или тот, который вы указывали в качестве контактного электронного адреса в «Профиле» личного - кабинета обучающегося. Инструкция доступна по ссылке - https://student.sechenov.ru/howto.php
- -При возникновении вопросов/проблем с ЦТ необходимо выбирать соответствующий пункт в причинах - на форме. Письма, отправленные не через форму обратной связи с выбором соответствующей причины, - а по электронной почте рассматриваться не будут.
- -Уважаемые первокурсники! Убедительная просьба не блокировать кампусные карты МИР - в личном кабинете Сбербанк Онлайн!
- -Регистрация ( Получить пароль от портала )
-Авторизация ( Я уже активировал профиль )
- -+ При наличии каких либо технических проблем, в первую очередь рекомендуем очистить кеш браузера + и обновить версию браузера при необходимости. На данном ресурсе вы можете найти + инструкцию по очистке «кэша» во всех современных браузерах. После чего рекомендуем + авторизоваться в ЛКО. +
- -Claude Chat
+В случае возникновения проблем при регистрации, воспользуйтесь формой обратной связи, + где в теме кратко укажите проблему, в тексте сообщения укажите ФИО, номер студенческого, факультет, + курс, группу (при наличии). + Без указания перечисленных данных обращения в службу техподдержки не рассматриваются.
+ +Форма «Регистрация» с использованием данных номера студенческого и идентификатора предназначена + для АКТИВАЦИИ учетной записи. После активации она работать не будет! Форма «Авторизации» + предназначена для входа ПОСЛЕ активации учетной записи с использованием данных электронного адреса + и пароля, который был отправлен по электронному адресу, указанному при активации или внесенному + в последствии в Профиль.
+ +В случае если вы забыли пароль, необходимо нажать + «Восстановить пароль» в форме «Авторизации» и использовать электронный адрес, с которым вы + активировали личный кабинет, или тот, который вы указывали в качестве контактного + электронного адреса в «Профиле» личного кабинета обучающегося. + Инструкция доступна по ссылке https://student.sechenov.ru/howto.php
+ +При возникновении вопросов/проблем с ЦТ необходимо выбирать соответствующий пункт в причинах + на форме. Письма, отправленные не через форму обратной связи с выбором соответствующей причины, + а по электронной почте рассматриваться не будут.
++
Уважаемые первокурсники! Убедительная просьба не блокировать кампусные + карты МИР в личном кабинете Сбербанк Онлайн!
+Регистрация Получить пароль от портала
+Авторизация Я уже активировал профиль
+ +Claude Chat
+${c.trim()}`);
+ html = html.replace(/`([^`]+)`/g, '$1');
+ html = html.replace(/\*\*([^*]+)\*\*/g, '$1');
+ return html;
+ }
+
+ async function send() {
+ const text = inputEl.value.trim();
+ if (!text) return;
+ outputEl.className = '';
+ outputEl.innerHTML = '';
+ setLoading(true);
+ statusEl.textContent = 'Генерирую...';
+ let fullText = '';
+ try {
+ const resp = await fetch('/api/chat', {
+ method: 'POST',
+ headers: {'Content-Type':'application/json'},
+ body: JSON.stringify({text, model: modelSel.value}),
+ });
+ const reader = resp.body.getReader();
+ const decoder = new TextDecoder();
+ let buf = '';
+ while (true) {
+ const {done, value} = await reader.read();
+ if (done) break;
+ buf += decoder.decode(value, {stream:true});
+ const parts = buf.split('\n\n');
+ buf = parts.pop();
+ for (const part of parts) {
+ if (!part.startsWith('data: ')) continue;
+ const raw = part.slice(6).trim();
+ if (raw === '[DONE]') continue;
+ try {
+ const obj = JSON.parse(raw);
+ if (obj.error) {
+ outputEl.innerHTML += `${obj.error}`;
+ } else if (obj.text) {
+ fullText += obj.text;
+ outputEl.innerHTML = renderMarkdown(fullText);
+ outputEl.scrollTop = outputEl.scrollHeight;
+ }
+ } catch(e) {}
+ }
+ }
+ } catch(e) {
+ outputEl.innerHTML = `Ошибка: ${e.message}`;
+ } finally {
+ setLoading(false);
+ statusEl.textContent = fullText ? `${fullText.length} символов` : '';
+ }
+ }
+
+ sendBtn.addEventListener('click', send);
+ inputEl.addEventListener('keydown', e => { if (e.ctrlKey && e.key==='Enter') send(); });
+ clearBtn.addEventListener('click', () => {
+ inputEl.value = '';
+ outputEl.innerHTML = 'Ответ появится здесь...';
+ outputEl.className = 'empty';
+ statusEl.textContent = '';
+ timerEl.textContent = '';
+ });
+
