diff --git a/backend/app/services/gpt.py b/backend/app/services/gpt.py index 36601b3..41630c1 100644 --- a/backend/app/services/gpt.py +++ b/backend/app/services/gpt.py @@ -28,33 +28,43 @@ class GPTService: """ genre_text = f" (жанр: {game_genre})" if game_genre else "" - prompt = f"""Для видеоигры "{game_title}"{genre_text} сгенерируй 6 челленджей для игрового марафона. + prompt = f"""Ты — эксперт по видеоиграм. Сгенерируй 6 КОНКРЕТНЫХ челленджей для игры "{game_title}"{genre_text}. -Требования: -- 2 лёгких челленджа (15-30 минут игры) -- 2 средних челленджа (1-2 часа игры) -- 2 сложных челленджа (3+ часов или высокая сложность) +ВАЖНО: Челленджи должны быть СПЕЦИФИЧНЫМИ для этой игры! +- Используй РЕАЛЬНЫЕ названия локаций, боссов, персонажей, миссий, уровней из игры +- Основывайся на том, какие челленджи РЕАЛЬНО делают игроки в этой игре (спидраны, no-hit боссов, сбор коллекционных предметов и т.д.) +- НЕ генерируй абстрактные челленджи типа "пройди уровень" или "убей 10 врагов" -Для каждого челленджа укажи: -- title: короткое название на русском (до 50 символов) -- description: что нужно сделать на русском (1-2 предложения) -- type: один из [completion, no_death, speedrun, collection, achievement, challenge_run] -- difficulty: easy/medium/hard -- points: очки (easy: 20-40, medium: 45-75, hard: 90-150) -- estimated_time: примерное время в минутах -- proof_type: screenshot/video/steam (что лучше подойдёт для проверки) -- proof_hint: что должно быть на скриншоте/видео для подтверждения на русском +Примеры ХОРОШИХ челленджей: +- Dark Souls: "Победи Орнштейна и Смоуга без призыва" / "Пройди Чумной город без отравления" +- GTA V: "Получи золото в миссии «Ювелирное дело»" / "Выиграй уличную гонку на Vinewood" +- Hollow Knight: "Победи Хорнет без получения урона" / "Найди все грибные споры в Грибных пустошах" +- Minecraft: "Убей Дракона Края за один визит в Энд" / "Построй работающую ферму железа" -Ответь ТОЛЬКО валидным JSON объектом с ключом "challenges" содержащим массив челленджей. -Пример формата: +Требования по сложности: +- 2 лёгких (15-30 мин): простые задачи, знакомство с игрой +- 2 средних (1-2 часа): требуют навыка или исследования +- 2 сложных (3+ часа): серьёзный челлендж, достижения, полное прохождение + +Формат ответа — JSON: +- title: название на русском (до 50 символов), конкретное и понятное +- description: что именно сделать (1-2 предложения), с деталями из игры +- type: completion | no_death | speedrun | collection | achievement | challenge_run +- difficulty: easy | medium | hard +- points: easy=20-40, medium=45-75, hard=90-150 +- estimated_time: время в минутах +- proof_type: screenshot | video | steam +- proof_hint: ЧТО КОНКРЕТНО должно быть видно на скриншоте/видео (экран победы, достижение, локация и т.д.) + +Ответь ТОЛЬКО JSON: {{"challenges": [{{"title": "...", "description": "...", "type": "...", "difficulty": "...", "points": 50, "estimated_time": 30, "proof_type": "...", "proof_hint": "..."}}]}}""" response = await self.client.chat.completions.create( - model="gpt-4o-mini", + model="gpt-5-mini", messages=[{"role": "user", "content": prompt}], response_format={"type": "json_object"}, - temperature=0.7, - max_tokens=2000, + temperature=0.8, + max_tokens=2500, ) content = response.choices[0].message.content