Галоўная / Артыкулы / Практычныя прытамулкі: Семантычнае кэшаванне для агентаў AI: як стварыць вашы дапрынты на базе LLM

Практычныя прытамулкі: Семантычнае кэшаванне для агентаў AI: як стварыць вашы дапрынты на базе LLM

Практычныя прыказкі: семантычна кэшаванне для агентаў AI: як стварыць свае дапрыямніки на базе LLM — контракты, пераканання і месцы для коду, якія можна прыўязаць для команд, якіе викорыстоўваюць гэты патэрн.

2420 слоў

Існавайце гэта як перапрацоўку ідэй з кнігі «Semantic Caching for AI Agents: How to Make Your LLM Apps Faster and Cheaper» для аператараў: чыстыя этапы, аранжаваныя блакі для коду і прыметкі з вяселення, якія застаюцца пасля перадачы. Этап Апглэву лепш працюе, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідеальная транскрыпцыю, адзін прыклад неудачы і прыметкі з вяселення перад тым, як расшырваць масштаб. Спрыяйце гэты этап як кантракт межа вхіднымі дадзеннямі і паверыжанымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад беззвучнага частковага завершэння.

Як працюе Semantic Caching

Для этапу «Як працюе семантычна кэшаванне» неабяжна прадзефініраваць вхідныя даны, адпаведальнага за крок і критэрыі завершэння пры перадзеяванні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы схованы стан. Запісваць час выконання і вартасць токена або запытку праз адзін ряд з функцыйнальнымі рэзултатамі. Відразы вартасці з самага пачатку запобегае неспакоўным рахункам, калі траекторыя пераходзіць з дэмаверсіі ў спакульнаныя сераўысы. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з паўнай пераверкай схемы, чым вольныя тэкстовыя апісанні.

Стварэнне семантычнай кэша з нуля

Для стадіі стварэння семантычнага кэшу неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і критэрыя завершэння пры перадзеўці коду. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба залічыць параду ад коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Калі наступны крок — це код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем схэмы, чым вольныя тэкстовыя апісанні.

from sentence_transformers import SentenceTransformer
import numpy as np
model = SentenceTransformer("all-mpnet-base-v2")# Embed your FAQ dataset
faq_questions = ["How do I get a refund?", "Where is my order?", ...]
faq_embeddings = model.encode(faq_questions)def cosine_distance(a, b):
    return 1 - np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))def check_cache(query: str, threshold: float = 0.3):
    query_embedding = model.encode(query)
    distances = [cosine_distance(query_embedding, e) for e in faq_embeddings]
    best_idx = np.argmin(distances)
    best_distance = distances[best_idx]

    if best_distance < threshold:
        return faq_answers[best_idx]  # Cache hit
    return None  # Cache miss

Пераход да прымення з Redis

Для етапа «Перавод у прымэнную эксплуатацыю» неабяжна яшчэ до змены коду адзначыць вхідныя даны, адпаведальнага за крок і критэрыі завершэння. Аперацыйныя працавнікі павінны магчымець перазапускаць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабяжна аддактуваць дакументацыю як для стандартнага, так і для альтернатывнага ходу выканання. Практыка павтаральных спроб, перакрыцча з боку чалавека і обработка непрацясненых паведамленняў ёсць частью самага продукту, а не пасляднім элементам дапрацоўкі. Калі наступны крок — гэта код чы ўтварэнне вызову інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакрычэнням схемы, чым вольныя тэкстовыя апісанні. Для етапа «Перавод у прымэнную эксплуатацыю» неабяжна яшчэ до змены коду адзначыць вхідныя даны, адпаведальнага за крок і критэрыі завершэння. Аперацыйныя працавнікі павінны магчымець перазапускаць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце таму, каб гэты етап выступаў як контракт між вхіднымі данымі і перакрытымі выходнымі рэзультатамі. Даўце назвы всім элементам, адзначыць критэрыі успеху і не прабоўваць прыймаць часткова завершаныя рэзультаты без паведамлення.

