Claude Architect · Pelajaran

CI/CD dan Pengekstrakan Berstruktur

Mod tanpa antara muka, output JSON, skema dan gelung pengesahan

Pelajaran 3 daripada 413 langkah

CI/CD dan Pengekstrakan Berstruktur ialah pelajaran Claude Architect percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Claude Architect, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Claude Architect merangkumi sejumlah 4 pelajaran.

Dua Senario, Satu Tema

Pelajaran ini menggabungkan dua senario peperiksaan yang berkongsi asas yang sama: ketentuan dalam automasi. Senario 5 (Claude Code untuk CI/CD) dan Senario 6 (Pengekstrakan Data Berstruktur) kedua-duanya mengemukakan soalan yang sama — bagaimanakah anda mendapatkan output yang boleh dihuraikan oleh mesin dan boleh dipercayai tanpa manusia dalam gelung?

Jawapannya sama dalam kedua-dua keadaan:

  • Pelaksanaan tanpa kepala / bukan interaktif supaya pipeline boleh memacu Claude.
  • Output JSON dengan skema supaya kod hiliran boleh menghuraikan hasil.
  • Gelung pengesahan yang mengesan dan membaiki ralat struktur sebelum ralat itu merebak.

Kuasai perkara ini dan anda merangkumi bahagian penting D3 (Konfigurasi & Aliran Kerja) dan D4 (Output Berstruktur) — secara keseluruhan 40% peperiksaan.

Mod Tanpa Kepala dalam CI/CD

Pipeline tidak mempunyai TTY dan tiada manusia untuk menjawab gesaan. Claude Code mesti berjalan secara bukan interaktif. Bendera untuk ini ialah -p (juga ditulis sebagai --print): bendera ini menjalankan satu gesaan, mencetak hasilnya dan keluar.

Gabungkannya dengan --output-format json supaya pipeline menerima sampul berstruktur, bukannya prosa bebas. Tanpa kedua-dua bendera ini, arahan akan tergantung kerana menunggu input interaktif dan binaan akan terhenti.

  • -p / --print = bukan interaktif, diperlukan dalam pipeline.
  • --output-format json = hasil yang boleh dihuraikan (secara pilihan dengan skema).
# Headless review step in a CI job
claude -p "Review the staged diff for correctness bugs only. \
  Flag a comment ONLY when it contradicts the code." \
  --output-format json \
  > review.json

# Pipeline now parses review.json deterministically
jq '.result' review.json

Sesi Semakan Terasing

Peraturan halus tetapi sangat kerap diuji: dalam CI, semak kod dalam sesi ISOLATED, berasingan daripada sesi yang menjana kod itu.

Mengapa? Sesi yang menjana kod masih menyimpan penaakulannya sendiri dan cenderung mempertahankan hasil kerjanya — semakan kendiri dalam sesi yang sama ialah antípola utama. Contoh baharu yang bebas tidak terikat dengan output tersebut dan mencabarnya secara jujur.

Ini mencerminkan peraturan dunia pengekstrakan bahawa semakan oleh contoh bebas atau baharu lebih baik daripada semakan kendiri dalam sesi yang sama. Penulis tidak akan mempertahankan kesimpulannya sendiri; penyemak yang bersih akan berbuat demikian secara kritis.

Meminimumkan Positif Palsu

Penyemak CI yang kerap memberikan amaran palsu akan diabaikan. Matlamat dalam Senario 5 adalah untuk meminimumkan positif palsu supaya pembangun mempercayai pengawal tersebut.

Penyelesaiannya ialah kriteria yang jelas, bukannya rayuan yang samar. "Jadilah lebih tepat" tidak mengubah apa-apa. "Tandakan komen HANYA apabila komen itu bercanggah dengan kod" memberikan sempadan yang jelas dan boleh diuji kepada model.

Semasa menjalankan semula, jangan pertikaikan segala-galanya sekali lagi: sertakan hasil terdahulu dan laporkan hanya isu baharu atau yang masih belum dibaiki. Ini mengekalkan isyarat yang bersih merentas lelaran.

claude -p "You are reviewing a re-run. Here are the prior findings:
$(cat prev_findings.json)

Report ONLY issues that are new or remain unfixed.
Flag a defect ONLY when the code's behavior contradicts its stated intent.
Ignore style and subjective preferences." \
  --output-format json > findings.json

Semakan Penghalang berbanding API Kelompok

Perangkap yang klasik: "gunakan API Kelompok untuk mengurangkan kos CI sebanyak 50%". Salah untuk pengawal sebelum gabungan.

