TGViewer
Ilyas Salikhov Ilyas Salikhov @dev_salikhov · 1.74K subscribers
Post #6 410
Как организовать работу с промптами для AI-агентов

В RetailCRM мы начинали с промптов в формате строки или f-string. Для простых промптов это ок.

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

Промпт в AI-агентах — это такая же часть бизнес-логики (на самом деле, одна из самых важных), как и код, поэтому важно, чтобы этот "код" на человеческом языке был наглядный, читаемый и с подсветкой синтаксиса.

Мы пришли к тому, что промпт наиболее удобно оформлять в jinja шаблонах (или любом другом шаблонизаторе) с markdown внутри. Покажу на примере.

Пример

Допустим мы решили сделать мини агента, который с помощью нашего сервиса Geohelper определит часовой пояс клиента по номеру телефона.

Сделали начальный промпт

Ты помощник, который определяет часовой пояс по номеру телефона.


Запустим

$ python get_timezone.py 89132342323

Номер +7 913 234-23-23

Информация о часовом поясе:
- Регион: Алтайский край
- Сдвиг от UTC: +07:00

Если нужно, могу показать текущее местное время для этого номера или конвертировать заданное время в этот часовой пояс.


Доработаем, чтобы выводил кратко и более содержательно:

Ты помощник, который определяет часовой пояс по номеру телефона.
{# Иначе выводит многословно #}
Выведи результат очень кратко и строго эти данные: часовой пояс, смещение UTC, регион и страну.


Запустим

$ python get_timezone.py 89132342323

Смещение UTC: +03:00
Регион: Алтайский край
Страна: Россия (RU)


Уже лучше. Представим, что мы хотим подсказывать смещение относительно нашего часового пояса.

Ты помощник, который определяет часовой пояс по номеру телефона.

Текущий часовой пояс пользователя: {{ server_timezone }} (UTC{{ "%+d" | format(server_offset) }})
Текущее время у пользователя: {{ current_time }}

{# Иначе выводит многословно #}
Выведи результат очень кратко и строго эти данные:
- Разница во времени + пример, сколько времени у пользователя и абонента
- Регион абонента
- Страна абонента


Глянем

python get_timezone.py 89132342323

- Разница во времени: +4 ч — у вас 17:37, у абонента 21:37
- Регион абонента: Алтайский край
- Страна абонента: Россия (RU)


Спустя время мы захотели добавить параметр --short в вызов скрипта, чтобы выводить информацию только о разнице во времени. Доработаем промпт:

Ты помощник, который определяет часовой пояс по номеру телефона.

Текущий часовой пояс пользователя: {{ server_timezone }} (UTC{{ "%+d" | format(server_offset) }})
Текущее время у пользователя: {{ current_time }}

{# Иначе выводит многословно #}
Выведи результат очень кратко и строго эти данные:
- Разница во времени + пример, сколько времени у пользователя и абонента
{% if not short %}
- Регион абонента
- Страна абонента
{% endif %}


Проверим:

$ python get_timezone.py 89132342323

Разница: +4 ч — у вас 17:43, у абонента 21:43
Регион: Алтайский край (Asia/Barnaul)
Страна: Россия (RU)

$ python get_timezone.py 89132342323 --short

Разница: +4 ч — у пользователя 17:44, у абонента 21:44


Как итог

* Промпт читаемый с подсветкой (как jinja, так и markdown)
* Работают проверки от IDE (в том числе на орфографию/пунктуацию)
* Промпт можно обогащать вкраплениями логики
* Одно из самых важных Фрагменты промпта можно дополнять комментариями

А как выглядит финальный промпт в IDE, можно увидеть на картинке к посту.

🔗 Инженерия и AI | Ilyas Salikhov
  • 👍 3
More from @dev_salikhov
  1. Sep 24, 2026Ilyas Salikhov pinned «🔳▶️▶️▶️▶️▶️📦◀️◀️ Мы запустили AgentBox — облачные песочницы для в…
  2. Sep 22, 2026🔳▶️▶️▶️▶️▶️📦◀️◀️ Мы запустили AgentBox — облачные песочницы для ваших AI-агентов с полно…
  3. Sep 19, 2026RIP CLAUDE.md С версии 2.1.277 Claude Code стал поддерживать AGENTS.md. Я с одной стороны…
  4. Sep 1, 2026Пора перестать писать свой harness для AI-агентов Представьте, что вам поставили (или вы с…
  5. Aug 28, 2026Как-то тут упоминал про Орфея (Orpheus), нашего сквозного AI-агента в RetailCRM. Вообще, о…
  6. Jul 22, 2026Это база Убежден, что каждый разработчик, считающий себя экспертом, должен понимать устрой…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →