From b9bf405a706a064dd1bda230249087cbc84865cf Mon Sep 17 00:00:00 2001 From: dropboy27 Date: Mon, 6 Apr 2026 14:25:48 +0300 Subject: [PATCH] 2 --- src/image_bot.py | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/src/image_bot.py b/src/image_bot.py index df59888..7d756dc 100644 --- a/src/image_bot.py +++ b/src/image_bot.py @@ -547,7 +547,7 @@ async def generate_architecture_diagram(prompt: str) -> bytes | None: ТРЕБОВАНИЯ К КАЧЕСТВУ: 1. Размер фигуры: figsize=(14, 10) или больше 2. DPI: минимум 150 для высокого качества -3. Шрифты: plt.rcParams['font.family'] = 'DejaVu Sans' для кириллицы +3. Шрифты: используй DejaVu Sans для кириллицы 4. Цвета: профессиональная палитра для разных слоёв: - Frontend: lightblue (#E3F2FD) - Backend/API: lightgreen (#E8F5E9) @@ -556,45 +556,45 @@ async def generate_architecture_diagram(prompt: str) -> bytes | None: - Cache: lightpurple (#F3E5F5) ЭЛЕМЕНТЫ АРХИТЕКТУРНОЙ ДИАГРАММЫ: -- FancyBboxPatch с boxstyle="round,pad=0.05" для компонентов -- Стрелки FancyArrowPatch для связей между компонентами +- Используй patches.FancyBboxPatch для компонентов +- Стрелки FancyArrowPatch для связей - Текст с ha='center', va='center' для подписей -- Группировка компонентов в логические слои + +ВАЖНО: Синтаксис FancyBboxPatch - все параметры передаются в конструктор: +patches.FancyBboxPatch(x, y, width, height, boxstyle="round,pad=0.05", facecolor="color", edgecolor="color", linewidth=2) ПРИМЕР КОДА: import matplotlib.pyplot as plt from matplotlib import patches -plt.rcParams['font.family'] = 'DejaVu Sans' +plt.rcParams["font.family"] = "DejaVu Sans" fig, ax = plt.subplots(figsize=(14, 10)) -# Frontend layer -frontend = patches.FancyBboxPatch((0.1, 0.7), 0.3, 0.15, boxstyle="round,pad=0.05", - facecolor="#E3F2FD", edgecolor="#1976D2", linewidth=2) -ax.add_patch(frontend) -ax.text(0.25, 0.775, "Frontend", ha='center', va='center', fontsize=14, fontweight='bold') -# Arrow -arrow = patches.FancyArrowPatch((0.4, 0.75), (0.6, 0.55), - arrowstyle='->', mutation_scale=20, linewidth=2) +# Создаём компонент +rect = patches.FancyBboxPatch((0.1, 0.7), 0.3, 0.15, boxstyle="round,pad=0.05", facecolor="#E3F2FD", edgecolor="#1976D2", linewidth=2) +ax.add_patch(rect) +ax.text(0.25, 0.775, "Frontend", ha="center", va="center", fontsize=14, fontweight="bold") +# Создаём стрелку +arrow = patches.FancyArrowPatch((0.45, 0.75), (0.6, 0.55), arrowstyle="->", mutation_scale=20, linewidth=2, color="gray") ax.add_patch(arrow) -ax.axis('off') -plt.title('Архитектура системы', fontsize=18, fontweight='bold', pad=20) -plt.savefig('architecture.png', dpi=150, bbox_inches='tight') +ax.axis("off") +plt.title("Архитектура системы", fontsize=18, fontweight="bold", pad=20) +plt.savefig("architecture.png", dpi=150, bbox_inches="tight") plt.close() -Генерируй ТОЛЬКО Python код без объяснений.""" +Генерируй ТОЛЬКО Python код без объяснений. Используй двойные кавычки.""" user_prompt = f"""Создай профессиональную архитектурную диаграмму для следующего запроса: {prompt} Требования: -- Используй FancyBboxPatch для компонентов +- Используй FancyBboxPatch для компонентов (все параметры в конструкторе) - Добавь стрелки FancyArrowPatch для связей - Цвета для разных слоёв архитектуры - Чёткие подписи на русском языке - Заголовок диаграммы - Сохраняй в 'architecture.png' -Генерируй ТОЛЬКО Python код без объяснений.""" +Генерируй ТОЛЬКО Python код без объяснений. Используй двойные кавычки.""" code = await get_code_from_qwen(system_prompt, user_prompt, temperature=0.4) if code: @@ -961,11 +961,14 @@ async def get_code_from_qwen(system_prompt: str, user_prompt: str, temperature: """Get code from Qwen API with retry logic.""" headers = {"Authorization": f"Bearer {QWEN_API_KEY}", "Content-Type": "application/json"} + # Add unique timestamp to bypass any caching + unique_id = f"{int(time.time() * 1000)}-{random.randint(10000, 99999)}" + payload = { "model": QWEN_MODEL, "messages": [ {"role": "system", "content": system_prompt}, - {"role": "user", "content": user_prompt} + {"role": "user", "content": f"{user_prompt}\n\n[Unique request ID: {unique_id}. Это не часть кода, просто идентификатор запроса.]"} ], "temperature": temperature, "max_tokens": 4096,