From 9e67b3684263453d5cd4404f9df0055283adb00f Mon Sep 17 00:00:00 2001 From: German Mikheev Date: Thu, 13 Nov 2025 12:00:38 +0300 Subject: [PATCH] added correct envs - env.yml needs fixing (not working) - ui.py still needs improvements --- env.yml | 15 +++++++ env_cuda.yml | 15 +++++++ ui/ui.py | 15 +++++-- utils/default_prompt.json | 3 -- utils/default_prompt.txt | 84 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 126 insertions(+), 6 deletions(-) create mode 100644 env.yml create mode 100644 env_cuda.yml delete mode 100644 utils/default_prompt.json create mode 100644 utils/default_prompt.txt diff --git a/env.yml b/env.yml new file mode 100644 index 0000000..c4f1f12 --- /dev/null +++ b/env.yml @@ -0,0 +1,15 @@ +name: notecast-cpu-mps +channels: + - pytorch + - conda-forge + - defaults + - bioconda +dependencies: + - pytorch + - ffmpeg + - torchvision + - torchaudio + - transformers + - python=3.12 + - customtkinter + - openai diff --git a/env_cuda.yml b/env_cuda.yml new file mode 100644 index 0000000..59d0894 --- /dev/null +++ b/env_cuda.yml @@ -0,0 +1,15 @@ +name: notecast-cuda +channels: + - pytorch + - nvidia + - conda-forge + - bioconda +dependencies: + - pytorch + - ffmpeg + - torchvision + - torchaudio + - transformers + - python=3.12 + - customtkinter + - openai \ No newline at end of file diff --git a/ui/ui.py b/ui/ui.py index 1a7f72d..9d5d3a0 100644 --- a/ui/ui.py +++ b/ui/ui.py @@ -370,11 +370,13 @@ class TranscriberApp(ctk.CTk): debug_api_model_var: str = self.api_model_var.get() if self.api_model_var.get() else "Not set" debug_base_url_var: str = self.base_url_var.get() if self.base_url_var.get() else "Not set" debug_transcription_lang_var = self.transcription_lang_var.get() if self.transcription_lang_var.get() else "Not set" + debug_custom_prompt_var: str = self.custom_prompt_textbox.get() if self.custom_prompt_textbox.get() else "Not set" self.ui_logger.info(f"===== LLM Setting =====") self.ui_logger.info(f"API key: {debug_api_key_var}") self.ui_logger.info(f"Model name setting: {debug_api_model_var}") self.ui_logger.info(f"Base URL setting: {debug_base_url_var}") + # self.ui_logger.info(f"Custom prompt: {debug_transcription_lang_var}") # <-- issue here self.ui_logger.info(f"=======================") @@ -432,11 +434,18 @@ class TranscriberApp(ctk.CTk): if self.create_conspect.get(): # TODO: add custom prompt ability here # TODO: add logging here + # TODO: add progressbar instead of tqdm self.ui_logger.info(f"Starting creating conspect via {self.api_model_var.get()}...") - with open("utils/default_prompt.json", "r", encoding="utf-8") as f: - default_prompt = json.load(f)["prompt"] + with open("utils/default_prompt.txt", "r", encoding="utf-8") as f: + default_prompt = "\n".join(f.readlines()) - prompt = transcription + default_prompt # if custom prompt is empty do something + # if self.custom_prompt_textbox.get(): # <-- issue here + # prompt = transcription + "\n" + self.custom_prompt_textbox.get() + # else: + # prompt = transcription + "\n" + default_prompt + + prompt = transcription + "\n" + default_prompt + request = LLMrequest( api_key=self.api_key_var.get(), model_name=self.api_model_var.get(), diff --git a/utils/default_prompt.json b/utils/default_prompt.json deleted file mode 100644 index 057ca36..0000000 --- a/utils/default_prompt.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "prompt": "Используй ТОЛЬКО текст из транскрибации. Любая информация, которой нет в транскрибации, запрещена. Если какой-то факт или определение раскрыт не до конца, или лектор сказал что-то неполно, или тему нужно дополнить для лучшего понимания — вставляй дополнение сразу в нужное место, но только под отдельной подписью: AI overview: текст дополнения (confidence: low|medium|high) Ответ должен быть строго в формате Markdown (.md). Никаких 'привет', 'вот результат' и т. п. — только готовый текст. Все цитаты из транскрибации — буквально, максимум 25 слов подряд." -} \ No newline at end of file diff --git a/utils/default_prompt.txt b/utils/default_prompt.txt new file mode 100644 index 0000000..44f3bc4 --- /dev/null +++ b/utils/default_prompt.txt @@ -0,0 +1,84 @@ +Используй **исключительно текст из транскрибации** как первоисточник. +Разрешается расширять тему и объяснять глубже, но **дополнительная информация должна быть строго отделена и явно помечена**. + +### Цель + +Создать структурированную, полный образовательный конспект лекции **формата Obsidian Markdown**, который: + +* воспроизводит информацию из транскрибата максимально точно +* дополняет и разъясняет сложные моменты +* превращает речь в ясный учебный материал +* сохраняет смысл, порядок, и логическую структуру лектора +* улучшает академичность и связность + +### Правила работы с транскриптом + +* Используй только факты из транскрибации как основу. +* **Не выдумывай факты**, которых не было. +* **Дополнительные пояснения допустимы**, но строго в спец-блоках (см. ниже). +* Цитаты из оригинального текста — **дослівно**, максимум **25 слов подряд**. +* Нельзя писать «лектор сказал», «в тексте было» — пишем как учебный материал. + +### Блоки для расширений + +Если нужно объяснить термин, дополнить концепцию, исправить недосказанность — используй: + +``` +> AI clarification: +> Ваше дополнение, объяснение, аналогия или расширение темы. +``` + +Для коротких определений: + +``` +**AI note:** краткое пояснение +``` + +### Обязательная структура результата + +``` +# Название темы + +## Ключевые идеи +- маркеры +- … + +## Основные понятия и определения +- **Термин** — определение +- … + +## Подробный конспект +(структура, логика, абзацы, тезисы) + +> Цитаты (≤25 слов) + +## Примеры и объяснения +- собственные пересказанные примеры из транскрибации +- при необходимости: +> AI clarification + +## Выводы и ключевые инсайты +- … + +## Вопросы для самопроверки +- … +``` + +### Обязательный формат Obsidian Markdown + +Используй следующие возможности Obsidian: + +| Элемент | Формат | +| ----------------- | ----------------------------------------- | +| Заголовки | `#`, `##`, `###` | +| Цитаты | `>` | +| Списки | `-` и `1.` | +| Врезка/внимание | `> [!note]` `> [!tip]` | +| Код/формулы | `\`…`` и блоки ``` | +| Выделение | `**жирный**`, `_курсив_`, `==выделение==` | +| Внутренние ссылки | `[[Термин]]` если термин важный | +| Таблицы | стандартные markdown таблицы | +| Чек-лист | `- [ ]` | +| Формулы | Для однострочных формул используй $ formula $. Для мультистрочных формул используй $$ formula $$ | + +**Не добавляй** приветствий, заключений, обращений, пояснений формата. Только готовый md-текст. \ No newline at end of file