Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Prompts API
prompts

Prompts API

Шаблоны промптов для взаимодействия с LLM. Динамическая генерация и композиция.

Prompts API

Prompts — это шаблоны взаимодействия. В этой теме научимся создавать предустановленные шаблоны для стандартизации частых сценариев использования LLM.


#1. Что такое Prompts?

Prompts (Промпты) — предустановленные шаблоны взаимодействия с LLM, которые MCP сервер предоставляет для использования.

#Отличия от Tools и Resources

ХарактеристикаResourcesToolsPrompts
НазначениеЧтение данныхВыполнение действийШаблоны для LLM
ВозвратСодержимоеРезультат выполненияСообщение для LLM
ИспользованиеПрямой доступВызов функцииГенерация промпта

#Примеры использования

code_review(code)      → Шаблон для проверки кода
write_test(function)   → Шаблон для написания тестов
summarize(text)        → Шаблон для суммаризации
explain_concept(topic) → Шаблон для объяснения концепции

#2. Базовый синтаксис

#Простой промпт без аргументов

from mcp.server.fastmcp import FastMCP mcp = FastMCP("Prompts Demo") @mcp.prompt() def code_review_template() -> str: """Шаблон для код-ревью.""" return """ Ты — опытный разработчик, проводящий код-ревью. Проанализируй предоставленный код и дай рекомендации по: 1. Потенциальным багам и уязвимостям 2. Нарушениям best practices и стиля кода 3. Возможностям для оптимизации производительности 4. Улучшению читаемости и поддерживаемости Будь конструктивен, указывай на конкретные строки кода. """

#Промпт с аргументами

@mcp.prompt() def code_review_with_code(code: str) -> str: """ Шаблон для код-ревью с кодом. Args: code: Код для проверки """ return f""" Пожалуйста, проверь этот код: ```python {code}

Обрати внимание на:

  1. Потенциальные баги
  2. Нарушения PEP 8
  3. Возможности для рефакторинга
  4. Безопасность (инъекции, утечки данных)

Дай конкретные рекомендации с примерами исправлений. """


---

## 3. Промпты с несколькими аргументами

### Множественные параметры

```python
from typing import Optional


@mcp.prompt()
def write_unit_test(
    function_name: str,
    function_code: str,
    test_framework: str = "pytest",
    include_edge_cases: bool = True
) -> str:
    """
    Шаблон для написания юнит-тестов.
    
    Args:
        function_name: Имя тестируемой функции
        function_code: Код функции
        test_framework: Фреймворк для тестов (pytest, unittest)
        include_edge_cases: Включать ли тесты граничных значений
    """
    edge_cases_instruction = """
- Тесты граничных значений (пустыеввода, максимальные значения, None)
- Тесты исключительных ситуаций (ожидаемые исключения)
""" if include_edge_cases else ""

    return f"""
Напиши юнит-тесты для функции `{function_name}` используя {test_framework}:

```python
{function_code}

Тесты должны покрывать:

  • Обычный случай использования (happy path)
  • Различные корректные входные данные {edge_cases_instruction}
  • Моки внешних зависимостей (если есть)

Для каждого теста напиши понятное название и комментарий, что он проверяет. """


### Промпт для генерации документации

```python
@mcp.prompt()
def generate_documentation(
    code: str,
    language: str = "python",
    docstyle: str = "google",
    include_examples: bool = True
) -> str:
    """
    Шаблон для генерации документации.
    
    Args:
        code: Код для документирования
        language: Язык программирования
        docstyle: Стиль документации (google, numpy, sphinx)
        include_examples: Включать ли примеры использования
    """
    style_guide = {
        "google": "Google Style Guide (Args, Returns, Raises секции)",
        "numpy": "NumPy Style Guide (Parameters, Returns секции)",
        "sphinx": "reStructuredText для Sphinx (:param, :return:)"
    }
    
    examples_section = """

Также напиши 2-3 примера использования каждой функции.
""" if include_examples else ""

    return f"""
Напиши документацию для следующего кода на {language}:

