from openai import AsyncOpenAI from config.settings import settings from typing import Dict, List class AIService: """Сервис для работы с OpenAI API""" def __init__(self): self.client = AsyncOpenAI(api_key=settings.openai_api_key) async def translate_word(self, word: str, target_lang: str = "ru") -> Dict: """ Перевести слово и получить дополнительную информацию Args: word: Слово для перевода target_lang: Язык перевода (по умолчанию русский) Returns: Dict с переводом, транскрипцией и примерами """ prompt = f"""Переведи английское слово/фразу "{word}" на русский язык. Верни ответ строго в формате JSON: {{ "word": "{word}", "translation": "перевод", "transcription": "транскрипция в IPA", "examples": [ {{"en": "пример на английском", "ru": "перевод примера"}}, {{"en": "ещё один пример", "ru": "перевод примера"}} ], "category": "категория слова (работа, еда, путешествия и т.д.)", "difficulty": "уровень сложности (A1/A2/B1/B2/C1/C2)" }} Важно: верни только JSON, без дополнительного текста.""" try: response = await self.client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": "Ты - помощник для изучения английского языка. Отвечай только в формате JSON."}, {"role": "user", "content": prompt} ], temperature=0.3, response_format={"type": "json_object"} ) import json result = json.loads(response.choices[0].message.content) return result except Exception as e: # Fallback в случае ошибки return { "word": word, "translation": "Ошибка перевода", "transcription": "", "examples": [], "category": "unknown", "difficulty": "A1" } 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: response = await self.client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": "Ты - преподаватель английского языка. Проверяй ответы справедливо, учитывая контекст."}, {"role": "user", "content": prompt} ], temperature=0.3, response_format={"type": "json_object"} ) import json result = json.loads(response.choices[0].message.content) return result except Exception as e: return { "is_correct": False, "feedback": "Ошибка проверки ответа", "score": 0 } # Глобальный экземпляр сервиса ai_service = AIService()