Галоўная / Артыкулы / Практычныя прытамулкі: Знайомства з Docling Pipelines: стварэнне RAG на рэбётках падпрыемства

Практычныя прытамулкі: Знайомства з Docling Pipelines: стварэнне RAG на рэбётках падпрыемства

Практычныя прыказкі: Знайомство з Docling Pipelines: стварэнне RAG на рэ벨е падпрыемства: кантракты, пераконтроль і слоты для коду для команд, якія викорыстоўваюць гэты патэрн.

3027 слоў

У гэтым карыце парадоксальнае рашэнне адгружваецца па шляху ад сыр'ёў да рабочай системы для: Знакомства з Docling Pipelines: Стварэння каналаў дадзеных RAG высокага рэвэру. Акцэнт ставіцца на практычныя крокі, чыстае перакананне і код, які можна проста падставіць у репазітарый без неабясненых спадзяванняў.

Проблема з кодам Glue

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

Што такое docling-pipelines?

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

bash
pip install docling-pipelines

Асновны ментальны модэль: аперацыйныя працавнікі і прадукты ўработкі

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

from docpipe.core.operators.abstract_operator import AbstractOperator, OperatorCategory
import pyarrow as pa

class MyOperator(AbstractOperator):
  short_name = "my_operator"
  category = OperatorCategory.Quality

  def __init__(self, config: dict) -> None:
    super().__init__(config)

  def transform(self, table: pa.Table) -> tuple[list[pa.Table], dict]:
    metadata = self.create_base_metadata(total_docs_count=len(table))
    # … process table …
    return [table], metadata

  @staticmethod
  def get_metadata() -> dict:
  return {"short_name": "my_operator", "description": "…"}

Экосыстэма аперацыйных працавнікаў

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

Як выглядае рэальны прайсупл

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

{
  "flow_name": "complete-document-pipeline",
  "global_config": {
    "doc_column": "content",
    "storage": "in-memory"
  },
  "flow": [
    {
      "type": "ingest_source",
      "name": "ingest_local_folder",
      "config": {
        "provider": "filesystem",
        "connection_params": {
          "paths": [
            "./sample_documents"
          ]
        },
        "include_filter": "pdf,txt,docx"
      }
    },
    {
      "type": "extract_operator",
      "name": "extract_with_docling",
      "config": {
        "text_extraction": {
          "provider": "docling_library"
        },
        "entity_extraction": {
          "provider": "none"
        }
      },
      "depends_on": [
        "ingest_local_folder"
      ]
    },
    {
      "type": "chunker",
      "name": "simple_chunker",
      "config": {
        "chunk_type": "simple",
        "chunk_size": 512,
        "chunk_overlap": 50
      },
      "depends_on": [
        "extract_with_docling"
      ]
    },
    {
      "type": "embeddings",
      "name": "ollama_embeddings",
      "config": {
        "provider": "litellm",
        "provider_config": {
          "model_id": "openai/nomic-embed-text",
          "api_base": "http://localhost:11434/v1"
        },
        "embeddings_column": "embeddings"
      },
      "depends_on": [
        "simple_chunker"
      ]
    },
    {
      "type": "vectordb",
      "name": "opensearch_vector_store",
      "config": {
        "provider": "opensearch",
        "doc_id_column": "doc_id_hash",
        "embeddings_column": "embeddings",
        "provider_config": {
          "index_name": "sample-documents-index",
          "host": "localhost",
          "port": 9200
        }
      },
      "depends_on": [
        "ollama_embeddings"
      ]
    }
  ]
}
docling-pipelines - flow-file pipeline.json

Развітыя шаблоны: розгалужэння, кантроль якосці маршрутаў і багатаступеневая адзначка дадзэнняў

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

{
  "name": "quality_branching",
  "type": "branching",
  "config": {
    "branches": {
      "high_quality_branch": {
        "link_name": "High Quality Documents",
        "criteria_json": {
          "criteria_list": [
            {
              "variable": "flesch_reading_ease",
              "operator": ">",
              "value": 60
            }
          ],
          "logical_operator": "AND"
        }
      },
      "low_quality_branch": {
        "link_name": "Low Quality Documents",
        "criteria_json": {
          "criteria_list": [
            {
              "variable": "flesch_reading_ease",
              "operator": "<=",
              "value": 60
            }
          ],
          "logical_operator": "AND"
        }
      }
    }
  },
  "depends_on": [
    "readability"
  ]
}
lang_detect → ededup → doc_quality → readability → sql_filter → embeddings
{
  "criteria_list": [
    {
      "variable": "docq_total_words",
      "operator": ">",
      "value": 100
    },
    {
      "variable": "lang_name",
      "operator": "=",
      "value": "en"
    }
  ],
  "logical_operator": "AND"
}

Тры спосабы ўвядзення ў працу

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

docling-pipelines - flow-file pipeline.json
docling-pipelines - flow-file pipeline.json - validate # validate without running
docling-pipelines - list-operators - verbose # discover all registered operators
from docpipe.lib.docpipe_flow_manager import DocpipeFlowManager
manager = DocpipeFlowManager(flow_file="pipeline.json")
manager.execute()
uvicorn docpipe.api.main:app - host 0.0.0.0 - port 8000

Расшырэнне за дапамогою спецыяльных аператараў

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

DOCPIPE_CUSTOM_OPERATORS=./my_operators docling-pipelines - flow-file pipeline.json

Вбудованая высока эфектывація працы

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

Серыя Docling Pipelines

Серыя The Docling Pipelines працюе наяўней, калі яе спрыяваць як мерыемую паверхню. Зафіксавайце адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Документавайце як шлях успеху, так і шлях вярнэння да нормальнага стану адночасна. Перапрыбуткі, людзкія контрольны пункты і обработка некоректных паведамленняў є часткай продукту, а не элементамі пазнейшай доработкі. Раздзеліце правілы частковай обработкі дадзеных ад правіл ўтрымання іх. Змена аднаго з яных не должна вымагаць перапісвання другога, калі зменяюцыся паказнікі якосці.

Што далей

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

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

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

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

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

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

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

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

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

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

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

Дзеянні зміцнення 0/754: вымерыце час выканання, класію памылак і колькасць выкорыстоўваных токенав для гэтага пункту, а потым выберыце, чы робіць змену на адной пазначанай базе пытанняў, а не на адной лічбе прыкладаў.

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

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

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

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

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

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

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

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

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

Дзеянне паўжасткі 4/754: зважыце час выкарыстоўвання, класію памылак і колькасць токенаў, выкарыстоўваных для гэтага зьязначэння, а пасля вырашыце, чы хацяць застаўіць змены на аднойчы назначанай сэткі пытанняў, а не на аднойчы прыгадцы.

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

Дзеянне паўжасткі 5/754: зважыце час выкарыстоўвання, класію памылак і колькасць токенаў, выкарыстоўваных для гэтага зьязначэння, а пасля вырашыце, чы хацяць застаўіць змены на аднойчы назначанай сэткі пытанняў, а не на аднойчы прыгадцы.

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

Дзялёўка забезпечэння безпекі 6/754: вымерайце час выканання, класію каштоўкаў і выкарыстоўванне токенаў для гэтай дзялёўкі, а пасля выберайце, чы хацяце застаўіць змену, стварыўшы фіксаваны набор пытанняў, а не на базе індывідуальных спазыроў.

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

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

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

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

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

Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе контралі і обработка некоректных паведамленняў є частью продукту, а не пазнейшым дапрацоўкам.

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

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

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

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

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

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

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

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

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

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