Kelompok Mesej adalah 50% lebih murah dengan tempoh sehingga 24 jam, tetapi TIADA SLA kependaman dan TIDAK menyokong pemanggilan alat berbilang giliran. Semakan yang menghalang dan sensitif terhadap masa (seperti pengawal PR) tidak boleh menunggu tempoh yang tidak terbatas.

  • Gunakan Batch untuk kerja yang tidak menghalang: laporan semalaman, audit besar, larian pengekstrakan setiap malam.
  • JANGAN gunakan Batch untuk semakan sebelum gabungan / menghalang / interaktif.

Untuk kerja kelompok, custom_id memadankan setiap permintaan dengan hasilnya, dan anda menghantar semula kegagalan sahaja.

Output Berstruktur: Penggunaan Alat + Skema JSON

Sekarang Senario 6. Untuk mengekstrak data dengan boleh dipercayai, jangan minta JSON dalam prosa dan berharap hasilnya betul. Gunakan tool_use dengan Skema JSON: ini menghapuskan ralat sintaks dan menguatkuasakan medan yang diperlukan.

Tetapkan tool_choice kepada "any" untuk memastikan model memanggil alat (iaitu menghasilkan output berstruktur), bukannya teks bebas. Gunakan {"type":"tool","name":"X"} untuk memaksa satu alat pengekstrakan tertentu.

extract_tool = {
    "name": "extract_invoice",
    "description": "Extract structured fields from an invoice document.",
    "input_schema": {
        "type": "object",
        "properties": {
            "invoice_number": {"type": "string"},
            "line_items": {"type": "array", "items": {"type": "object"}},
            "stated_total": {"type": "number"},
        },
        "required": ["invoice_number"],
    },
}

resp = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    tools=[extract_tool],
    tool_choice={"type": "any"},  # MUST call a tool -> structured output
    messages=[{"role": "user", "content": document_text}],
)

Medan Diperlukan: Perangkap Rekaan

Peraturan skema yang paling kerap diuji: tandakan medan sebagai diperlukan HANYA jika medan itu sentiasa wujud dalam sumber.

Jika anda mewajibkan medan yang mungkin tiada, model tidak mempunyai cara yang sah untuk memenuhi skema itu selain mereka-reka nilai. Anda menukar medan yang hilang dengan medan yang dihalusinasikan — jauh lebih buruk untuk pipeline data.

Untuk nilai pilihan atau terbuka, utamakan enum dengan nilai "other" serta medan butiran teks bebas. Ini mengekalkan struktur output sambil membolehkannya diperluas untuk kes yang tidak anda senaraikan.

"document_type": {
    "type": "string",
    "enum": ["invoice", "receipt", "purchase_order", "other"]
},
"document_type_detail": {
    "type": "string",
    "description": "Free text. Required only when document_type is 'other'."
}
# 'required' lists ONLY fields guaranteed to appear -> no fabrication pressure

Gelung Pengesahan / Percubaan Semula

Skema mengehadkan bentuk, bukan ketepatan. Balut pengekstrakan dalam gelung pengesahan (pengesahan gaya Pydantic ialah corak piawai).

Apabila pengesahan gagal, gunakan retry-with-feedback: hantarkan tiga perkara bersama-sama kepada model — dokumen asal, output salah yang dihasilkannya dan ralat pengesahan yang tepat. Ini cukup tepat untuk membetulkan kesilapan format, struktur dan aritmetik.

Sempadan penting: percubaan semula membetulkan ralat FORMAT. Ia TIDAK membantu apabila maklumat itu sememangnya ABSENT daripada sumber — meminta semula data yang tidak pernah terkandung dalam dokumen hanya menggalakkan jawapan yang direka.

from pydantic import BaseModel, ValidationError

def extract_with_retry(doc, max_attempts=2):
    history = [{"role": "user", "content": doc}]
    for _ in range(max_attempts):  # cap = safety net, not primary stop
        out = call_extractor(history)
        try:
            return InvoiceModel.model_validate(out)
        except ValidationError as e:
            history.append({"role": "assistant", "content": str(out)})
            history.append({"role": "user", "content":
                f"Validation failed: {e}. Re-extract from the SAME document. "
                f"If a field is not present in the source, omit it; do not invent it."})
    raise ExtractionError("unresolved after retries")

Pembetulan Kendiri: Mengesan Percanggahan

Bagaimanakah anda mengesan nilai aritmetik yang salah tetapi diterima oleh skema? Bina semakan itu ke dalam pengekstrakan sendiri.

Coraknya: ekstrak kedua-duanya, iaitu calculated_total (jumlahkan item baris) dan stated_total (angka yang dicetak pada dokumen). Kemudian bandingkan kedua-duanya dalam kod.

Jika kedua-duanya berbeza, anda telah mengesan percanggahan secara tentu — sama ada ralat dokumen atau ralat pengekstrakan — dan boleh menandakan, mencuba semula atau menaikkan isu itu. Satu nombor boleh berbohong secara senyap; dua nombor mendedahkan pembohongan itu.

