Запись в кеш
Узел, который сохраняет ответ модели под ключом, не найденным поиском в кеше выше, чтобы в следующий раз на такой же запрос ответил кеш.
2 мин чтения
Запись в кеш сохраняет ответ на потом. Он берёт ответ модели выше себя и сохраняет его под ключом, который Поиск в кеше искал и не нашёл.
- Узел
- Запись в кеш
- Тип
cache_write- Категория
- Кеш
- Порты
- По умолчанию
defaultподключение обязательно
- По умолчанию
- Завершает путь
- Нет
Что делает узел
Когда выполнение доходит до узла, он сохраняет последний ответ узла AI-модель на пути на время, заданное в настройке, и выходит через По умолчанию. На следующий запрос с тем же ключом поиск отвечает из кеша.
Узел ничего не сохраняет, а выполнение всё равно идёт дальше, когда:
ни один поиск выше не промахнулся в этом выполнении с ключом, который можно использовать, — поиск попал, его ключ ничего не говорил о запросе или поиска нет;
ответ не закончился чисто: модель остановилась по другой причине, чем конец ответа, или ответ пуст;
ответ больше, чем принимает кеш, — по умолчанию 256 КБ;
хранилище кеша недоступно.
Когда использовать
Ставьте его после AI-модель на ветке Промах узла Поиск в кеше. Один поиск и одна запись составляют пару: поиск спрашивает, запись отвечает на вопрос, на который поиск ответить не смог.
Настройки
| Настройка | Для чего она |
|---|---|
ttl_seconds | Сколько хранится ответ, в целых секундах, не меньше 1. Узел без значения хранит его столько, сколько настроено в сервисе, — по умолчанию 3600 секунд. |
В конструкторе настройка — Хранить (секунды). Новый узел хранит ответ 3600 секунд, час; узел без значения хранит его столько, сколько настроено в сервисе, — по умолчанию час.
Порты
У узла один порт, По умолчанию, и он обязателен. Флоу, в котором он никуда не ведёт, не публикуется.
Выход
Узел не оставляет выхода. Следующий узел читает ответ модели из выхода узла AI-модель.
Ошибки
Ошибок узел не выбрасывает. Когда он ничего не сохраняет, событие warning в трассировке говорит почему. Вот предупреждения, которые пишет узел:
[
{ "type": "warning", "node_key": "store", "payload": { "code": "cache_write_without_lookup" } },
{ "type": "warning", "node_key": "store", "payload": { "code": "cache_write_unfinished_answer" } },
{ "type": "warning", "node_key": "store", "payload": { "code": "cache_write_empty_answer" } },
{ "type": "warning", "node_key": "store", "payload": { "code": "cache_value_refused" } },
{ "type": "warning", "node_key": "store", "payload": { "code": "cache_store_unavailable" } }
]| Код | Почему ничего не сохранено |
|---|---|
cache_write_without_lookup | Ни один поиск выше узла не промахнулся в этом выполнении |
cache_write_unfinished_answer | Модель не закончила ответ |
cache_write_empty_answer | В ответе нет текста |
cache_value_refused | Ответ больше, чем принимает кеш |
cache_store_unavailable | Хранилище кеша недоступно |
Узел, выше которого ни на одном пути нет Поиск в кеше, получает предупреждение проверки при публикации cache_write_without_lookup; флоу всё равно публикуется. Настройка проверяется при проверке флоу и при его публикации.
В API запись issues называет такую проверку в params.detail; её code — invalid_node_config.
| Проверка | Сообщение в конструкторе |
|---|---|
cache_invalid_ttl | Время жизни «{node}» должно быть целым числом секунд, не меньше 1. |
Пример
- Запрос — По умолчанию → Поиск в кеше
- Поиск в кеше — Попадание → Вернуть ответ
- Поиск в кеше — Промах → AI-модель
- AI-модель — Успех → Запись в кеш
- Запись в кеш — По умолчанию → Вернуть ответ
При промахе отвечает модель, узел сохраняет ответ, и Вернуть ответ отвечает им вызывающему. Такой же запрос после этого — попадание.
См. также
Поиск в кеше — ключ и то, кто делит ответ.
Как устроен флоу — все узлы конструктора.
AI-модель — вызов, ответ которого хранит кеш.
Собрано из openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d