Практычныя нататкі: разумныя спосабы палепшыць адказы AI-агента ў прадакшне
Практычны разбор тэмы «як палепшыць адказы AI-агента ў прадакшне»: кантракты, праверкі і гатовыя фрагменты кода для каманд, якія ўкараняюць гэты падыход.
Крыніцы: Smart Ways to Improve AI Agent Responses in Production
Існавайце гэта як перапрацоўаны варыянт ідэй з документа “Розумныя спосабы падтрымкі каштоўнасці адпаведзей AI-агента ў працэсе вырабоцтва”: чыстыя этапы, арганізаваныя блакі коду і прыметкі з падтрымкай, якія застаюцца пасля перадачы. Этап “Апглэйв” найкрашча працюе, калі яго розглядаць як мерыябельную плошчу. Запісайце адна ідэальная транскрыпцыю, адзін прыклад неудачы і прыметкі з вярненням да пачатковага стану, перш чым расшырваць масштабы. Запісвайце час выканання і каштоўнасць токеноў чыста запытаў праз адныя з функцыйнальных рэзультатаў. Відразлівае паказанне каштоўнасці з’являецца першым праблэмам, калі працэс пераходзіць з дэмаверсіі ў спакульнаныя сераўысы.
1. Дайце агенту правільны кантэкст, а не большы кантэкст
Для этапы «1. Выдача агенту» неабяцкова прадварыць заданні для вводу, адпаведнага власніка крока і крэтарыяў завершэння працы, перш чым зменяць код. Аператары должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба захаваць праз аплікацыйны код. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаючы весь граф. Прызначыце людскія аправарэння для рэласаў, якія вітрачаюць грошы або зменяюць даныя ў працэсе. Падключэння праз час компілявання не ўзроўнаўцяеся з повнайасцю бізнес-процэсаў.
User Question
↓
Query Embedding
↓
Vector Search
↓
Top-K Results
↓
Reranking
↓
Relevant Chunks
↓
LLM
↓
Final Answer
2. Адлучэнне прычыны бягаў перш чым зменіць LLM
Для этапы «2 Debug Retrieval Before» неабяцо пазначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы схованы стан. Неабяцо задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцці і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем схэмы, чым вольныя тэкстовыя апісанні.
Question
↓
Query Transformation
↓
Retrieved Documents
↓
Similarity Scores
↓
Reranking
↓
Final Context
↓
Prompt
↓
LLM Response
results = vector_store.similarity_search(
query=user_question,
k=5
)
for result in results:
print("Score:", result.score)
print("Source:", result.metadata.get("source"))
print("Content:", result.page_content[:500])
3. Паспрабаваць пакрашчыць разбіўку на часткі пры збільшэнні кантэксту
Для этапы «3. Удосконаленне разбійвання на часткі» неабяцо пазначыць вхідныя даны, адміністратара крока і крэтырыя для завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Валіць маленькія, тэставальныя елементы працэзнасупрацоўкі замест вялічзючых скрыптав. Калі крок не выйшаў, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцоўку крокаў. Заставіць людзкую апрацоўку для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны у працэзнасупрацоўцы. Компіляцыйныя налашчэння не ўзначаюць повнасці бізнес-процэсаў. Для этапы «3. Удосконаленне разбійвання на часткі» неабяцо пазначыць вхідныя даны, адміністратара крока і крэтырыя для завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісваць час выканання і кост токенаў аб запытаў разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэзнасупрацоўка пераходзіць з дамовай асяроддзя ў спяльную.
Напісцы.
Chunk 1:
Employees are eligible for reimbursement when...
Chunk 2:
...the expense was approved by their manager and
submitted within 30 days.
4. Не надсылайце весь дзялон размовы модэлю
Калі працуеце над этапам «Не надсылайце», спачатку запішыце умовы вікорыстання: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс дапамагае заліцьваты змяны ў кодзе. Зберагаюце настройкі паза кодам прыемліка. Файлы сераўнавання, храненні секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць пераглядаць іх без неабяжлівага чытання всей структуры. Кэшуйце стабільныя інструкцыі сістэмы і схемы інструментаў. Павторны надсыл кантрольных даных — частая прычына зношэння рэсурсаў.
Conversation Context
Recent Messages:
- User asked about refund eligibility.
- Agent explained the standard policy.
- User mentioned they purchased an annual plan.
Conversation Summary:
Customer purchased an annual subscription
and wants to know whether they qualify for a refund.
Current Question:
Can I still get a refund?
5. Раздзеляйце інструкцыі сістэмы, кантэкст і даныя корыстніка
Калі працуеце над 5 стадзямі «Інструкцыі для адзельных сістэм», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцварыць пазнейшыя змены ў кодзе. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Зробіце контрольную пазнаку пасля дорогіх крокаў. Сістэма вярнення не павінна знову ставіць рахунак за той самы вызов LLM, калі аператар перапрыбуе пазнейшы вузел.
SYSTEM INSTRUCTIONS
You are a customer support agent.
Answer using the provided knowledge.
Do not invent company policies.
If the answer isn't available, say that you don't know.
KNOWLEDGE
<retrieved_documents>
USER QUESTION
<user_question>
6. Навучыце агента, калі ёму трэба сказаць «вы не ведаеце»
Калі працуеце над 6 стадзямі «Научыць агента», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыпання павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Зрабіце перапактаванне пасля дорогіх крокаў. Програма не павінна зноў сцягваць плата за той самы вызов LLM, калі аператар прабуе зноў запрацаваць пазнейшы вузел. Калі працуеце над 6 стадзямі «Научыць агента», спачатку запісайце умовы вярбунка: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены ў кодзе. Запісвайце час выканання і кост токенав або запытаў праза функцыйнае рэзультат. Відкрытыя даныя пра косцы з’являюцца рана, таму не будзе неспакою праз нечаканыя рахункі, калі працэс перайдзе з дэмавайнага рэжыма ў спяльныя сераўры.
If the answer cannot be supported by the provided
knowledge, do not guess.
Clearly state that the information is unavailable.
7. Не включаць логіку бізнесу ў запіт
Этап «7. Не включаць логіку бізнесу» працюе найэфектывней, калі яго розглядаць як вімерную плошчыну. Запісаце адна ідэальная транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню перад расшырэнням масштаба. Храніце настройкі пазначынай ад коду прыемліка. Файлы сяродавішча, хранальнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць аўдыт без неабяжнага чытання всіх дадзеных. Установіце ліміты на колькасць токенав за раунд і за сесыю. Інструменты-агенты агрэсіўна расшырваюць кантэкст; жорсткія ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоючыя рахункі.
def check_refund_eligibility(customer, purchase):
if not customer.is_premium:
return False
if customer.account_age_years < 2:
return False
if purchase.days_since_purchase > 30:
return False
if customer.previous_refund:
return False
return True
LLM
→ Understands the request
→ Decides which tool to use
→ Explains the result
Application
→ Enforces business rules
→ Validates data
→ Performs deterministic operations
8. Надаць інструментам чысткія абавязкі
Інструменты 8 Give Tools Clear работаюць найэфектывней, калі іх спрыяваць як мерыемую паверхню. Запісаце адна ідэальная версія працы, адзін прыклад неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння. Перапрыбуткі, людзкія контрольны пункты і обработка некорэктных звесцей ёсць часткай продукту, а не пасляднім допрацоўкам. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны будуць автаматычна затверджаны.
process_customer_data()
get_customer_order()
cancel_customer_order()
update_customer_address()
create_support_ticket()
9. Пераканацца ў тым, што генеруе агент
«9 Validate»: этап працюе найкрашча, калі яго розглядаць як вімерную паверхню. Перш чым расшырваць масштаб, зафіксавайце адны ідэальны прымер працы, адну справу з бягам і прыметку па вярнэнню да пачатковага стану. Валідзіруйце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына бягу должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты графа трэба зберагаць у простаму, тыпаваны фармат. Вярнутыя структуры дакладна не показуюць, канфігурацыя якога вузла запісала канкрэтны поле, і спакоўваюць працу пасля перэрываў. «9 Validate»: этап працюе найкрашча, калі яго розглядаць як вімерную паверхню. Перш чым расшырваць масштаб, зафіксавайце адны ідэальны прымер працы, адну справу з бягам і прыметку па вярнэнню да пачатковага стану. Запісвайце час выканання і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразувая візуабельнасць костаў запобегае неспакойным рашчыткам, калі працэс пераходзіць з дэмавайнага рэжыма ў спяльныя сераўы.
User
↓
LLM
↓
Refund API
User
↓
LLM
↓
Tool Request
↓
Application Validation
↓
Business Rules
↓
Refund API
{
"customer_id": "12345",
"eligible": true,
"reason": "Purchase is within the refund window"
}
10. Не дадзіце колькіх агентаў без рэальнай прычыны
У падэйпе «10. Не дадзіце» неабходна праканалічыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры перамене коду. Аперацыйныя працавнікі павінны магчымае перадзеўсці крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Канфігурацыю трэба залічыць параду ад коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў павінны знаходзіцца ў аднам месцы, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Для рэлей, якія выкарыстоўваюць грошы або зменяюць даны у працэсе, неабходна людская апраўда. Падключэння ў час компіляцыі не абавесць цэліснасцю бізнес-процэса.
User
↓
Router Agent
/ | \
↓ ↓ ↓
RAG SQL API
\ | /
\ | /
Final Agent
↓
Response
11. Створыце набір дадзеных для ацэнкі на аднойчыны з рэальных запітанняў
Для этапы 11 «Стварэнне ацэнкі» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не яго пазнейшай дапрацоўкі. Неабяжна застаўляць людзкую затверджэнняе для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе. Компіляцыйныя налашчанні не ўзначаюць повнасці функцыоналу продукту.
Easy questions
Ambiguous questions
Multi-step questions
Out-of-domain questions
No-answer questions
Tool-use questions
Adversarial questions
12. Адстэпнае выявленне всего рабочага працэсу агента
Для ўрадзілу «12 Trace the Entire» неабходна яшчэ перад змянай коду адзначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аперацыяныя працавнікі павінны магчымае запускаць крок з вядомай точкі контролю, не падозруючы пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выконваецца, прычына нехарактэрнага рэзультата павінна вказываць на адзін конкрэтны элемент, а не на заплутаную схему выкарыстоўвання рэсурсаў. Неабходна людская апрацоўка тых крокаў, якія ведуць да выдаткаў грошаў або змяні дадзэнняў у працоўным сераверы. Компіляцыйныя налаштаванні не ёсць падставай для стверджэння, што працэс ўсё завершаны. Для ўрадзілу «12 Trace the Entire» неабходна яшчэ перад змянай коду адзначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аперацыяныя працавнікі павінны магчымае запускаць крок з вядомай точкі контролю, не падозруючы пра схованы стан. Паралельна з функцыйнымі рэзультатамі неабходна фіксавацыя часу выкарыстоўвання, а таксама вартосці токенав або запытанняў. Візуабільнасць вартасцей з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльныя сераверы.
Request ID
↓
User Question
↓
Query Transformation
↓
Retrieved Documents
↓
Reranking Results
↓
Prompt Version
↓
Model
↓
Tool Calls
↓
Tool Responses
↓
Final Response
↓
Validation
13. Не оптымізавайце толькі для точнасці
Калі працуеце над этапам «13. Не оптымізавайце», спачатку запісаўце умовы кантракту: неабходныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпання. Такі спіс контроля дапамагае заліцвачыць змяны ў кодзе чыста. Зберагайце настройкі паза кодам прыемліка. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць адбавіць аўдыт без неабяжнага чытання всіх элементаў. Стварайце контрольныя пункты пасля дорогіх крокаў. Сістэма вярнення не должна занова ставіць плату за той самы вызыв LLM, калі аператар перапрыяўляе працу да наступнага элемента.
Response Quality
+
Reliability
+
Latency
+
Cost
+
User Experience
Заключныя меркі
Калі працюеце над стадзіяй «Заключныя заўважэнні», спачатку запісайце умовы кантракту: неабходныя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контролю дапамагае заставіць пазнейшыя змены коду быць чыстымі.
Чэк-ліст для эксплуатацыі
Калі працюеце над стадзіяй «Чэк-ліст для эксплуатацыі», спачатку запісайце умовы кантракту: неабходныя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контролю дапамагае заставіць пазнейшыя змены коду быць чыстымі.
Спрыяйце цій стадзіі як кантракту межаў уваходных дадзеных і перакананых выходных рэзультатаў. Дайце назвы артыфактам, задаць тэсты на успех і не прымайце мовчанкава часткова завершаныя рэзультаты.
Пауза пасля дорогіх крокаў. Функцыя адновлення не должна занова нарахоўваць плата за той самы вызыв LLM, калі аператар праказвае спробу на пазнейшым вузле.
Забезпечыце фіксацію версій залежнасцяў і запісаце хеш-значэнне зображэння, якое вікорыстоўвалася для дэманстраціі. Возможнасць перадарабаткі прынесе больш пользы, чым традыцыйныя методы.
Запісвайце час выканання аперацый, а таксу на токены чы запіты разам з функцыйнальнымі рэзультатамі. Відразувыя даныя пра вартасць запобегаюць неспакоўным нарахоўкам, калі працэс пераходзіць з дэманстрацыі ў спадзеленыя сераўеры.
Пауза пасля дорогіх крокаў. Функцыя адновлення не должна занова нарахоўваць плата за той самы вызыв LLM, калі аператар праказвае спробу на пазнейшым вузле.
Перад пераходам да наступнага етапу заблокіруйце версіі, зафіксуйце крытычны варыант транскрыпціі для ключовага шляху і паказваце крокі для вярнення да пачатковага стану. У спадзеленых сераўерах неабходны ліміты на колькасць запытоў, пераказкі прав на выкарыстоўвання рэсурсаў і чысткі распадзел канфідэнцыйных даных. Валіце надзейнасць, чым крэатывныя, але разовыя дэманстраціі.
Запіска параграфу 1481fc99429e: не кластыць ключы прадаўцаў у рэпазітары, задаць максымальны ліміт токена на кожную сесію, а таксама зберагчы транскрыпціі празаўсюды з фікстурамі для ацэнкі, каб пазнейшыя замены мадэляў заставаліся порównаннэй.