Пошук у кеші
Вузол, який шукає збережену відповідь на такий самий запит і, якщо знаходить, дає флоу відповісти без виклику моделі.
3 хв читання
Пошук у кеші питає кеш, чи вже була відповідь на такий самий запит. При влучанні флоу відповідає збереженою відповіддю й ні за що не платить; при промаху він викликає модель, і Запис у кеш зберігає нову відповідь.
- Вузол
- Пошук у кеші
- Тип
cache_lookup- Категорія
- Кеш
- Порти
- Влучання
hitпідключення обовʼязкове - Промах
missпідключення обовʼязкове
- Влучання
- Завершує шлях
- Ні
Що робить вузол
Вузол складає із запиту ключ і шукає його.
Влучання виходить через Влучання зі збереженою відповіддю як виходом вузла. Нічого не утримується й нічого не витрачається: модель заради нього не викликається, і кредити клієнта не списуються.
Промах виходить через Промах і залишає свій ключ для вузла Запис у кеш нижче, який зберігає під ним відповідь моделі.
Коли відповідь виконання — та, що повернуло влучання, виконання несе cache.hit, що дорівнює true, і cached_at — момент, коли відповідь було збережено. Вкладка Метрики вузла показує, скільки заощадили його влучання, як Заощаджено, за оцінкою — за оцінкою, за яку було оплачено збережену відповідь.
Коли використовувати
Ставте його перед AI-модель у флоу, запити якого повторюються слово в слово: те саме питання, той самий документ для переказу.
Ключ — точний збіг. Промпт, який відрізняється одним пробілом, — інший промпт.
Контексту виклику в ключі немає. Два клієнти, які надіслали однаковий вхід, ділять одну відповідь, і з другого нічого не списується.
Налаштування
| Налаштування | Для чого воно |
|---|---|
scope | Хто ділить відповідь — operation, запити операції на опублікованій версії, яка її зберегла, або project, усі запити проєкту. Вузол без scope бере operation. |
key_fields | Шляхи всередині входу, з яких складається ключ, записані без input на початку — messages, а не input.messages. Порожній список робить ключем увесь вхід. |
У конструкторі налаштування — Спільний доступ у межах і Поля ключа.
| Спільний доступ у межах | Хто ділить відповідь |
|---|---|
| Ця операція | Запити операції на опублікованій версії, яка її зберегла. Нова версія починає з порожнім кешем; відкат знаходить те, що зберегла та версія, поки воно зберігається |
| Весь проєкт | Кожен запит проєкту з тим самим ключем, хоч би якими були його операція та версія |
Поля ключа — шляхи входу, з яких складається ключ, записані без input. на початку: messages, а не input.messages. Без них ключем є весь вхід. Поле ключа, якого в запиті немає, вважається null: ключ такого запиту складається лише з інших його полів ключа.
Порти
Вузол має два порти, Влучання і Промах, і обидва обов’язкові. Флоу, в якому будь-який із них нікуди не веде, не публікується.
Вихід
При влучанні вихід — відповідь, яку модель дала, коли її зберігали, — вихід вузла AI-модель з usage того виклику. При промаху вузол нічого не залишає. Повернути відповідь із джерелом Останній вивід моделі відповідає збереженою відповіддю, коли влучання — остання відповідь на шляху.
Помилки
Помилок вузол не кидає: коли кеш не може відповісти, вузол виходить через Промах, а подія warning у трасуванні каже чому. Ось попередження, які пише вузол:
[
{ "type": "warning", "node_key": "lookup", "payload": { "code": "cache_unavailable" } },
{ "type": "warning", "node_key": "lookup", "payload": { "code": "cache_key_unresolved" } },
{ "type": "warning", "node_key": "lookup", "payload": { "code": "cache_key_partial" } }
]| Код | Що сталося |
|---|---|
cache_unavailable | Сховище кешу недоступне. Ключ однаково залишається для Запис у кеш |
cache_key_unresolved | Жодного поля ключа немає у вході, тому ключ нічого не каже про запит. Кеш не питають, і під таким ключем нічого не зберігається |
cache_key_partial | Деяких полів ключа немає у вході. Ключ використовується без них |
Налаштування перевіряються під час перевірки флоу та під час його публікації. Спершу відхиляється область, відмінна від двох вище:
В API запис issues називає таку перевірку в params.detail; його code — invalid_node_config.
| Перевірка | Повідомлення в конструкторі |
|---|---|
cache_unsupported_scope | «{node}» використовує неіснуючу область кешу. |
Потім перевіряються поля ключа:
В API запис issues називає таку перевірку в params.detail; його code — invalid_node_config.
| Перевірка | Повідомлення в конструкторі |
|---|---|
cache_key_fields_not_list | Поля ключа «{node}» мають бути списком шляхів у вхідних даних. |
cache_key_fields_empty_entry | Одне з полів ключа «{node}» порожнє. |
cache_key_fields_rooted_path | «{node}» будує ключ кешу за «{path}», але поля ключа читаються лише всередині вхідних даних: шлях там не починається з «{root}». |
cache_key_fields_padded_path | «{node}» будує ключ кешу за «{path}», а шлях має пробіли по краях: поля ключа читаються саме так, як написані. |
Приклад
- Запит — Типовий → Пошук у кеші
- Пошук у кеші — Влучання → Повернути відповідь
- Пошук у кеші — Промах → AI-модель
- AI-модель — Успіх → Запис у кеш
- Запис у кеш — Типовий → Повернути відповідь
Промах викликає модель, і Запис у кеш зберігає її відповідь. Влучання йде просто в Повернути відповідь, який відповідає збереженою відповіддю.
Див. також
Запис у кеш — вузол, який зберігає відповідь.
Контекст виконання та шляхи — що таке вихід вузла.
Надіслати запит —
cacheіcostу відповіді, яку отримує той, хто викликає.AI-модель — виклик, відповідь якого зберігає кеш.
Зібрано з openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d