from redisvl.extensions.cache.llm import SemanticCache
from redisvl.utils.vectorize import HFTextVectorizer
# Load a cache-optimized embedding model
vectorizer = HFTextVectorizer("redis/langcache-embed-v1")# Create the cache
cache = SemanticCache(
    name="customer_support_cache",
    vectorizer=vectorizer,
    redis_client=redis_client,
    distance_threshold=0.3
)# Set TTL (time to live) — keeps cache fresh
cache.set_ttl(86400)  # 24 hours

Аналіз таго, што вы створылі

Калі працуеце над этапам аналізу таго, што вы створылі, спачатку запісайце умовы дагавору: неабяжлівыя данні, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі список контроля дапамагае заліцварваць можлівыя змены ў кодзе. Запісуйце час выканення задач і кост токенаў або запытаў праза функцыйнае рэзультат. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі праця пераходзіць з дэмаверсіі ў спакульнаныя сераўсы. Зберагайце у кэшы стабільныя інструкцыі системы і схемы інструментаў. Павторны адправкі ідэнтычных даных ўсё часта становяцца прычыной зайвых витрачэнняў.

1. Частка прабоў кэша

Калі працюеце над стадзіяй 1 «Шточна шырака кэша», спачатку запісайце умовы: неабяжлівыя даннэ, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі список контроля дапамагае заліцьварыць пазнейшыя змены ў кодзе. Зберагаюце настройкі праза код аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжлівага чытання всей структуры. Кэшавайце стабільныя інструкцыі системы і схемы інструментаў. Перадача ідэнтычных прамулкіў є частым выказаннем витрачання ресурсаў.

2. Точнасць

Калі працюеце над стадзіяй 2 Precision, спачатку запісайце контракт: неабяжлівыя данны, сигнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі список пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Зберагайце у кэшы стабільныя інструкцыі системы і схемы інструментаў. Перадзял працэсу ідентычным прамаргам ёсць частым выкліком. Калі працюеце над стадзіяй 2 Precision, спачатку запісайце контракт: неабяжлівыя данны, сигнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі список пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Спрыятлівайце гэтай стадзіяй як контракту межа даннымі і перакананымі выходамі. Дайце назвы элементам, задаце правілы пераканання успеху і не падтрымайце тыхню частковую завершэннасць.

3. Адзыў

Этап 3 «Адміністрацыя» працюе наўзяй калі яго розглядаць як вимерную плошчу. Зафіксавайце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярненне да поперадньего стану, перш чым расширваць сферу дзеяння. Запісвайце часы виконання і косты токенав або запита праз аднае з функцыональных рэзультатаў. Відразлівае паказанне костаў з’являецца рана, таму не будзе неспакою з рахункамі, калі процес перейдзе з дэмавайнога режыма ў спяльныя сераўеры. Задаце бюджет токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расширваюць контекст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакойныя рахункі.

4. Паслабленне затрымкі

Этап падчырання затрымкі ў 4 разы працюе наяўней, калі яго розглядаць як вимерную плошчу. Зафіксавайце адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Зберагаюце настройкі пазырочна ад коду прыемліка. Файлы сераўнавання, хранільнікі секрэтных дадзеных і пазнакі функцый должны знаходзіцца ў адном месцы, куда аператары можуць адбавляць контроль, не чытаючы весь граф. Задаце ліміты токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расширваюць контекст; жорсткія ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.

With-Cache Latency = (avg_llm_latency × (1 - hit_rate)) + (avg_cache_latency × hit_rate)

Відобразэнне матрыцы плутання

Этап «Праматрыця плутання» працюе найэфектывней, калі яго спрыяваць як меркаваную плошчу. Зберагачыце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць часткай продукту, а не чымось, што дадаецца пазней. Задавайце ліміты токенам на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расширваюць контекст; строгі ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоўныя рахункі. Этап «Праматрыця плутання» працюе найэфектывней, калі яго спрыяваць як меркаваную плошчу. Зберагачыце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Спрыявайце гэтым этапам як кантракту межа вхіднымі даннымі і паверыранымі выходнымі рэзультатамі. Называйце артыфакты, задавайце критэрыя успеху і адмовляйцеся ад мовчанкавага частковага завершэння.

Чатыры методы для падвышэння точнасці кэша

Для практыкі падышча «Чатыры тэхнікі» неабяжна пазначыць вхідныя даны, адпаведальнага за крок і критэрыі завершэння пры змяне коду. Аперацыйныя працавнікі должны магчымаць перзапуск кроку з вядомай точкі контролю, не прабуючы спадараць ся пра скрыты стан. Запісваюць час выконання і вартасць токенаў або запытак па боку функцыйнальных рэзультаатаў. Відразлівасць вартасцей з самага пачатку запобегае неспакою, калі процес пераходзіць з дэмавайнага режыма ў спяльныя среды. Калі наступны крок — це код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з паўнай пераверкай схемы, чым вольнае пісьменне выказванне.

1. Перагляд прагаў

Для стадіі 1 «Threshold Sweep» неабяжна практыка — адначы ўзначыць вхідныя даны, адпаведальнага за выкананне крока і крэтыяры завершэння, прычым перад зменай коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба знаходзіць за межамі коду прыкладнення. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны быць у аднам месца, якое аператары можаць пераглядаць, не чытаяўшы весь код. Калі наступны крок — це код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем схэмы, чым вольныя тэкстовыя апісанні.

2. Переранжаванне за дапамой Cross-Encoder

Для стадіі 2 Cross-Encoder Reranking неабяжна практыка адзначыць вхідныя данні, адпаведальную за ўзел особу і крэтыніяты выходу пры перадзеўранні коду. Аператары должны магчымае запускіць гэты узел з вядомага пункту контролю без неабяжнай адгадванняя схованага стану. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Практыка падзеў, пераказы людзям і обработка некоректных паведамленняў ёсць часткая продукту, а не элемент пазнейшай дапрацоўкі. Калі наступны узел — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя данні з перакананням ў схеме, чым вольныя тэкстовыя апісанні. Для стадіі 2 Cross-Encoder Reranking неабяжна практыка адзначыць вхідныя данні, адпаведальную за ўзел особу і крэтыніяты выходу пры перадзеўранні коду. Аператары должны магчымае запускіць гэты узел з вядомага пункту контролю без неабяжнай адгадванняя схованага стану. Спрыятлівае ставленне да гэтай стадіі як да кантракту межа вхіднымі данніма і перакананымі выходнымі рэзультатамі. Назваць всі элементы, адзначыць крэтыніяты успеху і не практыкуваць безадказныя частковыя завершэнні.

3. LLM-какі суддзя

Калі працюеце над стадзіяй 3 «LLM-как суддзя», спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і кост токенав або запытаў праза функцыйнальныя рэзултаты. Відразувая візуабельнасць костаў запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавай версіі ў спяльныя сераўры. Зберагайце у кэшы стабільныя інструкцыі системы і схемы інструментаў. Перадзял у тое ж самае прамаргінал яўляецца частым выклікам затрат.

4. Фаззы-падабеннасць як прадзержнік

Калі працуеце з этапам 4 Fuzzy Matching, спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі список контроля дапамагае заліцьварыць пазнейшыя змены ў кодзе. Зберагаюце настройкі за межамі коду прыемліка. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжлівага чытання всей структуры. Кэшавайце стабільныя інструкцыі системы і схемы інструментаў. Перадача таго ж самога прамэра ёсць частым выклікам затрат ресурсаў.

Праўя выгода: кэшаванне ўнутрь AI-агентаў

Калі працюеце над стадзіяй «The Real Payoff Caching», спачатку запісайце контракт: неабяжлівыя данны, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліцьварыць пазнейшыя змены коду. Документавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць частынай продукту, а не пазнейшым дапрацоўкам. Зберагайце у кэшы стабільныя інструкцыі системы і схемы інструментаў. Перасылка ідэнтычных прамуров ёсць частым выклікам для ресурсаў. Калі працюеце над стадзіяй «The Real Payoff Caching», спачатку запісайце контракт: неабяжлівыя данны, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліцьварыць пазнейшыя змены коду. Спрыятлівайце гэтай стадзіі як контракту межа даннымі і перакананымі выходнымі рэзультатамі. Даўце назвы элементам, задайце критэрыяі успеху і адмовіцеся ад мовчанкавага частковага завершэння.

Практычная перакананасць: waLLMartCache ад Walmart

Практычная перакантовка: падробнае тэставанне Walmart работае наяўней, калі яго спрыяваць як мерыемую плошчу. Запісаўце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Запісвайце часы выканання і кост токеноў або запытаў праза функцыйнае рэзультат. Відкрытыя данні пра косцы з’являюцца рана, таму не будзе неспадзянак у відплатах, калі працэс пераходзіць з дамавайна ў спяльныя сэрвісы. Задаце бюджет токеноў на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расширваюць контекст; строгі ліміты не дазволяюць дамавайнам ператварыцца на неспадзянаныя рахункі.

Пачатак работы

Этап «Пачатак» работае найкраща, калі яго спрыяваць як меравальную плошчу. Зафіксавайце адна ідеальная версія роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Зберагаюце настройкі пазначыцельна ад коду прыемліка. Файлы сяродавішняе сераўісу, хранілішчы секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль, не чытаючы весь структураны дадзеныя. Задавайце ліміты токенам на кожны раунд і на кожную сесію. Інструменты з агентным режымам актыўна расширваюць контэкст; строгія ліміты не дазволяюць дэманстрацыям ператварыцца на неспакоўныя рахункі.

Заключэнне

Этап Заключэння працюе найкраща, калі яго спрыяваць як меравальную плошчу. Зберагачыце адны ідеальны прыклад выконання, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкія контрольны пункты і обработка некоректных паведамленняў ёсць часткай продукту, а не чымось, што дадаецца пазней. Задавайце ліміты на колькість токэнаў за раунд і за сесію. Інструменты-агенты агрэсывна расширваюць контекст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакоўлівыя рахункі. Этап Заключэння працюе найкраща, калі яго спрыяваць як меравальную плошчу. Зберагачыце адны ідеальны прыклад выконання, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Спрыявайце гэты этап як кантракт межа вхіднымі даннымі і падтвердзенымі выходнымі рэзультатамі. Называйце всі элементы, задавайце критэрыя успеху і адмовляйцеся ад бяспечнага частковага завершэння.

Чарткі для эксплуатацыі

Калі працюеце над стадзіяй Кантрольнага списку, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абярэння. Такі кантрольны список дапамагае заліцьварыць змяны ў кодзе.

Валіце маленькія, тэставаныя елементы замест вялікіх скрыптав. Калі якісь крок абярэння, гэтае абярэнне павінна вказваць на адзіну адпаведальнасць, а не на заплутаны ланцужок задач.

Зберагаеце у кэшы стабільныя інструкцыі системы і схемы інструментав. Перадзесланне ідэнтычных даных — частая прычына некароткага выкарыстоўвання ресурсаў.

Рэгулюйце стан графа, ўтримваючы яго у простай форме і з адзінаковым типам дадзеных. Вярнутыя структуры дадзеных маскуюць інфармацыю пра тое, кальки ноды запісалі кожны поле, і спакойваюць працэс пасля перарываў.

Калі бюджет дазволяе, дадзейце тэст на працэсаванне критычнага шляху ў системе CI з викорыстоўванням фіксатываў, а не рэальных платных API.

Зберагаюце канфігурацыю праза ўнутрь коду аплікацыі. Файлы сяродавішча, базы секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без неабяжнага чытання всіх элементаў.

Перад паднесенням стаку заморажавайце версіі, зафіксавайце «золаты» транскрыпты для критычных частак і паверыце крокі для адвярнення змян. У спакульнаваных сяродавішчах патрабуюцца ліміты частоты запытоў, перакананні ў прыналежнасці і чыстае адначасовае кераванне секрэтнымі данымі. Лепш выбіраць простую надзею на надзейнасць, чым хітрыя експерыментальныя рашэнні.

Прыметка для 576e7f2969bf: не кладзіце ключы прадастаўца ў репазітарый, задаце верхнюю межу токенаў на сесію і зберагаце транскрыпты праза фіксаты eval, каб пазнейшыя замены модэляў заставаліся пораўнанымі.