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) или больше
|
1. Размер фигуры: figsize=(14, 10) или больше
|
||||||
2. DPI: минимум 150 для высокого качества
|
2. DPI: минимум 150 для высокого качества
|
||||||
3. Шрифты: plt.rcParams['font.family'] = 'DejaVu Sans' для кириллицы
|
3. Шрифты: используй DejaVu Sans для кириллицы
|
||||||
4. Цвета: профессиональная палитра для разных слоёв:
|
4. Цвета: профессиональная палитра для разных слоёв:
|
||||||
- Frontend: lightblue (#E3F2FD)
|
- Frontend: lightblue (#E3F2FD)
|
||||||
- Backend/API: lightgreen (#E8F5E9)
|
- Backend/API: lightgreen (#E8F5E9)
|
||||||
|
|
@ -556,45 +556,45 @@ async def generate_architecture_diagram(prompt: str) -> bytes | None:
|
||||||
- Cache: lightpurple (#F3E5F5)
|
- Cache: lightpurple (#F3E5F5)
|
||||||
|
|
||||||
ЭЛЕМЕНТЫ АРХИТЕКТУРНОЙ ДИАГРАММЫ:
|
ЭЛЕМЕНТЫ АРХИТЕКТУРНОЙ ДИАГРАММЫ:
|
||||||
- FancyBboxPatch с boxstyle="round,pad=0.05" для компонентов
|
- Используй patches.FancyBboxPatch для компонентов
|
||||||
- Стрелки FancyArrowPatch для связей между компонентами
|
- Стрелки FancyArrowPatch для связей
|
||||||
- Текст с ha='center', va='center' для подписей
|
- Текст с 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
|
import matplotlib.pyplot as plt
|
||||||
from matplotlib import patches
|
from matplotlib import patches
|
||||||
plt.rcParams['font.family'] = 'DejaVu Sans'
|
plt.rcParams["font.family"] = "DejaVu Sans"
|
||||||
fig, ax = plt.subplots(figsize=(14, 10))
|
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",
|
rect = patches.FancyBboxPatch((0.1, 0.7), 0.3, 0.15, boxstyle="round,pad=0.05", facecolor="#E3F2FD", edgecolor="#1976D2", linewidth=2)
|
||||||
facecolor="#E3F2FD", edgecolor="#1976D2", linewidth=2)
|
ax.add_patch(rect)
|
||||||
ax.add_patch(frontend)
|
ax.text(0.25, 0.775, "Frontend", ha="center", va="center", fontsize=14, fontweight="bold")
|
||||||
ax.text(0.25, 0.775, "Frontend", ha='center', va='center', fontsize=14, fontweight='bold')
|
# Создаём стрелку
|
||||||
# Arrow
|
arrow = patches.FancyArrowPatch((0.45, 0.75), (0.6, 0.55), arrowstyle="->", mutation_scale=20, linewidth=2, color="gray")
|
||||||
arrow = patches.FancyArrowPatch((0.4, 0.75), (0.6, 0.55),
|
|
||||||
arrowstyle='->', mutation_scale=20, linewidth=2)
|
|
||||||
ax.add_patch(arrow)
|
ax.add_patch(arrow)
|
||||||
ax.axis('off')
|
ax.axis("off")
|
||||||
plt.title('Архитектура системы', fontsize=18, fontweight='bold', pad=20)
|
plt.title("Архитектура системы", fontsize=18, fontweight="bold", pad=20)
|
||||||
plt.savefig('architecture.png', dpi=150, bbox_inches='tight')
|
plt.savefig("architecture.png", dpi=150, bbox_inches="tight")
|
||||||
plt.close()
|
plt.close()
|
||||||
|
|
||||||
Генерируй ТОЛЬКО Python код без объяснений."""
|
Генерируй ТОЛЬКО Python код без объяснений. Используй двойные кавычки."""
|
||||||
|
|
||||||
user_prompt = f"""Создай профессиональную архитектурную диаграмму для следующего запроса:
|
user_prompt = f"""Создай профессиональную архитектурную диаграмму для следующего запроса:
|
||||||
|
|
||||||
{prompt}
|
{prompt}
|
||||||
|
|
||||||
Требования:
|
Требования:
|
||||||
- Используй FancyBboxPatch для компонентов
|
- Используй FancyBboxPatch для компонентов (все параметры в конструкторе)
|
||||||
- Добавь стрелки FancyArrowPatch для связей
|
- Добавь стрелки FancyArrowPatch для связей
|
||||||
- Цвета для разных слоёв архитектуры
|
- Цвета для разных слоёв архитектуры
|
||||||
- Чёткие подписи на русском языке
|
- Чёткие подписи на русском языке
|
||||||
- Заголовок диаграммы
|
- Заголовок диаграммы
|
||||||
- Сохраняй в 'architecture.png'
|
- Сохраняй в 'architecture.png'
|
||||||
|
|
||||||
Генерируй ТОЛЬКО Python код без объяснений."""
|
Генерируй ТОЛЬКО Python код без объяснений. Используй двойные кавычки."""
|
||||||
|
|
||||||
code = await get_code_from_qwen(system_prompt, user_prompt, temperature=0.4)
|
code = await get_code_from_qwen(system_prompt, user_prompt, temperature=0.4)
|
||||||
if code:
|
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."""
|
"""Get code from Qwen API with retry logic."""
|
||||||
headers = {"Authorization": f"Bearer {QWEN_API_KEY}", "Content-Type": "application/json"}
|
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 = {
|
payload = {
|
||||||
"model": QWEN_MODEL,
|
"model": QWEN_MODEL,
|
||||||
"messages": [
|
"messages": [
|
||||||
{"role": "system", "content": system_prompt},
|
{"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,
|
"temperature": temperature,
|
||||||
"max_tokens": 4096,
|
"max_tokens": 4096,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue