Prompt и PromptRegistry
Класс Prompt
Заголовок раздела «Класс Prompt»Композитный текстовый билдер. Хранит упорядоченный список частей и рендерит их в одну строку.
from edgebot import PromptКонструктор
Заголовок раздела «Конструктор»Prompt(template: str = "")| Параметр | Описание |
|---|---|
template | Стартовый шаблон. Может содержать плейсхолдеры {name} для подстановки |
.append(text)
Заголовок раздела «.append(text)»Добавляет блок текста в конец.
prompt.append(text: str) -> Prompt.prepend(text)
Заголовок раздела «.prepend(text)»Добавляет блок текста в начало.
prompt.prepend(text: str) -> Prompt.render(**kwargs)
Заголовок раздела «.render(**kwargs)»Склеивает части через \n и подставляет значения через str.format_map.
prompt.render(**kwargs) -> strp = Prompt("Привет, {name}!")p.append("Баланс: {balance} ₽")text = p.render(name="Иван", balance=1500)# "Привет, Иван!\nБаланс: 1500 ₽"Композиция
Заголовок раздела «Композиция»header = Prompt("📋 Заголовок")body = Prompt("Основной текст")body.prepend(header.render()) # добавить заголовок сверхуКласс PromptRegistry
Заголовок раздела «Класс PromptRegistry»Реестр фабрик промптов. Фабрика — функция, декорированная через @registry.register(key), возвращающая Prompt.
from edgebot import PromptRegistry
registry = PromptRegistry().register(key)
Заголовок раздела «.register(key)»Декоратор для регистрации фабрики.
@registry.register("welcome")def p_welcome(username: str) -> Prompt: return Prompt(f"Привет, @{username}!")| Параметр | Описание |
|---|---|
key | Строковый ключ, по которому UIComponent запросит промпт |
.get(key, **kwargs)
Заголовок раздела «.get(key, **kwargs)»Вызывает фабрику и возвращает Prompt.
registry.get(key: str, **kwargs) -> Prompt| Raises | Условие |
|---|---|
PromptNotFound | Ключ не зарегистрирован |
TypeError | Фабрика вернула не Prompt |
.has(key)
Заголовок раздела «.has(key)»Проверяет наличие зарегистрированного промпта.
registry.has(key: str) -> boolАвтофильтрация kwargs
Заголовок раздела «Автофильтрация kwargs»Фабрика объявляет только нужные параметры. Лишние ключи из kwargs отбрасываются автоматически по сигнатуре функции:
@registry.register("profile")def p_profile(username: str, is_active: bool) -> Prompt: ...
# При вызове get("profile", username="john", is_active=True, age=25)# age будет тихо отброшенЕсли фабрика объявляет **kwargs — фильтрация отключается, все данные передаются как есть.