import json
import os

import requests

# Основные настройки
OLLAMA_URL = "http://localhost:11434/api/generate"
MODEL_NAME = "qwen3:30b-a3b"  # Имя модели в Ollama


def generate_breed_description(breed):
    """Генерирует описание породы с помощью Ollama"""
    prompt = f"""Создай подробное и структурированное описание породы собаки {breed}, включая следующие разделы:
1. Происхождение и история породы
2. Физические характеристики (размер, вес, тип шерсти)
3. Характер и поведение (темперамент, уровень энергии, совместимость с детьми и другими животными, насколько опасна без тренировок)
4. Интеллект, способность к обучению, необходимость умственных нагрузок
5. Уход и содержание (необходимость в гигиене, тренировках, физической активности)
6. Потенциальные проблемы со здоровьем и продолжительность жизни
7. Рекомендуемое питание и режим кормления
8. Выводы кому подходит такая порода
    
Описание должно быть понятным для владельцев, с четкой структурой и полезной информацией."""

    response = requests.post(OLLAMA_URL, json={"model": MODEL_NAME, "prompt": prompt, "stream": False})

    if response.status_code == 200:
        return response.json().get("response", "Не удалось получить описание")
    else:
        return f"Ошибка при генерации описания для {breed}"


def save_description(breed, description):
    """Сохраняет описание в файл"""
    os.makedirs("breed_descriptions", exist_ok=True)
    filename = f"breed_descriptions/{breed}.txt"

    with open(filename, "w", encoding="utf-8") as f:
        f.write(description)
    print(f"Сохранено: {filename}")


def main():
    with open("../../labels_dogs.json") as f:
        beers = json.load(f)
        for key in beers:
            name = beers[key].replace("_", " ")
            print(f"Генерация описания для {name}...")
            if os.path.isfile(f"breed_descriptions/{beers[key]}.txt"):
                print(f"Описание уже существует: {beers[key]}.")
                continue
            description = generate_breed_description(name)
            save_description(beers[key], description)


if __name__ == "__main__":
    main()
