Перейти к содержимому

Рисование с помощью AI

Эта страница является справочником по тому, как AI-клиент (ChatGPT, Claude, Gemini, Cursor, …) рисует профессиональные диаграммы в LetDraw через API и MCP. Модели не нужно угадывать схему letdraw: всё, что ниже, также предоставляется модели в момент вызова, поэтому подключённая модель может прочитать это и нарисовать правильно с первой попытки.

Вы не переобучаете модель; вы даёте ей контекст в момент вызова. LetDraw раскрывает все свои знания о рисовании через сервер MCP и REST API:

ЧтоMCPREST
Как рисовать (это руководство, машиночитаемое)resource letdraw://capabilitiesGET /capabilities
Каждая библиотека иконок + все подписи элементовresource letdraw://librariesGET /libraries?items=1
Идентификаторы библиотек + счётчикиtool list_shape_librariesGET /libraries
Найти иконку для компонентаtool search_iconsGET /icons?query=…
Создать / обновить диаграммуtools create_diagram / update_diagramPOST / PATCH /documents

Правильно ведущий себя клиент один раз читает ресурсы letdraw://capabilities и letdraw://libraries, а затем рисует. Направьте свой AI на конечную точку MCP (см. API и MCP); остальное он обнаружит сам.

Золотые правила профессионального результата

Заголовок раздела «Золотые правила профессионального результата»
  1. Используйте настоящие иконки, не рисуйте их. Вызовите search_icons (например, "postgres", "redis", "kubernetes pod", "load balancer") и поместите возвращённое значение ref в поле iconRef блока (например, "databases/PostgreSQL"). Сервер штампует именно эту иконку и размещает подпись под ней.
  2. Держите контейнеры чистыми. Большие группирующие блоки (Kubernetes Cluster, VPC, полоса подсети) должны быть широкими (> 420px) или frame. Иконки штампуются только на блоки размером с узел (шириной 60-420px, высотой 40-260px). Размещайте заголовок контейнера как отдельный текст над ним, а не как привязанную подпись.
  3. Вкладывайте осознанно. Внешний цветной контейнер к блокам размером с узел внутри, каждый со своей иконкой. Лучше всего читаются два или три уровня (Cluster к Worker Node к Pod).
  4. Прокладывайте стрелки аккуратно. Для прямоугольных / многоизломных соединений отправляйте стрелку с 3+ points; привязывайте концы к фигурам, чтобы они оставались прикреплёнными.
  5. Кодируйте цветом по роли и сохраняйте единообразные отступы.

create_diagram / update_diagram принимают elements как либо нативные элементы LetDraw, либо стандартный Excalidraw JSON (автоопределяется и преобразуется на сервере). Создание Excalidraw JSON это самый простой путь к высокому качеству; нативный LetDraw даёт вам специфичные для LetDraw возможности, описанные ниже.

id, type, x, y, width, height плюс стиль: strokeColor (hex), fillColor (hex или "transparent"), fillStyle (hachure | cross-hatch | solid | dots | zigzag | dashed | zigzag-line), strokeWidth (1-8), strokeStyle (solid | dashed | dotted), roughness (clean | sketch | scribble), bowing (straight | curved | wavy), corner (sharp | rounded | beveled), opacity (0-100), seed. Необязательные: text, fontSize, fontFamily (hand | normal | code), textAlign, groupIds, angle (в радианах), link, shadow (none | soft | hard) и расширение LetDraw iconRef.

rectangle, ellipse, diamond, triangle, right-triangle, parallelogram, trapezoid, star, hexagon, heptagon, octagon, cross, cloud, cylinder, speech-bubble, document, manual-input, display, terminator, data-storage, preparation, блочные стрелки (arrow-right/left/up/down), плюс text, image (dataURL), frame (подписанный пунктирный раздел; задайте name), embed (url), math (LaTeX в text), code (исходник в text, language). Фигура несёт свою подпись с text внутри (в формате Excalidraw, через текстовый элемент с containerId).

type: "arrow" и:

  • arrowShape: straight | curved | elbow | s-curve | smart | multipoint | multipoint-curved. smart автоматически прокладывает маршрут вокруг других фигур. multipoint это острая многосегментная ломаная; multipoint-curved её сглаженная версия; обе читают свои углы из points.
  • points: {x, y}[] в абсолютных мировых координатах (от первого к последнему). 2 точки = прямая, 3 = излом (один изгиб), 4+ = проложенная ломаная. Прямоугольное соединение: points: [{x1,y1},{x2,y1},{x2,y2}].
  • controlPoint / controlPoint2: манипуляторы Безье для curved / s-curve / elbow.
  • startArrowhead / endArrowhead: none | arrow | triangle | triangle-outline | circle | diamond | diamond-outline | bar | crows-foot | crows-foot-bar | double-bar | circle-bar | circle-crows-foot. Используйте UML-наконечники (triangle-outline = обобщение, diamond = композиция) и ER-наконечники «воронья лапа» для кардинальности.
  • startBinding / endBinding: {elementId, focus:{x,y}}: привяжите конец к фигуре (focus это точка 0..1 в bbox фигуры), чтобы стрелка следовала за ней.

В формате Excalidraw отправляйте стрелку с points + startArrowhead/endArrowhead; преобразователь сопоставляет 2 / 3 / 4+ точек с straight / elbow / s-curve и пересчитывает привязки.

type: "line" и lineShape: straight | multipoint | multipoint-curved. Многоточечные линии несут points (как у стрелок, без наконечника). Также freedraw (points[]) и highlight (полупрозрачный маркер).

  1. search_icons({ query }) создаёт ранжированный [{ library, label, ref }].
  2. Задайте iconRef: "<library>/<Item Label>" (или { library, label }) на целевом блоке.
  3. create_diagram штампует эту иконку сверху по центру и перемещает подпись под неё.

Явный iconRef всегда имеет приоритет; затем любой оставшийся подписанный узел без иконки автоматически получает наиболее подходящую по ключевому слову иконку. В облачной сцене укажите вендора (kubernetes / aws / azure / gcp), чтобы предпочитались наборы иконок этого вендора. Просматривайте идентификаторы с list_shape_libraries; полный каталог подписей находится в letdraw://libraries (или GET /libraries?items=1).

Продукты баз данных разрешаются в библиотеку Databases: реальные логотипы там, где это позволяет политика бренда (PostgreSQL, MariaDB, Cassandra, DynamoDB, …), иначе подходящие для БД обобщённые иконки (MySQL, Redis, MongoDB, …).

[
{ "id": "db", "type": "rectangle", "x": 0, "y": 0, "width": 200, "height": 90,
"backgroundColor": "#eef2ff", "strokeColor": "#334155", "roundness": { "type": 3 },
"iconRef": "databases/PostgreSQL", "boundElements": [{ "type": "text", "id": "dbt" }] },
{ "id": "dbt", "type": "text", "x": 10, "y": 30, "text": "Orders DB", "containerId": "db" },
{ "id": "a1", "type": "arrow", "x": 200, "y": 45, "points": [[0, 0], [80, 0], [80, 120]],
"endArrowhead": "triangle", "startBinding": { "elementId": "db" } }
]
  • diagram_from_code: отправьте docker-compose / манифест Kubernetes / Graphviz DOT / PlantUML / Terraform / Helm values / SQL DDL; LetDraw автоопределяет формат и раскладывает его.
  • export_to_code: диаграмму в Mermaid или D2.
  • generate_from_prompt: естественный язык в диаграмму, с использованием собственного AI-ключа вашей учётной записи.

По вопросам аутентификации, конечных точек, областей действия и настройки клиента см. API и MCP.