Improved prompt for GPT

This commit is contained in:
2025-12-16 03:41:34 +07:00
parent fe6012b7a3
commit 9fd93a185c

View File

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