import json import os import requests # Основные настройки OLLAMA_URL = "http://localhost:11434/api/generate" MODEL_NAME = "qwen3:30b-a3b" # Имя модели в Ollama GIGA_URL = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions" GIGA_ODEL_NAME = "GigaChat-2-Max" def generate_cat_breed_description(breed): """Генерирует подробное описание породы кошки с помощью Ollama""" prompt = f"""Создай подробное и структурированное описание породы кошки {breed}, включая следующие разделы: 1. Происхождение и история породы (откуда появилась, легенды, если есть) 2. Физические характеристики (размер, вес, тип и текстура шерсти, уникальные черты морды или тела) 3. Характер и поведение (темперамент, уровень привязанности к хозяину, активность, игривость, склонность к мяуканью) 4. Совместимость (с детьми, другими кошками и собаками, отношение к незнакомцам) 5. Интеллект и обучаемость (способность к трюкам, приучение к лотку, когтеточке, любопытство) 6. Уход и содержание (особенности груминга, потребность в вертикальном пространстве/игровых комплексах, гигиена ушей и глаз) 7. Здоровье и генетика (характерные для породы заболевания, средняя продолжительность жизни) 8. Питание (склонность к перееданию или аллергиям, рекомендации по рациону) 9. Итог: кому идеально подойдет эта порода (для домоседов, больших семей, аллергиков и т.д.) Описание должно быть написано живым, но информативным языком, с четкой структурой.""" # response = requests.post(OLLAMA_URL, # json={ # "model": MODEL_NAME, # "prompt": prompt, # "stream": False, # }) response = requests.post(GIGA_URL, headers={ 'Content-Type': 'application/json', 'Accept': 'application/json', "Authorization": "Bearer "}, data=json.dumps({ "model": GIGA_ODEL_NAME, "messages":[{ "role": "user", "content": prompt, }], "temperature": 0, "top_p": 0, "stream": False, "max_tokens": 3000, "repetition_penalty": 1, "update_interval": 0 }), verify=False ) if response.status_code == 200: print(response.json()) return response.json().get("choices")[0].get("message").get("content") #return response.json().get("response", "Не удалось получить описание") else: return f"Ошибка при генерации описания для {breed}, {response.status_code}, {response.text}" def save_description(breed_file_name, description): """Сохраняет описание в файл""" os.makedirs("cat_descriptions", exist_ok=True) filename = f"cat_descriptions/{breed_file_name}.txt" with open(filename, "w", encoding="utf-8") as f: f.write(description) print(f"Сохранено: {filename}") def main(): # Путь к JSON файлу с метками кошек labels_path = "../../labels_cats.json" if not os.path.exists(labels_path): print(f"Файл {labels_path} не найден!") return with open(labels_path, encoding="utf-8") as f: cats = json.load(f) for key in cats: # Превращаем "british_shorthair" в "British Shorthair" для промпта name = cats[key].replace("_", " ") file_key = cats[key] print(f"Генерация статьи для кошки: {name}...") # Проверка, существует ли файл, чтобы не тратить токены/время if os.path.isfile(f"cat_descriptions/{file_key}.txt"): print(f"Описание уже существует: {file_key}.") continue description = generate_cat_breed_description(name) save_description(file_key, description) if __name__ == "__main__": main()