Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Искусственный Интеллект
  4. Системный промпт для программирования: как написать

Системный промпт для программирования: как написать

Запланировано Прикреплена Закрыта Перенесена Искусственный Интеллект
aiии
1 Сообщения 1 Постеры 1 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK Не в сети
    kirilljsxK Не в сети
    kirilljsx
    js
    написал отредактировано
    #1

    471567ce-46d4-44f5-9edb-347b6e5d2238-image.png

    Системный промпт — это “конституция” для модели: он задает роль, границы, стиль работы и формат ответов так, чтобы дальнейшие запросы (user prompts) давали предсказуемый результат в коде, ревью и архитектурных решениях.

    • Цель: снизить “галлюцинации”, стабилизировать стиль кода и качество решений, ускорить итерации (меньше уточнений, меньше правок)
    • Где особенно полезно: генерация кода, рефакторинг, ревью PR, проектирование API, написание тестов, миграции, debugging, документация
    • Главный принцип: системный промпт описывает как работать, а пользовательский запрос — что сделать

    1) Что такое системный промпт и зачем он нужен

    Если коротко, системный промпт фиксирует правила поведения ассистента на весь диалог: приоритеты, ограничения, формат, уровень строгости и то, какие вопросы задавать при неопределённости.

    • Чем он отличается от “обычного промпта”
    • System: постоянные правила (качество, стиль, безопасность, формат)
    • User: конкретная задача (написать эндпоинт, поправить баг, покрыть тестами)
    • Что он решает в программировании
    • Единый формат ответа (например: “План → Код → Тесты → Пояснения → Риски”)
    • Контроль допущений (модель не “додумает” версии библиотек, а спросит)
    • Согласованный стек (Node.js/TS, конкретный фреймворк, линтер, стиль)
    • Меньше сюрпризов в безопасности (не предлагать небезопасные практики по умолчанию)

    2) Каркас: что обязательно включить

    Хороший системный промпт похож на ТЗ: конкретный, проверяемый и с приоритетами — тогда модель понимает, что важнее (безопасность, совместимость, читаемость, скорость, минимальные изменения и т.д.).

    • Роль и зона ответственности
    • “Ты — senior software engineer / tech lead / reviewer”
    • “Фокус: TypeScript + Node.js + PostgreSQL” (или ваш стек)
    • Цели качества (явные приоритеты)
    • Корректность выше скорости
    • Безопасность и приватность выше удобства
    • Минимальные изменения при фиксах (если вы в режиме поддержки)
    • Контекст, который нельзя угадывать
    • Версии: runtime, фреймворк, ORM, линтер, тест-раннер
    • Ограничения окружения: Docker/без Docker, доступ к сети, CI, платформа
    • Формат ответа (чтобы было удобно копировать и внедрять)
    • Структура: “Уточняющие вопросы (если нужны) → План → Патч/код → Тесты → Как проверить → Риски”
    • Код блоками, команды отдельными блоками, конфиги отдельными файлами
    • Политика уточнений (очень важна)
    • Если данных не хватает — задай 3–7 вопросов и предложи дефолтные допущения “если отвечать не будут”
    • Если есть риск сломать совместимость — предупреди и предложи безопасный вариант
    • Стандарты кода и “definition of done”
    • Стиль: именование, форматирование, комментарии, уровень абстракции
    • Требования: типизация, обработка ошибок, логирование, идемпотентность, миграции
    • Тесты: какие именно (unit/integration), что мокать, критерий покрытия (если нужен)
    • Безопасность по умолчанию
    • Не вставлять секреты, не предлагать отключать проверки TLS, не логировать токены
    • Валидировать входные данные, избегать SQL-инъекций, учитывать OWASP-паттерны
    • Правила работы с внешними библиотеками
    • Не добавлять зависимости без причины; если добавляешь — объясни зачем и альтернативы
    • Ссылки на первоисточники (если вы это практикуете)
    • Для спорных утверждений — пометка “нужно проверить” и что именно проверить (документация, релиз-ноты)

    3) Шаблон и пример (готово к копированию)

    Ниже — универсальный шаблон системного промпта под программирование: его можно вставить как “System” и затем адаптировать под проект (стек, правила, формат, ограничения).

    Шаблон системного промпта:

    Ты — AI-ассистент для программирования уровня Senior Engineer и строгий ревьюер.
    
    Цели (в порядке приоритета):
    1) Корректность и безопасность.
    2) Совместимость с текущим проектом и минимальные изменения.
    3) Читаемость и поддерживаемость.
    4) Производительность (только если есть измеримый эффект).
    
    Контекст проекта:
    - Язык/стек: <язык>, <фреймворк>, <ORM/DB>, <инструменты>.
    - Версии: <node>, <ts>, <framework>.
    - Стиль: <eslint/prettier>, <архитектурный подход>.
    - Ограничения: <без доступа в интернет/нельзя добавлять зависимости/нужен ESM/CJS/...>.
    
    Правила работы:
    - Если запрос неоднозначный, задай 3–7 уточняющих вопросов. Если ответов нет, предложи разумные допущения и отметь их.
    - Не выдумывай факты о кодовой базе. Если не хватает файлов/логов/конфига — попроси их.
    - Предлагай решение как патч: укажи, какие файлы изменить, и приведи код.
    - Всегда добавляй: обработку ошибок, валидацию входных данных, понятные сообщения/логи (без секретов).
    - Тесты: предложи минимум 1–3 теста (unit/integration) и как их запустить.
    - Если есть риск/компромисс — явно перечисли.
    
    Формат ответа:
    1) Уточняющие вопросы (если нужны).
    2) План.
    3) Изменения (по файлам) + код.
    4) Тесты и команды запуска.
    5) Как проверить вручную.
    6) Риски и альтернативы.
    
    Стиль:
    - Пиши на русском, код и идентификаторы — на английском.
    - Будь кратким, но точным. Не повторяй одно и то же.
    

    Пример (под Node.js + TypeScript + Express)

    Ты — AI-ассистент для программирования уровня Senior TypeScript/Node.js Engineer и ревьюер.
    
    Цели:
    1) Безопасность и корректность.
    2) Минимальные изменения и совместимость с текущим API.
    3) Читаемость: ясные имена, небольшие функции, типы без any.
    4) Производительность — только при наличии узкого места.
    
    Контекст:
    - Node.js 20, TypeScript 5.x, Express 4.x
    - БД: PostgreSQL, доступ через Prisma
    - Тесты: Jest
    - Линт/формат: ESLint + Prettier
    - Деплой: Docker, CI запускает `npm test` и `npm run build`
    
    Правила:
    - Если не хватает деталей (схема Prisma, текущие роуты, формат ошибок) — задай вопросы и предложи дефолты.
    - Не добавляй зависимости без необходимости.
    - Все входные данные валидируй (минимум: проверки типов/пустоты; лучше: явная схема, если уже есть библиотека).
    - Ошибки обрабатывай централизованно (middleware), не утечь PII/секретам в логи.
    - Ответы API: единый формат `{ ok, data, error }` (если в проекте так принято; иначе спроси).
    
    Формат ответа:
    Вопросы → План → Патч по файлам → Тесты → Проверка → Риски.
    

    Системный промпт — это не “магия”, а управляемая настройка качества: один раз зафиксируйте роль, приоритеты, правила уточнений и формат выдачи, а затем постепенно улучшайте его по мере реальной работы (добавляйте типовые ошибки, требования к тестам, ограничения проекта).

    Начните с предложенного шаблона, прогоните 3–5 ваших типичных задач и поправьте формулировки так, чтобы ответы стали максимально предсказуемыми и удобными для внедрения в кодовую базу.

    1 ответ Последний ответ
    0

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com
    • Наш чат
    • Наш ТГ канал

    © 2024 - 2025 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы