2
This commit is contained in:
parent
4d444b4621
commit
b9bf405a70
1 changed files with 23 additions and 20 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue