Практичні поради: Ваш агент може сам виправити свій запит. Ось як.
Покрокова інструкція до практичних порад: ваш агент може сам виправити свій запит. Ось як: контракти, перевірки та слоти для коду для команд, які використовують цю схему.
У цьому посібнику описано процес створення системи, яка починається з сировини та закінчується функціональною системою для можливості вашого агента самостійно виправляти свої запити. Основна увага приділяється конкретним крокам виконання, чітким перевіркам та коду, який можна просто додати до репозиторію без необхідності здогадуватися щодо його призначення. На етапі огляду необхідно визначити вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не здогадуючись про прихований стан системи. Реєструйте час виконання та витрати на токени чи запити разом із функціональними результатами. Чітке відображення витрат заздалегідь запобігає несподіваним рахункам під час переходу системи від демо-режиму до спільних середовищ.
Навчіть вашого агента вчитися на власних помилках та створювати кращу версію себе
Під час роботи над проектом «Навчіть вашого агента створювати сцени» спочатку запишіть умови контракту: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Такий перелік допомагає зберігати чесність пізніших змін у коді. Тримайте конфігурацію окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Зберігайте у кеші стабільні інструкції системи та схеми інструментів. Повторна передача ідентичних даних є поширеною причиною надмірних витрат.
Агент
Під час роботи над етапом агента спочатку запишіть умови контракту: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Такий перелік допомагає зберігати чесність пізніших змін у коді. Одночасно задокументуйте шлях успішного виконання та шлях відновлення. Повторні спроби, людський контроль та обробка некоректних повідомлень є частиною продукту, а не етапом подальшої доробки. Зберігайте у кеші стабільні інструкції системи та схеми інструментів. Повторна передача ідентичних даних є поширеною причиною надмірних витрат ресурсів.
You are a helpful company information assistant.
You have the following knowledge about company policies:
- PTO: 20 days per year, accrued monthly. Up to 5 unused days roll over.
- Sick leave: 10 days per year, does not roll over.
- Remote work: Up to 3 days per week with manager approval.
- Benefits: The company offers competitive benefits.
Answer questions using only the information above. If a question is about
a topic not listed above, tell the user you do not have that information
and suggest they contact HR.
Основні елементи
Під час роботи на етапі «Будівельні блоки» спочатку запишіть контракт: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Цей перелік допомагає зберігати чесність пізніших змін у коді. Віддавайте перевагу невеликим, тестованим одиницям перед об’ємними скриптами. Коли якийсь крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану послідовність дій. Зберігайте у кеші стабільні інструкції системи та схеми інструментів. Повторна передача ідентичних даних є поширеною причиною зайвих витрат. Під час роботи на етапі «Будівельні блоки» спочатку запишіть контракт: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Цей перелік допомагає зберігати чесність пізніших змін у коді. Записуйте час виконання та витрати на токени або запити поруч із функціональними результатами. Відомі заздалегідь витрати запобігають несподіваним рахункам, коли процес переходить від демо-версії до спільних середовищ.
Цикл вдосконалення
Етап циклу вдосконалення працює найкраще, якщо його розглядати як вимірювану поверхню. Збережіть один ідеальний зразок результату, один випадок невдачі та примітку про скасування змін перед розширенням обсягу роботи. Тримайте конфігурацію окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Встановіть ліміти на кількість операцій за раз та за сеанс. Інструменти з автономним керуванням агресивно розширюють контекст; жорсткі обмеження запобігають тому, що демонстрації перетворюються на несподівані рахунки.
git clone https://github.com/GoogleCloudPlatform/BigQuery-Agent-Analytics-SDK.git
cd examples/agent_improvement_cycle
export PROJECT_ID=<your-project-id>
./setup.sh
./run_cycle.sh # single cycle, 10 questions, ~3-4 min
./run_cycle.sh --auto --cycles 3 --traffic-count 100
Крок за кроком
Етап «крок за кроком» найефективніше працює, якщо його розглядати як вимірювану поверхню. Запишіть один ідеальний приклад виконання, один випадок збою та примітки щодо скасування змін перед розширенням обсягу роботи. Документуйте як успішний, так і відновлювальний сценарії роботи. Повторні спроби, людський контроль та обробка некоректних повідомлень є частиною продукту, а не етапом подальшої доробки. Визначте бюджет на кількість операцій за раз та за сеанс. Інструменти типу агентів активно розширюють контекст; жорсткі обмеження запобігають тому, щоб демонстрації перетворювалися на несподівані рахунки.
Попередня перевірка: запустіть набір для оцінки
Процес попереднього тестування на етапі „золотий стандарт“ найкраще функціонує, якщо його розглядати як вимірювану поверхню. Збережіть один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи. Краще використовувати невеликі, тестовані одиниці замість об’ємних скриптів. Коли якийсь крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на складну ієрархію операцій. Встановіть ліміти на кількість токенів за хід та за сеанс. Інструменти типу агентів активно розширюють контекст; жорсткі обмеження запобігають тому, що демонстрації перетворюються на несподівані рахунки. Процес попереднього тестування на етапі „золотий стандарт“ найкраще функціонує, якщо його розглядати як вимірювану поверхню. Збережіть один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи. Записуйте час виконання та витрати на токени чи запити поруч із функціональними результатами. Чітке бачення витрат заздалегідь запобігає несподіваним рахункам, коли процес переходить від демонстрації до спільних середовищ.
{
"eval_cases": [
{"id": "pto_balance", "question": "How many PTO days do I get per year?",
"category": "pto", "expected_tool": "lookup_company_policy"},
{"id": "sick_leave_days", "question": "How many sick days do I have?",
"category": "sick_leave", "expected_tool": "lookup_company_policy"},
{"id": "remote_work_days","question": "How many days can I work from home?",
"category": "remote_work","expected_tool": "lookup_company_policy"}
]
}
▶ PRE-FLIGHT: Verifying golden eval set passes with current prompt
PASS: pto_balance
Answer: You receive 20 PTO days per year, accrued monthly.
Up to 5 unused days can roll over.
Tools called: lookup_company_policy
PASS: sick_leave_days
Answer: You have 10 sick days per year. They do not roll over.
Tools called: lookup_company_policy
PASS: remote_work_days
Answer: You can work from home up to 3 days per week
with manager approval.
Tools called: lookup_company_policy
All cases pass.
Кроки 1–2: Створення синтетичного трафіку та його обробка за допомогою агента
На етапі створення трафіку необхідно визначити вхідні дані, відповідального за крок та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись визначити прихований стан. Конфігурацію слід зберігати окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функціоналу мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Коли наступним кроком є написання коду чи виклик інструменту, краще використовувати структуровані результати з перевіркою схеми, ніж вільний текст.
▶ STEP 1/5: GENERATE SYNTHETIC TRAFFIC
Goal: Produce diverse user questions that differ from the golden eval set
Method: Gemini generates 100 questions
...
Sample questions:
- How many PTO days do I earn per month?
- What's the maximum number of PTO days I can roll over into the next year?
- I want to take a full week off for vacation. What is the advance notice required?
...
▶ STEP 2/5: RUN TRAFFIC THROUGH AGENT
Goal: Send questions to the agent, log every session to BigQuery
...
[62/100] traffic_expenses_window_to_submit: What is the timeframe for submitting expense reports?
-> Business expenses must be submitted within 30 days.
[64/100] traffic_benefits_health_company_contribution: What percentage of my health insurance premium does the company cover?
-> The company covers 80% of health insurance premiums for employees.
[65/100] traffic_benefits_dental_coverage: What does the dental insurance plan cover?
-> I do not have specific information about what the dental insurance plan covers. The company offers competitive benefits, but details about specific plans like dental insurance are not something I have access to. Please contact HR for more information on dental insurance coverage.
[67/100] traffic_benefits_401k_match: What is the company's 401k match policy?
-> I do not have information about the company's 401k match policy. Please contact HR for details on this topic.
[68/100] traffic_benefits_401k_vesting: How long do I need to be employed to be fully vested in the 401k match?
-> I do not have information about 401k vesting. Please contact HR for details regarding the 401k match and vesting schedule.
[69/100] traffic_benefits_parental_leave_primary: What is the parental leave duration for a primary caregiver?
-> I do not have information about parental leave. Please contact HR for details on this policy.
[66/100] traffic_benefits_vision_frames: How often can I get new frames under the vision plan?
-> I do not have information about the vision plan or how often you can get new frames. Please contact HR for details about the vision plan.
[60/100] traffic_expenses_receipt_required_over_x: Expenses over what amount require a receipt?
-> I do not have information about the company's expense policy. Please contact HR for details.
[89/100] traffic_holidays_next_company_holiday: When is the next company holiday?
-> I do not have information about company holidays. Please contact HR for details.
...
Answer questions using only the information above. If a question is about
a topic not listed above, tell the user you do not have that information
and suggest they contact HR.
Крок 3: Оцінка якості
На етапі оцінки якості, що є частиною кроку 3, необхідно визначити вхідні дані, відповідальну особу за цей крок та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не намагаючись вгадати прихований стан. Необхідно документувати як успішний, так і відновлювальний сценарії роботи. Повторні спроби, людський контроль та обробка некоректних повідомлень є частиною продукту, а не етапом подальшої оптимізації. У разі, коли наступним кроком є написання коду або виклик інструменту, краще використовувати структуровані результати з перевіркою за схемою, ніж вільний текст.
QUALITY SUMMARY
Total sessions evaluated : 100
Meaningful : 64
Partial : 1
Unhelpful : 35
Unhelpful rate : 35.0%
[response_usefulness]
HELPFUL : 64 ( 64.0%) ################################
NOT HELPFUL : 35 ( 35.0%) #################
PARTIAL : 1 ( 1.0%)
[task_grounding]
GROUNDED : 90 ( 90.0%) #############################################
NOT GROUNDED : 9 ( 9.0%) ####
NO TOOL NEEDED : 1 ( 1.0%)
UNHELPFUL Sessions (showing 10 of 35)
Session: 52282245-d2a4-4998-9ad9-4373612019e8 → company_info_agent
Question: For what amount do I need to submit a receipt for expenses?
Response: "I do not have information about the specific amount for which you need to submit a receipt for expenses. Please contact HR for details on the expense policy."
Usefulness: ❌ NOT HELPFUL
Reason: The agent explicitly states it does not have the requested information and directs the user elsewhere, thus not providing a substantive answer to the user's question.
Grounding: ❌ NOT GROUNDED
Reason: The agent's response indicates a lack of specific information and directs the user to HR, suggesting it did not retrieve specific data from a tool to answer the question. The response is a generic LLM statement rather than tool-derived data.
Session: 3821b327-43d8-47c6-b922-dd8d7988c366 → company_info_agent
Question: After how many days of illness is a doctor's note mandatory?
Response: "I do not have information about when a doctor's note is mandatory for illness. Please contact HR for this information."
Usefulness: ❌ NOT HELPFUL
Reason: The agent explicitly states it does not have the requested information and directs the user elsewhere, failing to answer the user's question substantively.
Grounding: ❌ NOT GROUNDED
Reason: The agent's response indicates a lack of information, meaning it was not grounded in actual data retrieved from its tools. The question required tool usage, but no relevant data was found or presented.
...
Metric V1 Budget Status
----------- ----------- ----------- ------
Avg latency 1482.3 ms 10000 ms PASS
Total tokens 811.4 tokens 50000 tokens PASS
Turn count 1 turns 10 turns PASS
Tool error rate 0.0 rate 0.1 rate PASS
Крок 4: Покращити запит
На етапі 4 «Покращення» необхідно визначити вхідні дані, відповідальну особу та критерії завершення перед зміною коду. Оператори повинні мати можливість знову виконати цей крок з відомої точки контролю, не здогадуючись про прихований стан. Краще використовувати невеликі, перевірювані одиниці коду замість об’ємних скриптів. Коли крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану структуру процесу. Якщо наступним кроком є код або виклик інструменту, краще використовувати структуровані результати з перевіркою схеми замість вільного тексту. На етапі 4 «Покращення» необхідно визначити вхідні дані, відповідальну особу та критерії завершення перед зміною коду. Оператори повинні мати можливість знову виконати цей крок з відомої точки контролю, не здогадуючись про прихований стан. Реєструйте час виконання та витрати на токени або запити разом із функціональними результатами. Відображення витрат на ранньому етапі запобігає несподіваним рахункам під час переходу від демо-середовища до спільних середовищ.
Extracted 12 failed cases, added 12 new to golden set (15 total).
Q: As a primary caregiver, how many weeks of parental leave am I eligible for?
Agent: I do not have information about parental leave. Contact HR.
Teacher: As a primary caregiver, you are eligible for 16 weeks of paid parental leave.
Q: What percentage of my contributions does the company match for 401k?
Agent: I do not have information about 401k matching. Contact HR.
Teacher: The company matches 4% of your contributions to the 401k. Fully vested after 1 year.
Q: When is the next company holiday?
Agent: I do not have information about company holidays. Contact HR.
Teacher: The next company holiday is May 25, 2026.
Q: What are the core hours I need to be available if I'm working remotely?
Agent: I do not have information about core hours. Contact HR.
Teacher: Core collaboration hours for remote employees are 10am-3pm in your local timezone.
Calling Vertex AI Prompt Optimizer with 12 ground truth examples...
(The optimizer is a server-side job -- typically 2-4 minutes.)
... still optimizing (15s elapsed)
... still optimizing (30s elapsed)
... still optimizing (45s elapsed)
Optimizer returned a candidate prompt.
PASS: pto_balance
Question: How many PTO days do I get per year?
Answer: You get 20 PTO days per year, which are accrued monthly...
Tools called: lookup_company_policy | Expected: lookup_company_policy
PASS: extracted_as_a_primary_caregiver_how_many_weeks_of
Question: As a primary caregiver, how many weeks of parental leave am I eligible for?
Answer: As a primary caregiver, you are eligible for 16 weeks of paid parental leave.
Tools called: lookup_company_policy | Expected: lookup_company_policy
PASS: extracted_what_percentage_of_my_contributions_does
Question: What percentage of my contributions does the company match for 401k?
Answer: The company matches 4% of your 401(k) contributions, and you are fully vested after 1 year of employment.
Tools called: lookup_company_policy | Expected: lookup_company_policy
PASS: extracted_what_does_the_dental_insurance_plan_cove
Question: What does the dental insurance plan cover?
Answer: The dental insurance plan covers full preventive care and 80% for major procedures.
Tools called: lookup_company_policy | Expected: lookup_company_policy
PASS: extracted_when_is_the_next_company_holiday
Question: When is the next company holiday?
Answer: The next company holiday is Memorial Day on May 25, 2026.
Tools called: lookup_company_policy, get_current_date | Expected: lookup_company_policy
...
15/15 passed
Prompt: V1 -> V2
Golden set: 3 -> 15 cases
Крок 5: Вимірювання покращень
Під час виконання кроку 5 «Вимірювання покращень» спочатку запишіть умови контракту: необхідні вхідні дані, сигнал успіху та те, що відбувається у разі часткової невдачі. Такий перелік допомагає зберігати чесність у подальших змінах коду. Тримайте конфігурацію окремо від коду додатку. Файли середовища, сховища секретних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Зберігайте у кеші стабільні інструкції системи та схеми інструментів. Повторна передача ідентичних даних є поширеною причиною надмірних витрат.
[44/100] traffic_expenses_004: I booked a flight for $600 for a business trip. Do I need pre-approval?
-> Travel expenses over $500 require pre-approval from your manager. Since your flight is $600, you will need pre-approval.
[80/100] traffic_benefits_020: If I leave the company after 6 months, will I get to keep the 401k match?
-> No, the company 401(k) match is fully vested after 1 year of employment. If you leave after 6 months, you will not get to keep the 401k match.
[84/100] traffic_holidays_004: Is the day after Thanksgiving a paid holiday?
-> Yes, the day after Thanksgiving is a paid holiday.
[19/100] traffic_sick_004: I was sick for two days; do I need to provide any documentation?
-> Employees receive 10 sick days per year. A doctor's note is required for absences longer than 3 consecutive days. Since you were sick for two days, you do not need to provide any documentation.
QUALITY SUMMARY
Total sessions evaluated : 100
Meaningful : 99
Partial : 1
Unhelpful : 0
Unhelpful rate : 0.0%
[response_usefulness]
HELPFUL : 99 ( 99.0%) #################################################
PARTIAL : 1 ( 1.0%)
[task_grounding]
GROUNDED : 99 (100.0%) ##################################################
Session: 4e0ea11d-d4dc-4a59-b337-30415a595c90 → company_info_agent
Question: If I'm sick for more than 3 days, what kind of doctor's note is required?
Response: "If you are sick for more than 3 consecutive days, a doctor's note is required."
Usefulness: PARTIAL
Reason: The response confirms a doctor's note is required but does not specify
the 'kind' of note, which was part of the user's question.
Grounding: GROUNDED
Reason: The agent's response directly reflects the information retrieved
from the 'lookup_company_policy' tool.
CYCLE 1 RESULTS
Before (V1): 64.0% meaningful (64/100 sessions)
After (V2): 99.0% meaningful (98/99 sessions)
Quality 99.0% meets threshold (95%) -- stopping auto-continue.
DONE (total wall time: 12m 39s)
Prompt version: V2
Golden eval set: 15 cases
Metric V1 V2 Budget Status
----------- ----------- ----------- ----------- ------
Avg latency (v) 1482.3 ms 1088.4 ms 10000 ms PASS
Total tokens (^) 811.4 tokens 1339.7 tokens 50000 tokens PASS
Turn count (=) 1 turns 1 turns 10 turns PASS
Tool error (=) 0.0 rate 0.0 rate 0.1 rate PASS
Запит V2
Під час роботи над етапом формулювання запитів V2 спочатку запишіть умови використання: необхідні дані вхіду, сигнал про успішне виконання та наслідки часткової невдачі. Такий перелік допомагає зберігати чесність пізніших змін у коді. Одночасно задокументуйте шлях успішного виконання та шлях відновлення. Повторні спроби, людський контроль та обробка некоректних повідомлень є частиною продукту, а не етапом подальшої оптимізації. Зберігайте у кеші стабільні інструкції системи та схеми інструментів. Повторна передача ідентичних даних є поширеною причиною надмірних витрат ресурсів.
You are a helpful company information assistant. Your primary function
is to answer employee questions about company policies by using the
available tools.
Core Directives:
1. Tool-First Approach: For EVERY user question, your first and only
action should be to use one of the provided tools to find the answer.
2. No Answering from Memory: Do not use any general knowledge. The
tools are the only source of truth.
3. Mandatory Tool Use: You MUST call the appropriate tool to answer the
question. Do not state that you don't have the information or direct
the user to HR for topics that the tools can handle.
4. Topic Inference: Carefully analyze the user's prompt to determine
the correct topic parameter for the lookup_company_policy tool.
The user's language may not be an exact match for the available
topics (e.g., 'parental leave' or '401k' should be mapped to
the 'benefits' topic).
AVAILABLE TOOLS:
- lookup_company_policy(topic: str)
- Looks up a company policy by topic.
- topic: The policy topic to look up. Must be one of: pto, sick_leave,
remote_work, expenses, benefits, holidays.
- get_current_date()
- Gets the current date.
Your goal is to successfully call the correct tool with the correct
parameters based on the user's question.
Що цей цикл навчає про проектування запитів
Під час роботи над етапом «Що вчить цикл» спочатку запишіть умови взаємодії: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Такий перелік допомагає зберігати чесність пізніших змін у коді. Віддавайте перевагу невеликим, тестованим одиницям коду перед об’ємними скриптами. Якщо якийсь крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на складну послідовність операцій. Зберігайте у кеші стабільні інструкції системи та схеми інструментів. Повторна передача ідентичних даних є поширеною причиною зайвих витрат. Під час роботи над етапом «Що вчить цикл» спочатку запишіть умови взаємодії: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Такий перелік допомагає зберігати чесність пізніших змін у коді. Записуйте час виконання та витрати на токени чи запити поруч із функціональними результатами. Чітке бачення витрат заздалегідь запобігає несподіваним рахункам, коли процес переходить від демо-версії до спільних середовищ.
Виконання самостійно
Етап «Виконання самостійно» найкраще функціонує, якщо його розглядати як вимірювану поверхню. Запишіть один ідеальний приклад роботи, один випадок збою та примітки щодо скасування змін перед розширенням обсягу завдань. Тримайте конфігурацію окремо від коду додатку. Файли середовища, сховища конфіденційних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код. Встановіть ліміти на кількість токенів за раунд та сесію. Інструменти типу агентів активно розширюють контекст; жорсткі обмеження запобігають тому, що демонстрації перетворюються на несподівані рахунки.
git clone https://github.com/GoogleCloudPlatform/BigQuery-Agent-Analytics-SDK.git
cd examples/agent_improvement_cycle
export PROJECT_ID=<your-project-id>
./setup.sh
./run_cycle.sh
./reset.sh
Висновки
Етап оцінки ефективності працює найкраще, коли його розглядають як вимірювану поверхню. Збережіть один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи.
Чек-лист операцій
Етап чек-листу операцій працює найкраще, коли його розглядають як вимірювану поверхню. Збережіть один ідеальний запис, один випадок збою та примітку про скасування змін перед розширенням обсягу роботи.
Розглядайте цей етап як контракт між вхідними даними та перевіреними результатами. Позначте всі елементи, визначте критерії успіху та не допускайте мовчазного часткового виконання завдань.
Бюджет на токени за хід та за сеанс. Інструменти типу агентів активно розширюють контекст; жорсткі ліміти запобігають тому, щоб демонстрації перетворювалися на несподівані рахунки.
Встановіть людське схвалення для операцій, які витрачають гроші чи змінюють дані виробництва. Підключення під час компіляції не є гарантією повності бізнес-функцій.
Напишіть короткий посібник: як змінювати ключі, як спорожнювати чергу, як скасовувати останнє завантаження даних.
Одночасно задокументуйте оптимальний та аварійний сценарії роботи. Повторні спроби, людське контролювання та обробка некоректних повідомлень є частиною продукту, а не етапом подальшої оптимізації.
Перш ніж підвищувати рівень складності системи, заморозьте версії, створіть ідеальний запис для критичного сценарію та підтвердьте кроки скасування змін. У спільних середовищах необхідні ліміти на частоту використання, перевірки прав доступу та чіткий власник для зміни секретних даних. Віддавайте перевагу надійності перед креативними одноразовими демонстраціями.
Примітка до пакету f7bfa970ccb5: не включайте ключі постачальників у репозиторій, встановіть ліміт токенів на сеанс та зберігайте транскрипції поруч із фіксами для оцінки, щоб подальша заміна моделей залишалася порівнянною.
Для примітки щодо посилення безпеки на етапі 0 визначте вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори мають мати можливість перезапустити крок з відомої точки контролю, не здогадуючись про прихований стан. Документуйте як успішний, так і відновлювальний сценарії. Повторні спроби, людський контроль та обробка некоректних повідомлень є частиною продукту, а не етапом подальшої оптимізації.
Деталь посилення безпеки 0/963: вимірюйте час виконання, клас помилки та кількість витрачених токенів для цієї примітки, а потім вирішуйте, чи залишити зміни, ґрунтуючись на фіксованому наборі питань, а не на окремих випадках.
Під час виконання першого етапу зауважень щодо посилення безпеки спочатку запишіть умови договору: необхідні вхідні дані, сигнал про успіх та те, що відбувається у разі часткової невдачі. Цей перелік допомагає зберігати чесність пізніших змін у коді. Розглядайте цей етап як договір між вхідними даними та перевіреними результатами. Дайте назви елементам, визначте критерії успіху та не допускайте беззвучного часткового виконання завдань.
Деталь посилення безпеки 1/963: вимірюйте час виконання, клас помилки та кількість витрачених ресурсів для цього зауваження, а потім вирішуйте, чи зберегти зміни, ґрунтуючись на фіксованому наборі питань, а не на окремих випадках.
Етап зауважень щодо посилення безпеки 2 працює найкраще, коли його розглядають як вимірювану поверхню. Збережіть один ідеальний зразок роботи, один випадок невдачі та запис про скасування змін перед розширенням обсягу роботи. Тримайте конфігурацію окремо від коду програми. Файли середовища, сховища конфіденційних даних та флаги функцій мають знаходитися в одному місці, де оператори можуть їх перевіряти, не читаючи весь код.
Деталь посилення безпеки 2/963: виміряйте час виконання, клас помилки та кількість витрачених токенів для цього запису, а потім вирішіть, чи залишити зміни, ґрунтуючись на фіксованому наборі питань, а не на окремих випадках.
Для третьої стадії запису про посилення безпеки визначте вхідні дані, власника кроку та критерії завершення перед зміною коду. Оператори повинні мати можливість перезапустити крок з відомої точки контролю, не здогадуючись про прихований стан. Віддавайте перевагу невеликим, тестованим одиницям перед складними скриптами. Коли крок зазнає невдачі, причина має вказувати на конкретну відповідальність, а не на заплутану систему обробки даних.
Деталь посилення безпеки 3/963: виміряйте час виконання, клас помилки та кількість витрачених токенів для цього запису, а потім вирішіть, чи залишити зміни, ґрунтуючись на фіксованому наборі питань, а не на окремих випадках.