Практические советы: умные способы улучшения ответов ИИ-агентов в производственной среде
Пошаговое руководство по практическим советам: умные способы улучшения ответов ИИ-агентов в производственной среде: контракты, проверки и готовые блоки кода для команд, использующих эту модель.
Используйте это как переработанную версию идей из статьи «Умные способы улучшения ответов ИИ-агентов в производственной среде», ориентированную на операторов: четкие этапы, упорядоченные блоки кода и записи о восстановлении, сохраняющиеся при передаче задач. Этап обзора работает наилучшим образом, если рассматривать его как измеримую основу. Соберите один идеальный пример транскрипции, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Записывайте время выполнения и стоимость токенов или запросов рядом с функциональными результатами. Отображение стоимости на ранних этапах предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам.
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. Улучшение разбиения на части перед увеличением объёма контекста
На этапе «Улучшение разбиения на части» необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Лучше использовать небольшие, тестируемые единицы кода вместо обширных скриптов. При сбое шага он должен указывать на конкретную проблему, а не на сложную структуру обработки данных. Внедрять человеческое утверждение для операций, связанных с расходами или изменением производственных данных. Компиляционная настройка не гарантирует полноты бизнес-логики. На этапе «Улучшение разбиения на части» необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Регистрировать время выполнения, а также стоимость токенов или запросов вместе с функциональными результатами. Отображение стоимости на ранних этапах предотвращает неожиданные счета при переходе от демо-среды к общей среде разработки.
...
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 этапами процесса «Обучение агента» сначала запишите условия взаимодействия: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Предпочитайте небольшие, тестируемые модули вместо обширных скриптов. При сбое на каком-либо этапе причина должна быть связана с конкретной функцией, а не с запутанной цепочкой операций. Выполняйте проверки после дорогостоящих шагов. Система возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели при повторной попытке обработки последующего элемента. При работе над 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. Определите четкие обязанности для инструментов
Инструменты типа Clear stage работают наилучшим образом, когда их рассматривают как измеримую поверхность. Соберите один пример успешного выполнения, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Документируйте одновременно путь успешного выполнения и путь восстановления. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не этапом последующей доработки. Обеспечьте доступ к инструментам с узкими схемами и четкими метками побочных эффектов. Хостам необходимо знать, какие вызовы изменяют состояние, прежде чем они автоматически одобрят операцию.
process_customer_data()
get_customer_order()
cancel_customer_order()
update_customer_address()
create_support_ticket()
9. Проверяйте результаты работы агента
Правило 9: проверяйте, когда данная стадия работает наилучшим образом, если рассматривать её как измеримую среду. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Когда происходит сбой, он должен указывать на конкретную ответственность, а не на запутанную цепочку операций. Сохраняйте структуру графа простой и типизированной. Вложенные структуры скрывают информацию о том, какой узел заполнил тот или иной поле, и мешают возобновлению работы после прерываний. Правило 9: проверяйте, когда данная стадия работает наилучшим образом, если рассматривать её как измеримую среду. Соберите один идеальный пример работы, один случай сбоя и записку о возврате к предыдущему состоянию перед расширением объёма работ. Записывайте временные показатели, а также стоимость токенов или запросов рядом с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные расходы при переходе с демо-среды в общедоступные среды.
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. Не добавляйте несколько агентов без веской причины
На этапе «Не добавляйте» необходимо заранее определить входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь кодовый граф. Вводите ручное утверждение для операций, связанных с тратой денег или изменением производственных данных. Подключение компонентов во время компиляции не гарантирует полноты бизнес-логики.
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. Не оптимизируйте» сначала запишите условия работы: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список поможет сохранять честность при последующих изменениях кода. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код. Создавайте контрольные точки после дорогостоящих операций. Функция возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий шаг.
Response Quality
+
Reliability
+
Latency
+
Cost
+
User Experience
Заключительные мысли
На этапе «Заключительные замечания» сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист помогает сохранять честность при последующих изменениях кода.
Чек-лист операционной работы
На этапе выполнения чек-листа операционной работы сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист помогает сохранять честность при последующих изменениях кода.
Рассматривайте этот этап как договор между входными данными и проверенными результатами. Дайте названия соответствующим элементам, определите критерии успеха и не допускайте молчаливого частичного завершения работы.
Пункт контроля после дорогостоящих операций. Функция возобновления не должна снова взимать плату за один и тот же вызов LLM при повторной попытке обработки последующего узла оператором.
Закрепите версии зависимостей и запишите хэш изображения, с использованием которого выполнялась демонстрация. Воспроизводимость важнее устного опыта сотрудников.
Записывайте время выполнения операций, стоимость токенов или запросов вместе с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные счета при переходе от демо-версии к общим средам.
Пункт контроля после дорогостоящих операций. Функция возобновления не должна снова взимать плату за один и тот же вызов LLM при повторной попытке обработки последующего узла оператором.
Перед переводом стека в более продвинутую версию заморозьте версии, сохраните эталонный отчет для критически важных этапов и убедитесь, что известны шаги для возврата к предыдущей версии. В общих средах необходимы ограничения на частоту запросов, проверки принадлежности ресурсов и четко определенный ответственный за обновление секретов. Лучше предпочесть надежность без изысков, чем красивые, но единоразовые демонстрации.
Примечание к заданию с идентификатором 1481fc99429e: не хранить ключи поставщиков в репозитории, установить лимит токенов на сессию и сохранять транскрипции рядом с фиксами для оценки, чтобы последующие замены моделей оставались сопоставимыми.