Запись в кеш

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

2 мин чтения

Запись в кеш сохраняет ответ на потом. Он берёт ответ модели выше себя и сохраняет его под ключом, который Поиск в кеше искал и не нашёл.

Узел
Запись в кеш
Тип
cache_write
Категория
Кеш
Порты
  • По умолчанию default подключение обязательно
Завершает путь
Нет

Что делает узел

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

Узел ничего не сохраняет, а выполнение всё равно идёт дальше, когда:

  • ни один поиск выше не промахнулся в этом выполнении с ключом, который можно использовать, — поиск попал, его ключ ничего не говорил о запросе или поиска нет;

  • ответ не закончился чисто: модель остановилась по другой причине, чем конец ответа, или ответ пуст;

  • ответ больше, чем принимает кеш, — по умолчанию 256 КБ;

  • хранилище кеша недоступно.

Когда использовать

Ставьте его после AI-модель на ветке Промах узла Поиск в кеше. Один поиск и одна запись составляют пару: поиск спрашивает, запись отвечает на вопрос, на который поиск ответить не смог.

Настройки

НастройкаДля чего она
ttl_secondsСколько хранится ответ, в целых секундах, не меньше 1. Узел без значения хранит его столько, сколько настроено в сервисе, — по умолчанию 3600 секунд.

В конструкторе настройка — Хранить (секунды). Новый узел хранит ответ 3600 секунд, час; узел без значения хранит его столько, сколько настроено в сервисе, — по умолчанию час.

Порты

У узла один порт, По умолчанию, и он обязателен. Флоу, в котором он никуда не ведёт, не публикуется.

Выход

Узел не оставляет выхода. Следующий узел читает ответ модели из выхода узла AI-модель.

Ошибки

Ошибок узел не выбрасывает. Когда он ничего не сохраняет, событие warning в трассировке говорит почему. Вот предупреждения, которые пишет узел:

JSON
[
  { "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-модель — Успех → Запись в кеш
  • Запись в кеш — По умолчанию → Вернуть ответ

При промахе отвечает модель, узел сохраняет ответ, и Вернуть ответ отвечает им вызывающему. Такой же запрос после этого — попадание.

Собрано из openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d