uzchess_hackathon_1 / core /ai_integration.py
MrSimple07's picture
added in the right github structure
39e757b
import os
from collections import defaultdict
import logging
import google.generativeai as genai
GEMINI_API_KEY = os.environ.get('GEMINI_API_KEY')
genai.configure(api_key=GEMINI_API_KEY)
model = genai.GenerativeModel('gemini-2.0-flash-exp')
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def get_comprehensive_analysis(weaknesses, opening_stats, color_stats, total_games):
weakness_text = "\n".join([f"- {w['category']}: {w['count']} marta ({w['percentage']:.1f}%)" for w in weaknesses])
opening_text = "\n".join([f"- {opening}: {stats['total']} o'yin (G'alabalar: {stats['wins']}, Yutqazishlar: {stats['losses']}, Duranglar: {stats['draws']})"
for opening, stats in list(opening_stats.items())[:5]])
color_text = f"Oq rangda: {color_stats['white']['wins']}G-{color_stats['white']['losses']}Y-{color_stats['white']['draws']}D\n"
color_text += f"Qora rangda: {color_stats['black']['wins']}G-{color_stats['black']['losses']}Y-{color_stats['black']['draws']}D"
prompt = f"""Siz professional шахмат murabbiy va tahlilchisiz. O'yinchining {total_games} ta o'yinini tahlil qildingiz.
STATISTIKA:
Zaif tomonlar:
{weakness_text}
Eng ko'p o'ynaladigan debyutlar:
{opening_text}
Rang bo'yicha natijalar:
{color_text}
Quyidagilarni taqdim eting:
1. **ZAIF TOMONLAR TAHLILI**: Har bir zaif tomonni chuqur tahlil qiling va nima uchun bu muammo kelib chiqayotganini tushuntiring.
2. **SHAXSIY O'QUV REJASI**: Kundalik mashg'ulotlar rejasini tuzing:
- Har kuni nechta masala yechish kerak va qanday turdagi masalalar
- Qaysi debyutlarni o'rganish kerak
- Qaysi o'yin bosqichiga ko'proq e'tibor berish kerak
- Kompyuter yoki botlar bilan qanday mashq qilish kerak
3. **TAVSIYA ETILGAN RESURSLAR**:
- Kitoblar (muallif va nom bilan)
- Onlayn kurslar (Uzchess, Chess.com, Lichess)
- YouTube kanallari
- Mashq uchun maxsus botlar yoki dasturlar
4. **DEBYUT TAVSIYALARI**: Statistikaga asoslanib, qaysi debyutlarni davom ettirish va qaysilarini o'zgartirish kerak.
5. **MOTIVATSION XULOSA**: Qisqa va rag'batlantiruvchi xulosa.
MUHIM: Javobni FAQAT O'ZBEK TILIDA yozing! Aniq va amaliy maslahatlar bering."""
try:
response = model.generate_content(prompt)
return response.text
except Exception as e:
logger.error(f"AI analysis failed: {str(e)}")
return f"AI tahlil hozircha mavjud emas: {str(e)}"