Ekstraksi terbatas blok backtick
Ekstrak blok tiga backtick pada kolom nol dari teks paling panjang 4096 karakter dengan label bahasa ASCII opsional.
import re
def fenced_blocks(text):
if type(text) is not str or len(text) > 4096:
raise ValueError("fence.input")
blocks, body, language = [], None, None
for line in text.splitlines():
if body is None:
opening = re.fullmatch(r"```([A-Za-z0-9_-]*)", line)
if opening:
body, language = [], opening[1]
elif line == "```":
blocks.append((language, "\n".join(body)))
body = None
else:
body.append(line)
if body is not None:
raise ValueError("fence.unclosed")
return blocks
Model
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
Proyek
Uji blok kosong dan baris baru yang dinormalisasi, tolak blok terbuka dan biarkan bentuk Markdown lain tanpa interpretasi maupun eksekusi.
Tinjau sebelum menerapkan
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
import re
def fenced_blocks(text):
if type(text) is not str or len(text) > 4096:
raise ValueError("fence.input")
blocks, body, language = [], None, None
for line in text.splitlines():
if body is None:
opening = re.fullmatch(r"```([A-Za-z0-9_-]*)", line)
if opening:
body, language = [], opening[1]
elif line == "```":
blocks.append((language, "\n".join(body)))
body = None
else:
body.append(line)
if body is not None:
raise ValueError("fence.unclosed")
return blocks
Pisahkan kontrak ekstraksi dari eksekusi
FenceLilt menyediakan ruang kerja pemrograman AI untuk Windows bagi pengembang yang membangun fitur pemrosesan teks kecil dengan aturan masukan yang sengaja dibatasi. Buka proyek dan jelaskan apa yang harus dikenali, apa yang harus dibiarkan, dan cara melaporkan masukan tidak lengkap. Model terhubung kemudian dapat memeriksa sumber dan mengusulkan perubahan berdasarkan batas tersebut.
Mengekstrak blok kode berpagar menawarkan tugas konkret. Gunakan aturan penanda dan label bahasa dari contoh yang ada untuk membahas bentuk yang diterima, termasuk blok kosong dan pergantian baris. Minta asisten menjelaskan cara parser yang diusulkan menangani blok tidak tertutup sebelum meninjau implementasinya. Isi yang diekstrak berupa teks; memilih menjalankan sesuatu darinya merupakan fitur berbeda dengan persyaratan berbeda.
Jalankan data uji keluaran eksak dalam proyek setelah memeriksa tambalan, dan sertakan bentuk tak didukung yang tidak boleh tanpa sengaja ditafsirkan ulang. Tinjau batas ukuran dan penanganan kesalahan bersama ekstraksi yang berhasil. Untuk bantuan AI, konfigurasikan endpoint kompatibel OpenAI atau endpoint Anthropic yang didukung dengan kredensial jika diperlukan. Model tanpa batasan dapat dipilih jika layanan menyediakannya, sementara kapasitas konteks dan ketersediaan alat bergantung pada server. Sesi yang berguna berakhir dengan perubahan yang bahasa masukan diterima dan perilaku kegagalannya dapat Anda jelaskan dengan jelas.
Memeriksa fitur ekstraksi terbatas
Apakah mengekstrak blok kode berarti menjalankan isinya?
Tidak. Tugas ini mengembalikan teks menurut kontrak penanda yang ditentukan. Pisahkan keputusan eksekusi berikutnya dari ekstraksi, dan tinjau kode lanjutan agar penanganan isi keluaran tidak secara tak terduga memanggil perintah atau mengevaluasi kode sumber.
Haruskah rutin ini menerima setiap gaya pagar Markdown?
Contoh yang ada sengaja mendukung bentuk terbatas. Daftarkan penanda dan label yang dibutuhkan aplikasi, lalu periksa secara eksplisit. Perluasan ke bentuk Markdown lain merupakan perubahan persyaratan, bukan konsekuensi otomatis dari perapian parser.
Bagaimana blok tidak tertutup harus ditangani?
Nyatakan apakah masukan tidak lengkap ditolak sebelum menerapkan perubahan. Tugas yang dicontohkan menolaknya. Sertakan data uji yang mencapai akhir saat blok masih terbuka, dan verifikasi bahwa pemanggil menyajikan hasil itu dengan tepat.
Mengapa mempertahankan contoh tak didukung dalam pengujian?
Contoh itu menunjukkan batas fitur. Ekspresi yang disarankan model mungkin tanpa sengaja mengenali bentuk tambahan, sehingga mengubah perilaku tanpa kegagalan yang jelas. Periksa teks yang diterima dan yang dibiarkan bersama-sama agar implementasi mempertahankan batas yang dimaksud.
FenceLilt · Diperbarui 2026-10-25