# Правила написания инструкций

Важные моменты, которые следует соблюдать при написании инструкции:

1. **Лаконичность и простота.**
2. **Точность и полнота.**
3. **Недвусмысленность.**

## Лаконичность и простота

С одной стороны, LLM-модели очень любят, когда вы точно описываете задачу, с другой стороны важно избегать большого количества описаний, там, где этого можно избежать.

Например:

{% tabs %}
{% tab title="❌ Плохая инструкция" %}

```
Посмотри на эту информацию о клиенте, проверь, есть ли у них деньги, кто у них 
в команде отвечает за покупки, нужно ли им вообще наше решение, и когда они 
могут принять решение. Также, если можешь, постарайся оценить, нравится ли им 
наш продукт и что они думают о нашем бренде.
```

{% hint style="danger" %}
Инструкция перегружена **ненужными** **деталями** и **отвлекает** модель от основной задачи — квалификации клиента по критериям. Она включает **лишние моменты**, такие как мнение клиента о бренде, которые на этапе квалификации **не являются критичными**.
{% endhint %}
{% endtab %}

{% tab title="✅ Хорошая инструкция" %}

```
Определи, соответствует ли потенциальный клиент критериям BANT (Бюджет, 
Полномочия, Потребность, Тайминг) на основе предоставленной информации.
```

{% hint style="success" %}
Модель получает **конкретное** указание использовать **проверенную методологию** квалификации клиентов (BANT), что позволяет ей **сфокусироваться на ключевых критериях** и быстро оценить перспективы клиента.
{% endhint %}
{% endtab %}
{% endtabs %}

Еще один вариант этой же инструкции:

{% tabs %}
{% tab title="❌ Плохая инструкция" %}

```
Посмотри на эту информацию о клиенте, проверь, есть ли у них деньги, кто у них в 
команде отвечает за покупки, нужно ли им вообще наше решение, и когда они могут 
принять решение. Также, если можешь, постарайся оценить, нравится ли им наш 
продукт и что они думают о нашем бренде.
```

{% endtab %}

{% tab title="✅  Хорошая инструкция" %}

```
Шаг за шагом выясни у клиента (если это ранее еще не известно):
1. Какой у клиента бюджет?
2. Кто в команде отвечает за бюджет?
3. Сроки принятия решения
4. Нравится ли наш продукт?
5. Что они думают о нашем бренде?
```

{% hint style="success" %}
Фраза "шаг за шагом" позволяет задавать вопросы **последовательно**, не все сразу. Фраза "если это ранее еще не известно" позволяет исключить **повторное задавание** **вопроса** агентом, если ранее клиент уже сообщил об этом.
{% endhint %}
{% endtab %}
{% endtabs %}

## Точность и полнота

В инструкции важно описывать точные формулировки. Любая обобщенность будет снижать качество ответов. Например, если вам надо последовательно выяснить у клиента какую-либо информацию (ФИО, телефон, паспортные данные):

{% tabs %}
{% tab title="❌ Плохая инструкция" %}

```
Запроси у клиента ФИО, телефон, паспортные данные.
```

{% endtab %}

{% tab title="✅  Хорошая инструкция" %}

```
Запроси у клиента информацию, шаг за шагом, задавая следующий вопрос только 
после его ответа:
- ФИО
- телефон 
- паспортные данные (серию и номер).
```

{% endtab %}
{% endtabs %}

Если вы не используете конструкцию шаг за шагом, агент выдаст список вопросов сразу одним сообщением.

Или ещё пример, когда нужно, чтобы агент здоровался с клиентом:

{% tabs %}
{% tab title="❌ Плохая инструкция" %}

```markdown
Всегда здоровайся с клиентом.
```

{% endtab %}

{% tab title="✅  Хорошая инструкция" %}

```
Всегда здоровайся с клиентом при начале диалога.
```

{% endtab %}
{% endtabs %}

Если оставить плохой вариант, агент может здороваться при каждом ответе. Он понимает инструкцию буквально.

## Недвусмысленность

Часто встречающаяся ошибка - дублирование или противоречие одной и той же инструкции в разных ее частях.

Например, вы описали как рассчитывается стоимость, проверили, все работает. Но потом вдруг через какое-то время добавили еще один кусок инструкции, который по смыслу не связан с первым, но в нем есть какой-то элемент про стоимость.

Ниже пример данной ситуации:

{% tabs %}
{% tab title="Первоначальный промт" %}
{% code fullWidth="true" %}

```markdown
#РАСЧЕТ СТОИМОСТИ АРЕНДЫ БАЙКА:
- Проверьте наличие доступных моделей на складе.
- Чтобы рассчитать стоимость запрашиваемых моделей, 
вызовите функцию cost_calculation в формате: 
Список моделей (например: nmax, pcx, scoopy), количество дней.
```

{% endcode %}
{% endtab %}

{% tab title="Промт с ошибкой" %}

```markdown
#РАСЧЕТ СТОИМОСТИ АРЕНДЫ БАЙКА:
- Проверьте наличие доступных моделей на складе.
- Чтобы рассчитать стоимость запрашиваемых моделей, 
вызовите функцию cost_calculation в формате: 
Список моделей (например: nmax, pcx, scoopy), количество дней.

#НАЛИЧИЕ МОДЕЛЕЙ:
Если клиент указал точное название моделей, которые он хочет забронировать, 
или уточнил цену:
1. Проверьте наличие моделей с помощью функции models_availability, 
передав туда список моделей (не более трех). 
2. ВСЕГДА указывайте информацию ТОЛЬКО о доступных моделях.
3. Чтобы рассчитать стоимость запрашиваемых моделей, 
вызовите функцию cost_calculation в формате: 
Список моделей (например: nmax, pcx, scoopy), количество дней.
```

{% endtab %}
{% endtabs %}

Из-за этого пункта агент при запросе стоимости сначала начнёт проверять доступность, так как пункт о расчёте стоимости был продублирован и находится ниже:

<figure><img src="/files/IXaT9XCvoEOGLFQyGzoB" alt=""><figcaption></figcaption></figure>

Поэтому важно избегать дублирования информации и неоднозначных формулировок. Чем точнее, лаконичнее и более однозначно написан запрос, тем более стабильными и прогнозируемыми будут ответы от модели.

## Использование утвердительных форм вместо отрицательных

Если вам нужно, чтобы агент чего-то не делал или не говорил, лучше не использовать отрицательные формы, а найти похожие по смыслу утвердительные формулировки.

Например:

{% tabs %}
{% tab title="❌ Плохая инструкция" %}

```
Не говори клиенту информацию о наших реквизитах.
```

{% endtab %}

{% tab title="✅  Хорошая инструкция" %}

```
Тебе запрещено предоставлять информацию о реквизитах компании.
```

{% endtab %}
{% endtabs %}

## Промпты

Ниже представлены промпты, которые будут полезны в определенных ситуациях:

> **"Шаг за шагом, только после ответа собеседника"** - позволяет задавать вопросы последовательно, после ответа клиенте

> **"... если это ранее еще не известно из контекста диалога"** - позволяет исключить повторные вопросы от агента, если клиент ранее уже ответил на них в процессе своего вопроса или нашего диалога

> **"Всегда"** - позволяет повысить фокуса модели, когда важно учитывать какой-то пункт

> **"Если клиент написал ....."** - позволяет создать условия срабатывания того или иного ответа


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.suvvy.ai/ru/osnovnye-nastroiki/prompts/prompts/pravila-napisaniya-instrukcii.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
