2025-12-04 16:45:03 +03:00
import logging
import httpx
2025-12-04 11:09:54 +03:00
from openai import AsyncOpenAI
from config . settings import settings
from typing import Dict , List
2025-12-04 16:45:03 +03:00
logger = logging . getLogger ( __name__ )
2025-12-04 11:09:54 +03:00
class AIService :
2025-12-04 14:39:23 +03:00
""" Сервис для работы с OpenAI API через Cloudflare Gateway """
2025-12-04 11:09:54 +03:00
def __init__ ( self ) :
2025-12-04 16:45:03 +03:00
self . api_key = settings . openai_api_key
2025-12-04 14:39:23 +03:00
# Проверяем, настроен ли Cloudflare AI Gateway
if settings . cloudflare_account_id :
2025-12-04 16:45:03 +03:00
# Используем Cloudflare AI Gateway с прямыми HTTP запросами
self . base_url = (
2025-12-04 14:39:23 +03:00
f " https://gateway.ai.cloudflare.com/v1/ "
f " { settings . cloudflare_account_id } / "
f " { settings . cloudflare_gateway_id } / "
2025-12-04 16:45:03 +03:00
f " openai "
2025-12-04 14:39:23 +03:00
)
2025-12-04 16:45:03 +03:00
self . use_cloudflare = True
logger . info ( f " AI Service initialized with Cloudflare Gateway: { self . base_url } " )
2025-12-04 14:39:23 +03:00
else :
# Прямое подключение к OpenAI
2025-12-04 16:45:03 +03:00
self . base_url = " https://api.openai.com/v1 "
self . use_cloudflare = False
logger . info ( " AI Service initialized with direct OpenAI connection " )
# HTTP клиент для всех запросов
self . http_client = httpx . AsyncClient (
timeout = httpx . Timeout ( 60.0 , connect = 10.0 ) ,
limits = httpx . Limits ( max_keepalive_connections = 5 , max_connections = 10 )
)
async def _make_openai_request ( self , messages : list , temperature : float = 0.3 , model : str = " gpt-4o-mini " ) - > dict :
""" Выполнить запрос к OpenAI API (через Cloudflare или напрямую) """
url = f " { self . base_url } /chat/completions "
headers = {
" Authorization " : f " Bearer { self . api_key } " ,
" Content-Type " : " application/json "
}
payload = {
" model " : model ,
" messages " : messages ,
" temperature " : temperature ,
" response_format " : { " type " : " json_object " }
}
response = await self . http_client . post ( url , headers = headers , json = payload )
response . raise_for_status ( )
return response . json ( )
2025-12-04 11:09:54 +03:00
2025-12-04 19:40:01 +03:00
async def translate_word ( self , word : str , source_lang : str = " en " , translation_lang : str = " ru " ) - > Dict :
2025-12-04 11:09:54 +03:00
"""
Перевести слово и получить дополнительную информацию
Args :
word : Слово для перевода
2025-12-04 19:40:01 +03:00
source_lang : Язык исходного слова ( ISO2 )
translation_lang : Язык перевода ( ISO2 )
2025-12-04 11:09:54 +03:00
Returns :
Dict с переводом , транскрипцией и примерами
"""
2025-12-04 19:40:01 +03:00
prompt = f """ Переведи слово/фразу " { word } " с языка { source_lang } на { translation_lang } .
2025-12-04 11:09:54 +03:00
Верни ответ строго в формате JSON :
{ {
2025-12-04 19:40:01 +03:00
" word " : " исходное слово на {source_lang} " ,
" translation " : " перевод на {translation_lang} " ,
" transcription " : " транскрипция в IPA (если применимо) " ,
2025-12-04 11:09:54 +03:00
" examples " : [
2025-12-04 19:40:01 +03:00
{ { " {source_lang} " : " пример на языке обучения " , " {translation_lang} " : " перевод примера " } }
2025-12-04 11:09:54 +03:00
] ,
" category " : " категория слова (работа, еда, путешествия и т.д.) " ,
" difficulty " : " уровень сложности (A1/A2/B1/B2/C1/C2) "
} }
Важно : верни только JSON , без дополнительного текста . """
try :
2025-12-04 19:40:01 +03:00
logger . info ( f " [GPT Request] translate_word: word= ' { word } ' , source= ' { source_lang } ' , to= ' { translation_lang } ' " )
2025-12-04 16:45:03 +03:00
messages = [
2025-12-04 19:40:01 +03:00
{ " role " : " system " , " content " : " Ты - помощник для изучения языков. Отвечай только в формате JSON. " } ,
2025-12-04 16:45:03 +03:00
{ " role " : " user " , " content " : prompt }
]
response_data = await self . _make_openai_request ( messages , temperature = 0.3 )
2025-12-04 11:09:54 +03:00
import json
2025-12-04 16:45:03 +03:00
result = json . loads ( response_data [ ' choices ' ] [ 0 ] [ ' message ' ] [ ' content ' ] )
logger . info ( f " [GPT Response] translate_word: success, translation= ' { result . get ( ' translation ' , ' N/A ' ) } ' " )
2025-12-04 11:09:54 +03:00
return result
except Exception as e :
2025-12-04 16:45:03 +03:00
logger . error ( f " [GPT Error] translate_word: { type ( e ) . __name__ } : { str ( e ) } " )
2025-12-04 11:09:54 +03:00
# Fallback в случае ошибки
return {
" word " : word ,
" translation " : " Ошибка перевода " ,
" transcription " : " " ,
" examples " : [ ] ,
" category " : " unknown " ,
" difficulty " : " A1 "
}
2025-12-05 20:15:47 +03:00
async def translate_words_batch (
self ,
words : List [ str ] ,
source_lang : str = " en " ,
translation_lang : str = " ru "
) - > List [ Dict ] :
"""
Перевести список слов пакетно
Args :
words : Список слов для перевода
source_lang : Язык исходных слов ( ISO2 )
translation_lang : Язык перевода ( ISO2 )
Returns :
List [ Dict ] с переводами , транскрипциями
"""
if not words :
return [ ]
words_list = " \n " . join ( f " - { w } " for w in words [ : 50 ] ) # Максимум 50 слов за раз
# Добавляем инструкцию для фуриганы если японский
furigana_instruction = " "
if source_lang == " ja " :
furigana_instruction = ' \n " reading " : " чтение хираганой (только для кандзи) " , '
prompt = f """ Переведи следующие слова/фразы с языка { source_lang } на { translation_lang } :
{ words_list }
Верни ответ строго в формате JSON массива :
[
{ {
" word " : " исходное слово " ,
" translation " : " перевод " ,
" transcription " : " транскрипция (IPA или ромадзи для японского) " , { furigana_instruction }
} } ,
. . .
]
Важно :
- Верни только JSON массив , без дополнительного текста
- Сохрани порядок слов как в исходном списке
- Для каждого слова укажи точный перевод и транскрипцию """
try :
logger . info ( f " [GPT Request] translate_words_batch: { len ( words ) } words, { source_lang } -> { translation_lang } " )
messages = [
{ " role " : " system " , " content " : " Ты - помощник для изучения языков. Отвечай только в формате JSON. " } ,
{ " role " : " user " , " content " : prompt }
]
response_data = await self . _make_openai_request ( messages , temperature = 0.3 )
import json
content = response_data [ ' choices ' ] [ 0 ] [ ' message ' ] [ ' content ' ]
# Убираем markdown обёртку если есть
if content . startswith ( ' ``` ' ) :
content = content . split ( ' \n ' , 1 ) [ 1 ] if ' \n ' in content else content [ 3 : ]
if content . endswith ( ' ``` ' ) :
content = content [ : - 3 ]
content = content . strip ( )
result = json . loads ( content )
# Если вернулся dict с ключом типа "words" или "translations" — извлекаем список
if isinstance ( result , dict ) :
for key in [ ' words ' , ' translations ' , ' result ' , ' data ' ] :
if key in result and isinstance ( result [ key ] , list ) :
result = result [ key ]
break
if not isinstance ( result , list ) :
logger . warning ( f " [GPT Warning] translate_words_batch: unexpected format, got { type ( result ) } " )
return [ { " word " : w , " translation " : " " , " transcription " : " " } for w in words ]
logger . info ( f " [GPT Response] translate_words_batch: success, got { len ( result ) } translations " )
return result
except Exception as e :
logger . error ( f " [GPT Error] translate_words_batch: { type ( e ) . __name__ } : { str ( e ) } " )
# Возвращаем слова без перевода в случае ошибки
return [ { " word " : w , " translation " : " " , " transcription " : " " } for w in words ]
2025-12-04 11:09:54 +03:00
async def check_answer ( self , question : str , correct_answer : str , user_answer : str ) - > Dict :
"""
Проверить ответ пользователя с помощью ИИ
Args :
question : Вопрос задания
correct_answer : Правильный ответ
user_answer : Ответ пользователя
Returns :
Dict с результатом проверки и обратной связью
"""
prompt = f """ Проверь ответ пользователя на задание по английскому языку.
Задание : { question }
Правильный ответ : { correct_answer }
Ответ пользователя : { user_answer }
Верни ответ в формате JSON :
{ {
" is_correct " : true / false ,
" feedback " : " краткое объяснение (если ответ неверный, объясни ошибку и дай правильный вариант) " ,
" score " : 0 - 100
} }
Учитывай возможные вариации ответа . Если смысл передан правильно , даже с небольшими грамматическими неточностями , засчитывай ответ . """
try :
2025-12-04 16:45:03 +03:00
logger . info ( f " [GPT Request] check_answer: user_answer= ' { user_answer [ : 30 ] } ... ' " )
messages = [
{ " role " : " system " , " content " : " Ты - преподаватель английского языка. Проверяй ответы справедливо, учитывая контекст. " } ,
{ " role " : " user " , " content " : prompt }
]
response_data = await self . _make_openai_request ( messages , temperature = 0.3 )
2025-12-04 11:09:54 +03:00
import json
2025-12-04 16:45:03 +03:00
result = json . loads ( response_data [ ' choices ' ] [ 0 ] [ ' message ' ] [ ' content ' ] )
logger . info ( f " [GPT Response] check_answer: is_correct= { result . get ( ' is_correct ' , False ) } , score= { result . get ( ' score ' , 0 ) } " )
2025-12-04 11:09:54 +03:00
return result
except Exception as e :
2025-12-04 16:45:03 +03:00
logger . error ( f " [GPT Error] check_answer: { type ( e ) . __name__ } : { str ( e ) } " )
2025-12-04 11:09:54 +03:00
return {
" is_correct " : False ,
" feedback " : " Ошибка проверки ответа " ,
" score " : 0
}
2025-12-04 19:40:01 +03:00
async def generate_fill_in_sentence ( self , word : str , learning_lang : str = " en " , translation_lang : str = " ru " ) - > Dict :
2025-12-04 14:46:30 +03:00
"""
Сгенерировать предложение с пропуском для заданного слова
Args :
2025-12-04 19:40:01 +03:00
word : Слово ( на языке обучения ) , для которого нужно создать предложение
learning_lang : Язык обучения ( ISO2 )
translation_lang : Язык перевода предложения ( ISO2 )
2025-12-04 14:46:30 +03:00
Returns :
Dict с предложением и правильным ответом
"""
2025-12-04 19:40:01 +03:00
prompt = f """ Создай предложение на языке { learning_lang } , используя слово " { word } " .
2025-12-04 14:46:30 +03:00
Замени это слово на пропуск " ___ " .
Верни ответ в формате JSON :
{ {
" sentence " : " предложение с пропуском ___ " ,
" answer " : " {word} " ,
2025-12-04 19:40:01 +03:00
" translation " : " перевод предложения на {translation_lang} "
2025-12-04 14:46:30 +03:00
} }
Предложение должно быть простым и естественным . Контекст должен четко подсказывать правильное слово . """
try :
2025-12-04 19:40:01 +03:00
logger . info ( f " [GPT Request] generate_fill_in_sentence: word= ' { word } ' , lang= ' { learning_lang } ' , to= ' { translation_lang } ' " )
2025-12-04 16:45:03 +03:00
messages = [
2025-12-04 19:40:01 +03:00
{ " role " : " system " , " content " : " Ты - преподаватель иностранных языков. Создавай простые и понятные упражнения. " } ,
2025-12-04 16:45:03 +03:00
{ " role " : " user " , " content " : prompt }
]
response_data = await self . _make_openai_request ( messages , temperature = 0.7 )
2025-12-04 14:46:30 +03:00
import json
2025-12-04 16:45:03 +03:00
result = json . loads ( response_data [ ' choices ' ] [ 0 ] [ ' message ' ] [ ' content ' ] )
logger . info ( f " [GPT Response] generate_fill_in_sentence: success " )
2025-12-04 14:46:30 +03:00
return result
except Exception as e :
2025-12-04 16:45:03 +03:00
logger . error ( f " [GPT Error] generate_fill_in_sentence: { type ( e ) . __name__ } : { str ( e ) } " )
2025-12-04 14:46:30 +03:00
return {
" sentence " : f " I like to ___ every day. " ,
" answer " : word ,
" translation " : f " Мне нравится { word } каждый день. "
}
2025-12-04 19:40:01 +03:00
async def generate_thematic_words ( self , theme : str , level : str = " B1 " , count : int = 10 , learning_lang : str = " en " , translation_lang : str = " ru " ) - > List [ Dict ] :
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
"""
Сгенерировать подборку слов по теме
Args :
theme : Тема для подборки слов
level : Уровень сложности ( A1 - C2 )
count : Количество слов
Returns :
Список словарей с информацией о словах
"""
2025-12-04 19:40:01 +03:00
prompt = f """ Создай подборку из { count } слов на языке { learning_lang } по теме " { theme } " для уровня { level } . Переводы дай на { translation_lang } .
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
Верни ответ в формате JSON :
{ {
" theme " : " {theme} " ,
" words " : [
{ {
2025-12-04 19:40:01 +03:00
" word " : " слово на {learning_lang} " ,
" translation " : " перевод на {translation_lang} " ,
" transcription " : " транскрипция в IPA (если применимо) " ,
" example " : " пример использования на {learning_lang} "
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
} }
]
} }
Слова должны быть :
- Полезными и часто используемыми
- Соответствовать уровню { level }
- Связаны с темой " {theme} "
- Разнообразными ( существительные , глаголы , прилагательные ) """
try :
2025-12-04 19:40:01 +03:00
logger . info ( f " [GPT Request] generate_thematic_words: theme= ' { theme } ' , level= ' { level } ' , count= { count } , learn= ' { learning_lang } ' , to= ' { translation_lang } ' " )
2025-12-04 16:45:03 +03:00
messages = [
2025-12-04 19:40:01 +03:00
{ " role " : " system " , " content " : " Ты - преподаватель иностранных языков. Подбирай полезные и актуальные слова. " } ,
2025-12-04 16:45:03 +03:00
{ " role " : " user " , " content " : prompt }
]
response_data = await self . _make_openai_request ( messages , temperature = 0.7 )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
import json
2025-12-04 16:45:03 +03:00
result = json . loads ( response_data [ ' choices ' ] [ 0 ] [ ' message ' ] [ ' content ' ] )
words_count = len ( result . get ( ' words ' , [ ] ) )
logger . info ( f " [GPT Response] generate_thematic_words: success, generated { words_count } words " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
return result . get ( ' words ' , [ ] )
except Exception as e :
2025-12-04 16:45:03 +03:00
logger . error ( f " [GPT Error] generate_thematic_words: { type ( e ) . __name__ } : { str ( e ) } " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
return [ ]
2025-12-04 19:40:01 +03:00
async def extract_words_from_text ( self , text : str , level : str = " B1 " , max_words : int = 15 , learning_lang : str = " en " , translation_lang : str = " ru " ) - > List [ Dict ] :
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
"""
Извлечь ключевые слова из текста для изучения
Args :
text : Текст на английском языке
level : Уровень пользователя ( A1 - C2 )
max_words : Максимальное количество слов для извлечения
Returns :
Список словарей с информацией о словах
"""
2025-12-04 19:40:01 +03:00
prompt = f """ Проанализируй следующий текст на языке { learning_lang } и извлеки из него до { max_words } самых полезных слов для изучения на уровне { level } . Переводы дай на { translation_lang } .
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
Текст :
{ text }
Верни ответ в формате JSON :
{ {
" words " : [
{ {
2025-12-04 19:40:01 +03:00
" word " : " слово на {learning_lang} (в базовой форме) " ,
" translation " : " перевод на {translation_lang} " ,
" transcription " : " транскрипция в IPA (если применимо) " ,
" context " : " предложение из текста на {learning_lang} , где используется это слово "
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
} }
]
} }
Критерии отбора слов :
- Выбирай самые важные и полезные слова из текста
- Слова должны быть интересны для уровня { level }
- Н е включай простейшие слова ( a , the , is , и т . д . )
- Слова должны быть в базовой форме ( инфинитив для глаголов , ед . число для существительных )
- Разнообразие : существительные , глаголы , прилагательные , устойчивые выражения """
try :
2025-12-04 16:45:03 +03:00
text_preview = text [ : 100 ] + " ... " if len ( text ) > 100 else text
2025-12-04 19:40:01 +03:00
logger . info ( f " [GPT Request] extract_words_from_text: text_length= { len ( text ) } , level= ' { level } ' , max_words= { max_words } , learn= ' { learning_lang } ' , to= ' { translation_lang } ' " )
2025-12-04 16:45:03 +03:00
messages = [
2025-12-04 19:40:01 +03:00
{ " role " : " system " , " content " : " Ты - преподаватель иностранных языков. Помогаешь извлекать полезные слова для изучения из текстов. " } ,
2025-12-04 16:45:03 +03:00
{ " role " : " user " , " content " : prompt }
]
response_data = await self . _make_openai_request ( messages , temperature = 0.5 )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
import json
2025-12-04 16:45:03 +03:00
result = json . loads ( response_data [ ' choices ' ] [ 0 ] [ ' message ' ] [ ' content ' ] )
words_count = len ( result . get ( ' words ' , [ ] ) )
logger . info ( f " [GPT Response] extract_words_from_text: success, extracted { words_count } words " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
return result . get ( ' words ' , [ ] )
except Exception as e :
2025-12-04 16:45:03 +03:00
logger . error ( f " [GPT Error] extract_words_from_text: { type ( e ) . __name__ } : { str ( e ) } " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
return [ ]
2025-12-04 19:40:01 +03:00
async def start_conversation ( self , scenario : str , level : str = " B1 " , learning_lang : str = " en " , translation_lang : str = " ru " ) - > Dict :
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
"""
Начать диалоговую практику с AI
Args :
scenario : Сценарий диалога ( restaurant , shopping , travel , etc . )
level : Уровень пользователя ( A1 - C2 )
Returns :
Dict с начальной репликой и контекстом
"""
scenarios = {
" restaurant " : " ресторан - заказ еды " ,
" shopping " : " магазин - покупка одежды " ,
" travel " : " аэропорт/отель - путешествие " ,
" work " : " офис - рабочая встреча " ,
" doctor " : " клиника - визит к врачу " ,
" casual " : " повседневный разговор "
}
scenario_desc = scenarios . get ( scenario , " повседневный разговор " )
2025-12-04 20:48:38 +03:00
extra_fields = ' '
if learning_lang . lower ( ) == ' ja ' :
2025-12-04 21:37:21 +03:00
# Для японского просим версию с фуриганой в скобках ТОЛЬКО для кандзи
# Н е добавляй фуригану к кана или латинским буквам
extra_fields = " , \n \" message_annotated \" : \" фраза на {learning_lang} с фуриганой в скобках ТОЛЬКО к кандзи (Так правильно: いらっしゃいませ!今日は何を注文(ちゅうもん)しますか?, Так неправильно: こんにちは(こんにちは)!今日ははどうですか?); к こんにちは не добовляй фурагану; не добавляй фуригану к катакане, фуригане, хирагане, частице и латинице \" "
2025-12-04 20:48:38 +03:00
2025-12-04 19:40:01 +03:00
prompt = f """ Ты - собеседник для практики языка { learning_lang } уровня { level } .
Начни диалог в сценарии : { scenario_desc } на { learning_lang } .
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
Верни ответ в формате JSON :
{ {
2025-12-04 19:40:01 +03:00
" message " : " твоя первая реплика на {learning_lang} " ,
" translation " : " перевод на {translation_lang} " ,
" context " : " краткое описание ситуации на {translation_lang} " ,
2025-12-04 21:37:21 +03:00
" suggestions " : [
{ { " learn " : " подсказка на {learning_lang} " , " learn_annotated " : " подсказка с фуриганой в скобках ТОЛЬКО к кандзи (Так правильно: いらっしゃいませ!今日は何を注文(ちゅうもん)しますか?, Так неправильно: こんにちは(こんにちは)!今日ははどうですか?); к こんにちは не добовляй фурагану; не добавляй фуригану к катакане, фуригане, хирагане, частице и латинице; {learning_lang} ) " , " trans " : " перевод подсказки на {translation_lang} " } } ,
{ { " learn " : " ... " , " learn_annotated " : " ... " , " trans " : " ... " } } ,
{ { " learn " : " ... " , " learn_annotated " : " ... " , " trans " : " ... " } }
] { extra_fields }
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
} }
Требования :
- Говори естественно , используй уровень { level }
- Создай интересную ситуацию
- Задай вопрос или начни разговор
- Подсказки должны помочь пользователю ответить """
try :
2025-12-04 19:40:01 +03:00
logger . info ( f " [GPT Request] start_conversation: scenario= ' { scenario } ' , level= ' { level } ' , learn= ' { learning_lang } ' , to= ' { translation_lang } ' " )
2025-12-04 16:45:03 +03:00
messages = [
2025-12-04 19:40:01 +03:00
{ " role " : " system " , " content " : " Ты - дружелюбный собеседник для практики иностранных языков. Веди естественный диалог. " } ,
2025-12-04 16:45:03 +03:00
{ " role " : " user " , " content " : prompt }
]
response_data = await self . _make_openai_request ( messages , temperature = 0.8 )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
import json
2025-12-04 16:45:03 +03:00
result = json . loads ( response_data [ ' choices ' ] [ 0 ] [ ' message ' ] [ ' content ' ] )
logger . info ( f " [GPT Response] start_conversation: success, scenario= ' { scenario } ' " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
return result
except Exception as e :
2025-12-04 16:45:03 +03:00
logger . error ( f " [GPT Error] start_conversation: { type ( e ) . __name__ } : { str ( e ) } " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
return {
" message " : " Hello! How are you today? " ,
" translation " : " Привет! Как дела сегодня? " ,
" context " : " Повседневный разговор " ,
" suggestions " : [ " I ' m fine, thank you! " , " Good, and you? " , " Not bad! " ]
}
async def continue_conversation (
self ,
conversation_history : List [ Dict ] ,
user_message : str ,
scenario : str ,
2025-12-04 19:40:01 +03:00
level : str = " B1 " ,
learning_lang : str = " en " ,
translation_lang : str = " ru "
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
) - > Dict :
"""
Продолжить диалог и проверить ответ пользователя
Args :
conversation_history : История диалога
user_message : Сообщение пользователя
scenario : Сценарий диалога
level : Уровень пользователя
Returns :
Dict с ответом AI , проверкой и подсказками
"""
# Формируем историю для контекста
history_text = " \n " . join ( [
f " { ' AI ' if msg [ ' role ' ] == ' assistant ' else ' User ' } : { msg [ ' content ' ] } "
for msg in conversation_history [ - 6 : ] # Последние 6 сообщений
] )
2025-12-04 20:48:38 +03:00
extra_fields_resp = ' '
if learning_lang . lower ( ) == ' ja ' :
2025-12-04 21:37:21 +03:00
# Для японского просим версию ответа с фуриганой ТОЛЬКО для кандзи
# Н е добавляй фуригану к кана или латинским буквам
extra_fields_resp = " , \n \" response_annotated \" : \" ответ на {learning_lang} с фуриганой ТОЛЬКО для кандзи (напр.: 今日(きょう)); не добавляй фуригану к кана или латинице \" "
2025-12-04 20:48:38 +03:00
2025-12-04 19:40:01 +03:00
prompt = f """ Ты ведешь диалог на языке { learning_lang } уровня { level } в сценарии " { scenario } " .
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
История диалога :
{ history_text }
User : { user_message }
Верни ответ в формате JSON :
{ {
2025-12-04 19:40:01 +03:00
" response " : " твой ответ на {learning_lang} " ,
" translation " : " перевод твоего ответа на {translation_lang} " ,
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
" feedback " : { {
" has_errors " : true / false ,
" corrections " : " исправления ошибок пользователя (если есть) " ,
" comment " : " краткий комментарий о б ответе пользователя "
} } ,
2025-12-04 21:37:21 +03:00
" suggestions " : [
{ { " learn " : " подсказка на {learning_lang} " , " learn_annotated " : " подсказка с фуриганой (ТОЛЬКО для кандзи; {learning_lang} ) " , " trans " : " перевод подсказки на {translation_lang} " } } ,
{ { " learn " : " ... " , " learn_annotated " : " ... " , " trans " : " ... " } }
] { extra_fields_resp }
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
} }
Требования :
- Продолжай естественный диалог
- Если у пользователя есть грамматические или лексические ошибки , укажи их в corrections
- Будь дружелюбным и поддерживающим
- Используй лексику уровня { level } """
try :
2025-12-04 19:40:01 +03:00
logger . info ( f " [GPT Request] continue_conversation: scenario= ' { scenario } ' , level= ' { level } ' , history_length= { len ( conversation_history ) } , learn= ' { learning_lang } ' , to= ' { translation_lang } ' " )
2025-12-04 16:45:03 +03:00
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
# Формируем сообщения для API
messages = [
2025-12-04 19:40:01 +03:00
{ " role " : " system " , " content " : f " Ты - дружелюбный собеседник для практики языка { learning_lang } уровня { level } . Веди естественный диалог и помогай исправлять ошибки. " }
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
]
# Добавляем историю
for msg in conversation_history [ - 6 : ] :
messages . append ( msg )
# Добавляем текущее сообщение пользователя
messages . append ( { " role " : " user " , " content " : user_message } )
# Добавляем инструкцию для форматирования ответа
messages . append ( { " role " : " user " , " content " : prompt } )
2025-12-04 16:45:03 +03:00
response_data = await self . _make_openai_request ( messages , temperature = 0.8 )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
import json
2025-12-04 16:45:03 +03:00
result = json . loads ( response_data [ ' choices ' ] [ 0 ] [ ' message ' ] [ ' content ' ] )
has_errors = result . get ( ' feedback ' , { } ) . get ( ' has_errors ' , False )
logger . info ( f " [GPT Response] continue_conversation: success, has_errors= { has_errors } " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
return result
except Exception as e :
2025-12-04 16:45:03 +03:00
logger . error ( f " [GPT Error] continue_conversation: { type ( e ) . __name__ } : { str ( e ) } " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
return {
" response " : " I see. Tell me more about that. " ,
" translation " : " Понятно. Расскажи мне больше о б этом. " ,
" feedback " : {
" has_errors " : False ,
" corrections " : " " ,
" comment " : " Good! "
} ,
" suggestions " : [ " Sure! " , " Well... " , " Actually... " ]
}
2025-12-05 14:30:24 +03:00
async def generate_level_test ( self , learning_language : str = " en " ) - > List [ Dict ] :
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
"""
2025-12-05 14:30:24 +03:00
Сгенерировать тест для определения уровня языка
Args :
learning_language : Язык изучения ( en , es , de , fr , ja )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
Returns :
Список из 7 вопросов разной сложности
"""
2025-12-05 14:30:24 +03:00
# Определяем систему уровней и язык для промпта
if learning_language == " ja " :
level_system = " JLPT (N5-N1) "
language_name = " японского "
levels_req = """ - Вопросы 1-2: уровень N5 (базовый)
- Вопросы 3 - 4 : уровень N4 - N3 ( элементарный - средний )
- Вопросы 5 - 6 : уровень N2 ( продвинутый )
- Вопрос 7 : уровень N1 ( профессиональный ) """
level_example = " N5 "
else :
level_system = " CEFR (A1-C2) "
lang_names = { " en " : " английского " , " es " : " испанского " , " de " : " немецкого " , " fr " : " французского " }
language_name = lang_names . get ( learning_language , " английского " )
levels_req = """ - Вопросы 1-2: уровень A1 (базовый)
- Вопросы 3 - 4 : уровень A2 - B1 ( элементарный - средний )
- Вопросы 5 - 6 : уровень B2 - C1 ( продвинутый )
- Вопрос 7 : уровень C2 ( профессиональный ) """
level_example = " A1 "
prompt = f """ Создай тест из 7 вопросов для определения уровня { language_name } языка ( { level_system } ).
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
Верни ответ в формате JSON :
2025-12-05 14:30:24 +03:00
{ {
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
" questions " : [
2025-12-05 14:30:24 +03:00
{ {
" question " : " текст вопроса на изучаемом языке " ,
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
" question_ru " : " перевод вопроса на русский " ,
" options " : [ " вариант A " , " вариант B " , " вариант C " , " вариант D " ] ,
" correct " : 0 ,
2025-12-05 14:30:24 +03:00
" level " : " {level_example} "
} }
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
]
2025-12-05 14:30:24 +03:00
} }
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
Требования :
2025-12-05 14:30:24 +03:00
{ levels_req }
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
- Каждый вопрос с 4 вариантами ответа
- correct - индекс правильного ответа ( 0 - 3 )
- Вопросы на грамматику , лексику и понимание """
try :
2025-12-05 14:30:24 +03:00
logger . info ( f " [GPT Request] generate_level_test: generating 7 questions for { learning_language } " )
2025-12-04 16:45:03 +03:00
2025-12-05 14:30:24 +03:00
system_msg = f " Ты - эксперт по тестированию уровня { language_name } языка. Создавай объективные тесты. "
2025-12-04 16:45:03 +03:00
messages = [
2025-12-05 14:30:24 +03:00
{ " role " : " system " , " content " : system_msg } ,
2025-12-04 16:45:03 +03:00
{ " role " : " user " , " content " : prompt }
]
response_data = await self . _make_openai_request ( messages , temperature = 0.7 )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
import json
2025-12-04 16:45:03 +03:00
result = json . loads ( response_data [ ' choices ' ] [ 0 ] [ ' message ' ] [ ' content ' ] )
questions_count = len ( result . get ( ' questions ' , [ ] ) )
logger . info ( f " [GPT Response] generate_level_test: success, generated { questions_count } questions " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
return result . get ( ' questions ' , [ ] )
except Exception as e :
2025-12-04 16:45:03 +03:00
logger . error ( f " [GPT Error] generate_level_test: { type ( e ) . __name__ } : { str ( e ) } , using fallback questions " )
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
# Fallback с базовыми вопросами
2025-12-05 14:30:24 +03:00
if learning_language == " ja " :
return self . _get_jlpt_fallback_questions ( )
return self . _get_cefr_fallback_questions ( )
def _get_cefr_fallback_questions ( self ) - > List [ Dict ] :
""" Fallback вопросы для CEFR (английский и европейские языки) """
return [
{
" question " : " What is your name? " ,
" question_ru " : " Как тебя зовут? " ,
" options " : [ " My name is " , " I am name " , " Name my is " , " Is name my " ] ,
" correct " : 0 ,
" level " : " A1 "
} ,
{
" question " : " I ___ to school every day. " ,
" question_ru " : " Я ___ в школу каждый день. " ,
" options " : [ " go " , " goes " , " going " , " went " ] ,
" correct " : 0 ,
" level " : " A1 "
} ,
{
" question " : " She ___ been to Paris twice. " ,
" question_ru " : " Она ___ в Париже дважды. " ,
" options " : [ " have " , " has " , " had " , " having " ] ,
" correct " : 1 ,
" level " : " A2 "
} ,
{
" question " : " If I ___ rich, I would travel the world. " ,
" question_ru " : " Если бы я был богат, я бы путешествовал по миру. " ,
" options " : [ " am " , " was " , " were " , " be " ] ,
" correct " : 2 ,
" level " : " B1 "
} ,
{
" question " : " The project ___ by next Monday. " ,
" question_ru " : " Проект ___ к следующему понедельнику. " ,
" options " : [ " will complete " , " will be completed " , " completes " , " is completing " ] ,
" correct " : 1 ,
" level " : " B2 "
} ,
{
" question " : " Had I known about the meeting, I ___ attended. " ,
" question_ru " : " Если бы я знал о встрече, я бы посетил. " ,
" options " : [ " would have " , " will have " , " would " , " will " ] ,
" correct " : 0 ,
" level " : " C1 "
} ,
{
" question " : " The nuances of his argument were so ___ that few could grasp them. " ,
" question_ru " : " Нюансы е г о аргумента были настолько ___, что немногие могли их понять. " ,
" options " : [ " subtle " , " obvious " , " simple " , " clear " ] ,
" correct " : 0 ,
" level " : " C2 "
}
]
def _get_jlpt_fallback_questions ( self ) - > List [ Dict ] :
""" Fallback вопросы для JLPT (японский) """
return [
{
" question " : " これは ___です。 " ,
" question_ru " : " Это ___. " ,
" options " : [ " ほん " , " 本ん " , " ぼん " , " もと " ] ,
" correct " : 0 ,
" level " : " N5 "
} ,
{
" question " : " 私は毎日学校に___。 " ,
" question_ru " : " Я каждый день хожу в школу. " ,
" options " : [ " いきます " , " いくます " , " いきす " , " いきました " ] ,
" correct " : 0 ,
" level " : " N5 "
} ,
{
" question " : " 昨日、映画を___から、今日は勉強します。 " ,
" question_ru " : " Вчера я посмотрел фильм, поэтому сегодня буду учиться. " ,
" options " : [ " 見た " , " 見て " , " 見る " , " 見ない " ] ,
" correct " : 0 ,
" level " : " N4 "
} ,
{
" question " : " この本は読み___です。 " ,
" question_ru " : " Эту книгу легко/трудно читать. " ,
" options " : [ " やすい " , " にくい " , " たい " , " そう " ] ,
" correct " : 0 ,
" level " : " N3 "
} ,
{
" question " : " 彼の話を聞く___、涙が出てきた。 " ,
" question_ru " : " Слушая е г о рассказ, у меня потекли слёзы. " ,
" options " : [ " につれて " , " にしたがって " , " とともに " , " うちに " ] ,
" correct " : 0 ,
" level " : " N2 "
} ,
{
" question " : " その計画は実現不可能と___。 " ,
" question_ru " : " Этот план считается невыполнимым. " ,
" options " : [ " 言わざるを得ない " , " 言うまでもない " , " 言いかねない " , " 言うに及ばない " ] ,
" correct " : 0 ,
" level " : " N2 "
} ,
{
" question " : " 彼の行動は___に堪えない。 " ,
" question_ru " : " Е г о поведение невозможно понять/вынести." ,
" options " : [ " 理解 " , " 批判 " , " 説明 " , " 弁解 " ] ,
" correct " : 0 ,
" level " : " N1 "
}
]
Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня
Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)
Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:46:02 +03:00
2025-12-04 11:09:54 +03:00
# Глобальный экземпляр сервиса
ai_service = AIService ( )