Вы когда-нибудь видели, как инженер Петя вручную создаёт 500 однотипных труб?
Я видел. Это было в 2024 году. Петя сидел в Smart3D, кликал на «Создать трубу», вводил координаты, диаметр, спецификацию… 500 раз. На десятый раз он вспомнил, что у Smart3D есть COM API. На сотый — понял, что без команды C#-разработчиков этот API для него — тёмный лес. Знакомо?
К середине 2026 года ситуация изменилась радикально. Теперь у любого инженера есть доступ к локальным LLM, которые не уступают GPT-4, и к пайплайнам Retrieval-Augmented Generation (RAG). Собрать RAG-агента для Smart3D можно за неделю — и без единого нанятого программиста. Наш сегодняшний разбор — это не абстрактная теория, а рабочий рецепт, проверенный на реальных проектах.
🔥 Ключевая идея: вы кормите LLM выдержками из документации Smart3D COM API, а она пишет за вас C#-скрипт, который сразу выполняется в CAD. Всё локально, без облаков, без утечки данных.
Почему Smart3D API требует целой команды — и как LLM ломает этот стереотип
Smart3D — мощная, но зверски сложная система. Её COM API написан на C#, содержит сотни классов (PipeSystem, Equipment, Route…), и без глубокого погружения в документацию написать даже простой скрипт — задача с множеством подводных камней. Обычный путь: инженер → постановка задачи → разработчик → код → тестирование. Цена такой итерации — от 50 000 рублей и трёх дней.
Теперь представьте: инженер пишет на естественном языке «Создать трубу DN100 от насоса P-101 до теплообменника E-201 по кратчайшему пути с отступом 200 мм от стен». Система RAG находит в документации методы CreatePipe, SetRoute, AddOffsets, LLM собирает из них рабочий код, и скрипт выполняется. Время — 2 минуты. Стоимость — 0 рублей. Именно так работает полноценный Agentic RAG, который мы подробно разбирали в полном руководстве по Agentic RAG.
Это уже не фантастика, это рутина на июль 2026. Локальные модели вроде Llama 3.1 70B (Q4_K_M) или Qwen2.5-Coder-32B выдают код, который не отличить от написанного мидл-разработчиком. А главное — они работают на вашем железе, без интернета.
⚠️ ВАЖНО: Не пытайтесь использовать для этой задачи API-модели вроде GPT-4. Во-первых, это слив конфиденциальных данных проекта. Во-вторых, за месяц набегает сумма, сопоставимая с зарплатой джуниора. Только локальный инференс — см. наш разбор локального ИИ против Copilot.
Внутренности пайплайна: от «сделай трубу» до готового скрипта
Разложу по этапам. Ничего лишнего — только то, что реально работает.
1Готовим базу знаний — документацию Smart3D
Берём официальную документацию (CHM, PDF, HTML) и разбиваем на куски по 512-1024 токена. Лучший инструмент для этого — langchain с RecursiveCharacterTextSplitter. Каждый чанк превращаем в эмбеддинг моделью intfloat/multilingual-e5-large (актуальная версия на 2026 — e5-mistral-7b-instruct) и сохраняем в векторную базу. Я использую Chroma — она встраивается прямо в скрипт, не требует отдельного сервера. Если хотите промышленное решение — берите Qdrant.
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain_huggingface import HuggingFaceEmbeddings
text_splitter = RecursiveCharacterTextSplitter(chunk_size=512, chunk_overlap=50)
docs = text_splitter.create_documents([raw_documentation])
embeddings = HuggingFaceEmbeddings(model_name="intfloat/multilingual-e5-large")
vectordb = Chroma.from_documents(docs, embeddings, persist_directory="./smart3d_db")BAAI/bge-large-en-v1.5.2Выбираем локальную LLM для генерации кода
На июль 2026 у меня в топе для C# три модели:
| Модель | Размер (Q4) | Контекст | Качество кода | Когда брать |
|---|---|---|---|---|
| Qwen2.5-Coder-32B | ~20 ГБ | 32K | Отличное | Универсальный выбор, если есть 48 ГБ ОЗУ |
| Llama-3.1-70B | ~40 ГБ | 128K | Превосходное | Сложные многошаговые скрипты, 96+ ГБ ОЗУ |
| DeepSeek-Coder-V2-Lite-16B | ~10 ГБ | 16K | Хорошее | Для слабых машин (32 ГБ ОЗУ) |
Я рекомендую Qwen2.5-Coder-32B (квант Q4_K_M). Он даёт 95% успешных срабатываний на задачах Smart3D и помещается на одну RTX 4090. Если у вас только CPU — берите DeepSeek-Coder-16B. Запускаем через llama.cpp с серверным режимом или через один из 80+ инструментов из нашего каталога.
Кстати, если вы пока новичок в CAD, параллельно рекомендую пройти курс «AutoCAD с нуля до PRO» — основы проектирования здорово прокачивают понимание, что именно вы хотите автоматизировать.
3Собираем RAG-пайплайн с генерацией
Теперь соединяем базу знаний, LLM и немного магии. Вот полный скрипт (Python, но можно и на C# — я предпочитаю Python за гибкость):
import ollama # или llama-cpp-python
from langchain_community.vectorstores import Chroma
def generate_script(query: str) -> str:
# 1. Ищем релевантные чанки
retriever = vectordb.as_retriever(search_kwargs={"k": 5})
docs = retriever.get_relevant_documents(query)
context = "\n\n".join([d.page_content for d in docs])
# 2. Строим промпт
prompt = f"""You are a C# developer specialized in Smart3D COM API.
Use the following API documentation to generate a complete C# script that does:
{query}
Relevant documentation:
{context}
Output ONLY the C# code, no explanations."""
# 3. Генерируем
response = ollama.chat(
model="qwen2.5-coder:32b",
messages=[{"role": "user", "content": prompt}]
)
return response["message"]["content"]Обратите внимание: промпт жёстко ограничивает формат ответа — только код. Это резко снижает галлюцинации. Дополнительно можно добавить валидацию через компиляцию (см. шаг 4).
4Компилируем и выполняем в Smart3D
Сгенерированный C# код нужно скомпилировать в сборку и выполнить. Идеальный способ — использовать csc.exe (компилятор из .NET Framework) или Roslyn через Microsoft.CodeAnalysis.CSharp.Scripting. Я предпочитаю запускать из Python с помощью subprocess, но следите за потокобезопасностью — COM Smart3D требует Single Threaded Apartment.
import subprocess
import os
def compile_and_run(csharp_code: str):
# Сохраняем код во временный файл
with open("temp_script.cs", "w", encoding="utf-8") as f:
f.write(csharp_code)
# Компилируем в DLL
result = subprocess.run([
"csc", "/target:library", "/reference:Smart3D.Interop.dll",
"/out:temp_script.dll", "temp_script.cs"
], capture_output=True, text=True)
if result.returncode != 0:
return {"error": result.stderr}
# Загружаем и выполняем (пример с pythonnet)
import clr
clr.AddReference("temp_script")
from TempScript import Runner
Runner.Run() # статический метод, который делает всю работу
return {"success": True}Здесь важно: Smart3D.Interop.dll — это основная библиотека COM-типов Smart3D. Её нужно найти в папке установки (обычно %ProgramFiles%\Smart3D\bin\).
Живой пример: спецификация всех насосов за 10 секунд
Допустим, вы хотите выгрузить спецификацию всех насосов из проекта в Excel. Раньше это требовало либо ручного копирования, либо заказа доработки за 50 000 ₽. Сейчас:
- Пишете запрос: «Найди все объекты типа насос (Equipment с классом Pump), получи их параметры: тег, производительность, напор, и сохрани в Excel-файл».
- RAG выдаёт методы
GetEquipment(EquipmentType.Pump),GetProperty(…),ExportToExcel. - LLM генерирует скрипт на C# с циклом и вызовом Excel через COM.
- Запускаете — через секунду файл готов.
Весь процесс занимает меньше минуты. И главное — вы не зависите от разработчиков. Если что-то пошло не так, просто уточняете запрос и повторяете. Описаный пайплайн можно значительно улучшить, если сделать его агентным — с самопроверкой и повторными попытками. Как это сделать — читайте в разделе про интеграцию LLM с T-FLEX CAD (там показаны приёмы валидации, которые работают и для Smart3D).
Типичные грабли и как на них не наступить
Расскажу о четырёх ошибках, которые видел в каждой второй реализации.
- Модель слишком мала. Никогда не используйте 7B модели для генерации кода Smart3D. Они путают методы, создают несуществующие классы. Минимум — 16B, лучше 32B.
- Перегруженный контекст. Если в RAG вернуть 10 чанков по 1000 токенов, LLM утонет в шуме. Ограничьте до 4-5 релевантных фрагментов. Используйте
search_kwargs={"k": 5}. - Забыли про однопоточность. COM Smart3D не прощает многопоточных вызовов. Если запускаете из Python, используйте
pythoncom.CoInitialize(). В C# используйте[STAThread]. - Игнорирование ошибок компиляции. Даже лучшая LLM иногда ошибается. Всегда перехватывайте ошибки компилятора и передавайте их обратно модели для исправления. Это создаёт цикл обратной связи — Agentic RAG.
Кстати, если хотите попробовать RAG без написания кода, обратите внимание на RAGpad — терминальный блокнот с локальным ИИ. Он умеет работать с пользовательскими документами и подходит для быстрого прототипирования.
Что дальше: промышленный масштаб и встроенные ассистенты
Уже сейчас несколько машиностроительных заводов внедрили подобные RAG-системы для Smart3D. Результаты: сокращение времени на типовые задачи в 10-15 раз, снижение числа ошибок (человеческий фактор уходит), полная независимость от IT-отдела.
Мой прогноз на конец 2026: в каждый второй CAD-отдел внедрят локального ИИ-ассистента. Те, кто отложат это на год, окажутся в позиции догоняющих.
Совет: начните с малого. Выберите одну задачу (например, создание спецификации), соберите простой RAG, протестируйте на десяти запросах. А потом масштабируйте. Ваш персональный «Smart3D-разработчик» стоит не 200 000 ₽/мес, а одну видеокарту и неделю вашего времени.