```{language}
{code}

Используй {style_guide.get(docstyle, docstyle)} для форматирования. Для каждой функции укажи:

  • Краткое описание назначения
  • Описание всех параметров с типами
  • Описание возвращаемого значения
  • Исключения, которые могут возникнуть {examples_section} """

---

## 4. Промпты для разных ролей

### Роль: Senior Developer

```python
@mcp.prompt()
def senior_dev_review(code: str, task_description: str) -> str:
    """
    Ревью от лица senior разработчика.
    
    Args:
        code: Код для проверки
        task_description: Описание задачи
    """
    return f"""
Ты — senior разработчик с 10+ годами опыта. Твоя задача — провести код-ревью.

**Задача:**
{task_description}

**Код для проверки:**
```python
{code}

Что проверить:

  1. Соответствует ли код задаче?
  2. Нет ли over-engineering или недоделок?
  3. Как код впишется в существующую архитектуру?
  4. Какие технические долги могут возникнуть?
  5. Что можно улучшить с учётом будущего масштабирования?

Дай развёрнутый ответ с конкретными рекомендациями. """


### Роль: Security Expert

```python
@mcp.prompt()
def security_audit(code: str, context: str = "") -> str:
    """
    Аудит безопасности кода.
    
    Args:
        code: Код для аудита
        context: Контекст использования (веб, CLI, API)
    """
    return f"""
Ты — эксперт по безопасности приложений. Проведи аудит кода.

**Контекст:** {context or "Не указан"}

**Код для аудита:**
```python
{code}

Проверь на уязвимости:

  • SQL-инъекции
  • XSS (Cross-Site Scripting)
  • CSRF (Cross-Site Request Forgery)
  • Инъекции команд (command injection)
  • Небезопасная обработка файлов
  • Утечки чувствительных данных
  • Слабые места аутентификации и авторизации

Для каждой найденной уязвимости:

  1. Опиши проблему и её критичность (Low/Medium/High/Critical)
  2. Покажи эксплуатируемый код
  3. Предложи конкретное исправление """

### Роль: Performance Engineer

```python
@mcp.prompt()
def performance_review(code: str, expected_load: str = "") -> str:
    """
    Анализ производительности кода.
    
    Args:
        code: Код для анализа
        expected_load: Ожидаемая нагрузка
    """
    return f"""
Ты — инженер по производительности. Проанализируй код.

**Ожидаемая нагрузка:** {expected_load or "Не указана"}

**Код для анализа:**
```python
{code}

Что проанализировать:

  1. Алгоритмическая сложность (Big O)
  2. Потенциальные узкие места (bottlenecks)
  3. Использование памяти
  4. Возможности для кэширования
  5. Параллелизация и асинхронность
  6. Запросы к БД (N+1 проблема)

Для каждой проблемы:

  • Опиши влияние на производительность
  • Предложи оптимизацию с примером кода
  • Оцени ожидаемый прирост производительности """

---

## 5. Промпты для работы с данными

### Анализ данных

```python
@mcp.prompt()
def analyze_dataframe(code: str, data_description: str) -> str:
    """
    Анализ кода для pandas DataFrame.
    
    Args:
        code: Код с pandas операциями
        data_description: Описание данных
    """
    return f"""
Ты — эксперт по анализу данных с глубоким знанием pandas.

**Описание данных:**
{data_description}

**Код для анализа:**
```python
{code}

Проанализируй:

  1. Эффективность операций (использование векторизации)
  2. Потенциальные проблемы с памятью
  3. Правильность группировок и агрегаций
  4. Обработку пропущенных значений
  5. Типы данных и возможности оптимизации

Предложи оптимизированную версию кода с объяснениями. """


### SQL запросы

```python
@mcp.prompt()
def optimize_sql(query: str, schema_info: str = "") -> str:
    """
    Оптимизация SQL запроса.
    
    Args:
        query: SQL запрос для оптимизации
        schema_info: Информация о схеме БД
    """
    return f"""
Ты — DBA с опытом оптимизации сложных запросов.

**Схема БД:**
{schema_info or "Не предоставлена"}

**Запрос для оптимизации:**
```sql
{query}

Проанализируй:

  1. План выполнения запроса (предположительно)
  2. Использование индексов
  3. Возможность оптимизации JOIN
  4. Проблемы с производительностью (full table scan, etc.)
  5. Альтернативные способы написания запроса