# Schema asks for BOTH so code can self-correct
"calculated_total": {"type": "number",
    "description": "Sum of all line_items, computed by you."},
"stated_total": {"type": "number",
    "description": "The total figure printed on the document."}

# Downstream deterministic check
if abs(result.calculated_total - result.stated_total) > 0.01:
    flag_for_review(result, reason="total mismatch")

Asal Usul: Tuntutan kepada Sumber

Pengekstrakan tanpa asal usul tidak boleh diaudit. Bagi setiap tuntutan yang diekstrak, simpan pemetaan tuntutan kepada sumber: nama atau URL dokumen sumber, petikan sokongan dan tarikh penerbitan.

Apabila dua sumber memberikan angka yang bercanggah, jangan pilih satu secara sewenang-wenangnya — anotasikan percanggahan itu. Selalunya tarikh menyelesaikan percanggahan yang kelihatan (satu angka sebenarnya lebih baharu).

Selain itu, paparkan mengikut jenis kandungan: jadual untuk data kewangan, prosa untuk naratif, senarai untuk penemuan teknikal. Asal usul bersama pemaparan yang betul menjadikan output cukup dipercayai untuk diautomatikkan.

"fields": [{
    "name": "annual_revenue",
    "value": "4.2B USD",
    "source_doc": "FY24-10K.pdf",
    "quote": "Total revenue was $4.2 billion in fiscal 2024.",
    "published": "2024-03-01"
}]
# Conflicting value from an older filing? Annotate, don't overwrite.

Metrik: Ketepatan Agregat Berbohong

Sebelum Anda membiarkan saluran paip pengekstrakan berjalan tanpa pengawasan, sahkan prestasinya dengan jujur. Tajuk seperti "97% tepat" boleh menyembunyikan prestasi yang lemah pada satu jenis dokumen atau satu medan tertentu.

Pendekatan berdisiplin:

  • Pensampelan rawak berstrata merentas jenis dokumen — bukan sampel berdasarkan kemudahan.
  • Keyakinan pada peringkat medan, ditentukur pada set pengesahan berlabel, sebelum diautomatikkan.

Metrik yang hanya mengagregatkan data ialah anti-corak yang sudah diketahui. Purata 97% dengan ketepatan 40% pada borang cukai ialah insiden pengeluaran yang sedang menunggu untuk berlaku.

Senario Peperiksaan: Pagar Pra-Gabung

Terapkan gambaran penuh ini pada keputusan peperiksaan yang realistik.

Imbas Kembali: Hasil Deterministik Di Bawah Automasi

Perkara utama untuk CI/CD dan pengekstrakan berstruktur:

  • Tanpa antara muka: -p / --print + --output-format json untuk pelaksanaan saluran paip yang tidak interaktif dan boleh dihuraikan.
  • Semakan terpencil lebih baik daripada semakan kendiri dalam sesi yang sama; kriteria yang jelas meminimumkan positif palsu; semasa pelaksanaan semula, laporkan hanya isu baharu atau yang belum dibaiki.
  • API kelompok = 50% lebih murah, tiada SLA kependaman, tiada alat berbilang giliran — untuk kerja semalaman, NEVER menyekat pemeriksaan.
  • Hasil berstruktur: tool_use + Skema JSON; tool_choice:"any" menjamin panggilan berstruktur.
  • Diperlukan hanya jika sentiasa hadir — mewajibkan medan yang ABSENT memaksa rekaan data; gunakan enum + 'other' + butiran untuk kebolehkembangan.
  • Cuba semula dengan maklum balas (dokumen asal + hasil yang salah + error tepat) membetulkan error FORMAT, bukan data ABSENT.
  • Pembetulan kendiri dengan jumlah yang dikira berbanding jumlah yang dinyatakan; kekalkan provenans (sumber, petikan, tarikh) dan catat percanggahan.
  • Sahkan dengan pensampelan berstrata + keyakinan pada peringkat medan — ketepatan agregat menyembunyikan kelemahan tertentu.
Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
26
Pelajaran
104

Soalan Lazim

Adakah pelajaran “CI/CD dan Pengekstrakan Berstruktur” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Claude Architect, termasuk “CI/CD dan Pengekstrakan Berstruktur”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Claude Architect merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “CI/CD dan Pengekstrakan Berstruktur”?

Mod tanpa antara muka, output JSON, skema dan gelung pengesahan Anda berlatih Claude Architect menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Claude Architect?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Claude Architect di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “CI/CD dan Pengekstrakan Berstruktur” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Claude Architect ini?

Ya. Setiap pelajaran Claude Architect menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Ejen Sokongan dan Penyelidikan Berbilang Ejen
  2. Penjanaan Kod dan Produktiviti Pembangun
  3. CI/CD dan Pengekstrakan Berstruktur
  4. Corak Perbualan dan Alat Ejen
← Kembali ke Claude Architect