Dekode badan chunked terbatas
Dekode badan chunked terbatas dari paling banyak 65536 byte dengan keluaran maksimal 4096 byte.
def chunk_body(wire):
if type(wire) is not bytes or len(wire) > 65536:
raise ValueError("bounded bytes")
pos, body = 0, bytearray()
while True:
end = wire.find(b"\r\n", pos)
token = wire[pos:end] if end >= 0 else b""
if not 1 <= len(token) <= 8 or any(
c not in b"0123456789abcdefABCDEF" for c in token):
raise ValueError("plain hexadecimal size")
size, pos = int(token, 16), end + 2
if size == 0:
if wire[pos:] != b"\r\n":
raise ValueError("no trailers or extra bytes")
return bytes(body)
if len(body) + size > 4096:
raise ValueError("body limit")
if pos + size + 2 > len(wire):
raise ValueError("truncated chunk")
if wire[pos + size:pos + size + 2] != b"\r\n":
raise ValueError("chunk delimiter")
body.extend(wire[pos:pos + size])
pos += size + 2- 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 CRLF internal dan potongan nol, tolak pemotongan, ekstensi, trailer, serta byte tambahan.
- Tinjau sebelum menerapkan
- Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
def chunk_body(wire):
if type(wire) is not bytes or len(wire) > 65536:
raise ValueError("bounded bytes")
pos, body = 0, bytearray()
while True:
end = wire.find(b"\r\n", pos)
token = wire[pos:end] if end >= 0 else b""
if not 1 <= len(token) <= 8 or any(
c not in b"0123456789abcdefABCDEF" for c in token):
raise ValueError("plain hexadecimal size")
size, pos = int(token, 16), end + 2
if size == 0:
if wire[pos:] != b"\r\n":
raise ValueError("no trailers or extra bytes")
return bytes(body)
if len(body) + size > 4096:
raise ValueError("body limit")
if pos + size + 2 > len(wire):
raise ValueError("truncated chunk")
if wire[pos + size:pos + size + 2] != b"\r\n":
raise ValueError("chunk delimiter")
body.extend(wire[pos:pos + size])
pos += size + 2Nyatakan format yang diterima dekoder secara eksplisit
Dekoder memerlukan jawaban tepat mengenai batas akhir masukan valid dan awal penolakan. ChunkRavel adalah ruang kerja pemrograman AI untuk Windows guna mengembangkan batas itu dengan memperhatikan kode proyek Anda. Jelaskan format masukan yang didukung, batas ukuran, dan hasil harapan, lalu minta asisten memeriksa cara implementasi yang ada bergerak melalui byte dan melaporkan kegagalan.
Contoh badan pesan berpotongan yang dibatasi merupakan satu tugas yang dapat Anda periksa. Contoh menerima bentuk yang sengaja sempit, jadi tinjau ekstensi dan trailer tak didukung bersama masukan terpotong dan byte tambahan. Minta perubahan yang mempertahankan batas yang dinyatakan kecuali persyaratan secara eksplisit memperluasnya. Telusuri pula keluaran terdekode ke pemanggil, karena hasil byte yang benar masih dapat ditangani keliru oleh komponen penerimanya.
Untuk opsi AI abliterated, pilih model yang tersedia melalui endpoint kompatibel OpenAI atau endpoint Anthropic yang didukung dan berikan kredensial jika diperlukan. Model dan server menentukan konteks, alat, serta batasan yang berlaku. Periksa diff dan jalankan data uji valid maupun tidak valid melalui pengujian proyek sebelum menerima perubahan dekoder. Server model lokal yang berjalan terpisah tidak membuat semua alat atau layanan terhubung menjadi lokal.
Meninjau kontrak dekoder yang terbatas
- Haruskah dekoder menerima setiap bentuk masukan berpotongan?
Hanya jika itu persyaratan aplikasi dan implementasi dirancang serta diuji untuknya. Contoh mendukung bentuk terbatas. Nyatakan ekstensi, trailer, dan kasus tak didukung lainnya secara eksplisit alih-alih memperlakukan demonstrasi sempit sebagai dukungan protokol lengkap.
- Bagaimana menguji badan pesan terpotong?
Berikan data uji yang dipotong pada batas bermakna, termasuk di dalam token ukuran, badan, dan pemisah. Nyatakan perilaku penolakan yang diharapkan. Jalankan melalui titik masuk dekoder sebenarnya agar penanganan masukan di sekitarnya termasuk dalam hasil yang diperiksa.
- Mengapa memeriksa byte tersisa setelah potongan terakhir?
Aplikasi memerlukan kebijakan jelas bagi masukan yang belum dikonsumsi. Periksa apakah byte tambahan harus ditolak atau ditangani lapisan lain, lalu uji kontrak itu. Mengabaikannya tanpa sengaja dapat menyembunyikan ketidaksepakatan dekoder dan pemanggil.
- Apakah domain terkait SQL menyiratkan fitur dekode basis data?
Tidak ada klaim fitur tersebut. Contoh proyek yang diberikan menyangkut dekode byte, dan ChunkRavel adalah ruang kerja pemrograman AI untuk Windows. Pilih berkas proyek dan runtime sebenarnya untuk tugas, bukan menyimpulkan kemampuan produk dari domain.
ChunkRavel · Diperbarui 2026-10-25