Предложи оптимизированную версию с объяснениями. """


---

## 6. Промпты для обучения

### Объяснение концепции

```python
@mcp.prompt()
def explain_concept(
    concept: str,
    audience_level: str = "intermediate",
    include_examples: bool = True
) -> str:
    """
    Шаблон для объяснения концепции.
    
    Args:
        concept: Концепция для объяснения
        audience_level: Уровень аудитории (beginner, intermediate, advanced)
        include_examples: Включать ли примеры
    """
    level_descriptions = {
        "beginner": "Объясняй как новичку, избегай сложного жаргона",
        "intermediate": "Используй технические термины, но объясняй сложные моменты",
        "advanced": "Глубокое техническое объяснение без упрощений"
    }
    
    examples_instruction = """

Включи практические примеры кода для иллюстрации концепции.
""" if include_examples else ""

    return f"""
Ты — опытный преподаватель программирования.

**Задача:** Объясни концепцию "{concept}"

**Уровень аудитории:** {audience_level}
{level_descriptions.get(audience_level, "")}
{examples_instruction}
**Структура объяснения:**
1. Краткое определение (1-2 предложения)
2. Зачем это нужно (use cases)
3. Как это работает (механизм)
4. Примеры использования
5. Распространённые ошибки и как их избежать
6. Связанные концепции для дальнейшего изучения
"""

#Решение задач

@mcp.prompt() def solve_coding_problem( problem_description: str, constraints: str = "", language: str = "python" ) -> str: """ Шаблон для решения алгоритмической задачи. Args: problem_description: Описание задачи constraints: Ограничения (время, память) language: Язык программирования """ return f""" Ты — участник соревнований по программированию. **Задача:** {problem_description} **Ограничения:** {constraints or "Стандартные"} **Язык решения:** {language} **Предоставь:** 1. Пошаговое объяснение подхода 2. Анализ временной и пространственной сложности 3. Решение на {language} с комментариями 4. Примеры использования (test cases) 5. Альтернативные подходы (если есть) """

#7. Промпты для DevOps

#Debugging

@mcp.prompt() def debug_error( error_message: str, code_snippet: str, environment: str = "" ) -> str: """ Шаблон для отладки ошибки. Args: error_message: Текст ошибки code_snippet: Код, где произошла ошибка environment: Окружение (OS, версии) """ return f""" Ты — эксперт по отладке сложных проблем. **Ошибка:**

{error_message}


**Код:**
```python
{code_snippet}

Окружение: {environment or "Не указано"}

Проанализируй:

  1. Что означает эта ошибка?
  2. Какие наиболее вероятные причины?
  3. Как воспроизвести проблему?
  4. Пошаговый план исправления
  5. Как предотвратить подобные ошибки в будущем?

Дай развёрнутый ответ с конкретными командами и примерами кода. """


### Dockerfile review

```python
@mcp.prompt()
def review_dockerfile(dockerfile: str) -> str:
    """
    Ревью Dockerfile.
    
    Args:
        dockerfile: Содержимое Dockerfile
    """
    return f"""
Ты — эксперт по Docker и контейнеризации.

**Dockerfile для проверки:**
```dockerfile
{dockerfile}

Проанализируй:

  1. Безопасность (не запуск от root, минимальные права)
  2. Размер образа (multistage build, slim base images)
  3. Кэширование слоёв (порядок инструкций)
  4. Best Practices (HEALTHCHECK, .dockerignore)
  5. Уязвимости в base image и зависимостях

Предложи оптимизированную версию Dockerfile. """


---

## 8. Промпты для написания кода

### Генерация кода по описанию

```python
@mcp.prompt()
def generate_code(
    description: str,
    language: str = "python",
    requirements: str = ""
) -> str:
    """
    Генерация кода по описанию.
    
    Args:
        description: Описание функциональности
        language: Язык программирования
        requirements: Дополнительные требования
    """
    return f"""
Ты — опытный разработчик на {language}.

**Задача:**
{description}

**Требования:**
{requirements or "Стандартные (чистый код, тесты, документация)"}

**Предоставь:**
1. Полный рабочий код на {language}
2. Объяснение архитектуры и ключевых решений
3. Примеры использования
4. Юнит-тесты для основных функций
5. Инструкции по запуску

Код должен следовать best practices языка и быть готовым к продакшену.
"""

#Рефакторинг кода

@mcp.prompt() def refactor_code( code: str, goals: str = "", language: str = "python" ) -> str: """ Рефакторинг кода. Args: code: Код для рефакторинга goals: Цели рефакторинга language: Язык программирования """ return f""" Ты — эксперт по рефакторингу и чистому коду. **Код для рефакторинга:** ```{language} {code}

