0Pricing
AI Agents · Pelajaran

Perulangan Perbaikan untuk Keluaran yang Tidak Sesuai Format

Jika JSON tidak dapat diuraikan, kirimkan galatnya kembali kepada model dan minta model memperbaiki keluaran.

Perulangan Perbaikan untuk Keluaran yang Tidak Sesuai Format adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Bahkan Mode Ketat Terkadang Gagal

Model lama, kasus tepi, atau penyedia tanpa mode ketat terkadang mengembalikan JSON yang tidak terbentuk dengan benar. Agen yang tangguh dapat pulih dengan meminta model memperbaiki keluarannya.

Basic Repair Loop

from pydantic import ValidationError
import json

def call_with_repair(messages, schema, max_attempts=3):
    for attempt in range(max_attempts):
        response = client.chat.completions.create(
            model='gpt-4o-mini',
            messages=messages,
            response_format={'type': 'json_object'}
        )
        raw = response.choices[0].message.content
        try:
            return schema.model_validate_json(raw)
        except (json.JSONDecodeError, ValidationError) as e:
            messages.append({'role': 'assistant', 'content': raw})
            messages.append({
                'role': 'user',
                'content': f'That output failed to validate: {e}.\nReturn ONLY valid JSON that matches the schema. No prose, no markdown fences.'
            })
    raise RuntimeError('Could not get valid output after repair attempts.')

Mengapa Ini Berhasil

Model melihat pesan kesalahan dan biasanya memperbaikinya pada giliran berikutnya. Tambahkan instruksi yang jelas:

  • "Tanpa prosa"
  • "Tanpa pagar markdown"
  • "Cocokkan bentuk persis ini: ..."

Menghapus Pagar Markdown

Model sering membungkus JSON dalam ```json ... ```. Hapus pembungkusnya sebelum melakukan penguraian:

import re

def extract_json(text):
    m = re.search(r'```(?:json)?\s*(.*?)```', text, re.S)
    if m:
        return m.group(1).strip()
    return text.strip()

sample = '```json\n{"name": "Alice"}\n```'
print(extract_json(sample))

Pemotongan dari Kurung Pertama

Jika terdapat prosa tambahan, potong mulai dari { pertama hingga } terakhir yang cocok:

def find_json_slice(text):
    start = text.find('{')
    if start == -1:
        return None
    depth = 0
    for i, c in enumerate(text[start:], start):
        if c == '{': depth += 1
        if c == '}':
            depth -= 1
            if depth == 0:
                return text[start:i+1]
    return None

sample = 'Here is your answer: {"name": "Alice", "age": 30} - hope that helps!'
print(find_json_slice(sample))

Alat yang Melakukannya untuk Anda

  • Instructor — membungkus Pydantic + perulangan perbaikan + percobaan ulang
  • Outlines — keluaran terstruktur terjamin melalui dekode terpandu
  • jsonformer — penegakan JSON token demi token (model HF)

Instruksi Perbaikan yang Berhasil

Sertakan pesan kesalahan yang spesifik dan pengingat singkat tentang format:

repair_prompt = f'''
Your previous output had this error: {error}

Fix the output. Requirements:
- Valid JSON only
- Match this schema: {json.dumps(schema)}
- No prose, no markdown fences
'''

Biaya Perulangan Perbaikan

Setiap perbaikan adalah panggilan LLM tambahan. Batasi percobaan ulang (2–3 sudah cukup — setelah itu, kecil kemungkinan model dapat pulih) dan catat tingkat perbaikan sebagai metrik kualitas.

Perbaikan sebagai Sinyal Kualitas

Jika tingkat perbaikan Anda > 5%, berarti ada yang salah: instruksi tidak jelas, skema terlalu rumit, atau model terlalu kecil. Selidiki penyebabnya.

Alternatif: Dekode Terbatas

Model sumber terbuka mendukung dekode yang dibatasi tata bahasa — model sama sekali tidak dapat menghasilkan keluaran yang tidak valid. Outlines, jsonformer, dan tata bahasa llama.cpp melakukan hal ini.

Alternatif: Fungsi daripada Skema

Memaksa panggilan alat dengan mode ketat merupakan alternatif yang lebih bersih daripada mode JSON + perbaikan. Gunakan setiap kali penyedia mendukungnya.

Mencatat Keluaran yang Buruk

Catat setiap keluaran yang diperbaiki agar Anda dapat menganalisis polanya:

log.warning('Repaired output', extra={'raw': raw, 'error': str(e), 'attempt': attempt})

Kapan Harus Menyerah

Jika setelah N percobaan perbaikan keluaran masih tidak valid, kembalikan kesalahan kepada pengguna — jangan mengarang nilai cadangan. Kegagalan yang jujur lebih baik daripada kerusakan yang tidak terlihat.

Pola Perulangan Perbaikan

Apa langkah pertama paling sederhana dalam perulangan perbaikan?

Ringkasan

Deteksi kesalahan penguraian, tambahkan kesalahan tersebut sebagai pesan alat/pengguna, lalu minta model memperbaikinya. Batasi percobaan ulang. Utamakan panggilan alat dengan mode ketat untuk menghilangkan kebutuhan ini sepenuhnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Perulangan Perbaikan untuk Keluaran yang Tidak Sesuai Format” gratis?

Ya — teks lengkap “Perulangan Perbaikan untuk Keluaran yang Tidak Sesuai Format” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Perulangan Perbaikan untuk Keluaran yang Tidak Sesuai Format”?

Jika JSON tidak dapat diuraikan, kirimkan galatnya kembali kepada model dan minta model memperbaiki keluaran. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Agents?

Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Perulangan Perbaikan untuk Keluaran yang Tidak Sesuai Format” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?

Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mode JSON dan Keluaran Panggilan Alat
  2. Validasi Skema Pydantic
  3. Perulangan Perbaikan untuk Keluaran yang Tidak Sesuai Format
  4. Instructor / Outlines untuk Struktur Terjamin
← Kembali ke AI Agents