Цели рефакторинга: {goals or "Улучшение читаемости, поддерживаемости, производительности"}

Выполни:

  1. Анализ проблем текущего кода
  2. Пошаговый план рефакторинга
  3. Рефакторенную версию кода
  4. Объяснение внесённых изменений
  5. Рекомендации по дальнейшему улучшению

Сохраняй функциональность кода неизменной. """


---

## 9. Возврат структурированных промптов

### Промпт с несколькими сообщениями

```python
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Advanced Prompts")


@mcp.prompt()
def multi_turn_conversation(topic: str) -> list:
    """
    Шаблон для многораундовой беседы.
    
    Args:
        topic: Тема беседы
    """
    return [
        {
            "role": "system",
            "content": {
                "type": "text",
                "text": f"Ты — эксперт по теме '{topic}'. Твоя задача — помогать пользователям глубже понять тему через диалог."
            }
        },
        {
            "role": "user",
            "content": {
                "type": "text",
                "text": f"Я хочу узнать больше о '{topic}'. Начни с краткого введения, а затем задай мне вопрос, чтобы понять мой текущий уровень знаний."
            }
        }
    ]

#Промпт с контекстом

@mcp.prompt() def code_review_with_context( code: str, previous_feedback: str, changes_made: str ) -> str: """ Повторное код-ревью с учётом предыдущих правок. Args: code: Текущая версия кода previous_feedback: Предыдущие замечания changes_made: Описание внесённых изменений """ return f""" Ты проводишь повторное код-ревью. **Предыдущие замечания:** {previous_feedback} **Внесённые изменения:** {changes_made} **Текущая версия кода:** ```python {code}

Задача:

  1. Проверь, все ли замечания были учтены
  2. Укажи на оставшиеся проблемы
  3. Отметь новые проблемы, если они появились
  4. Дай финальную оценку коду

Будь конкретен, ссылайся на строки кода. """


---

## 10. Best Practices для Prompts

### 1. Подробные описания

```python
# ❌ ПЛОХО: Бесполезное описание
@mcp.prompt()
def review(code: str) -> str:
    return f"Review this: {code}"

# ✅ ХОРОШО: Подробное описание
@mcp.prompt()
def code_review_detailed(
    code: str,
    focus_areas: str = "all"
) -> str:
    """
    Детальное код-ревью с фокусом на указанных областях.
    
    Args:
        code: Код для проверки
        focus_areas: Области фокуса (bugs, security, performance, style, all)
    """
    return f"""
Ты — опытный разработчик, проводящий код-ревью.

**Фокус:** {focus_areas}

**Код:**
```python
{code}

[Подробные инструкции...] """


### 2. Модульность

```python
# Базовый промпт для ревью
def base_code_review_prompt(code: str) -> str:
    return f"""
Проведи код-ревью:
```python
{code}

"""

Специализированные промпты

@mcp.prompt() def security_review(code: str) -> str: """Аудит безопасности кода.""" return base_code_review_prompt(code) + "\nСфокусируйся на уязвимостях безопасности."

@mcp.prompt() def performance_review(code: str) -> str: """Анализ производительности кода.""" return base_code_review_prompt(code) + "\nСфокусируйся на производительности."


### 3. Тестирование промптов

```python
# Тестирование промптов перед публикацией
def test_prompts():
    """Проверка генерации промптов."""
    
    # Проверка базового промпта
    prompt = code_review_with_code("def hello():\n    print('Hi')")
    assert "код-ревью" in prompt.lower()
    assert "def hello():" in prompt
    
    # Проверка промпта с аргументами
    prompt = write_unit_test(
        function_name="add",
        function_code="def add(a, b): return a + b",
        test_framework="pytest"
    )
    assert "pytest" in prompt
    assert "add" in prompt
    
    print("✅ All prompts generated correctly")

#Ключевые выводы

КонцептОписание
@mcp.prompt()Декоратор для регистрации промптов
АргументыПараметры для динамической генерации промпта
ВозвратСтрока или список сообщений
РолиПромпты для разных ролей (dev, security, DevOps)
Best practicesПодробные описания, модульность, тестирование

Следующая тема: Транспортные протоколы — stdio, SSE, WebSocket: выбор и реализация.

Далее: Транспортные протоколы