Decodarea restrânsă a corpurilor chunked
Decodează un corp chunked restrâns de cel mult 65536 octeți cu ieșire limitată la 4096 octeți.
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- Modele
- Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat.
- Proiect
- Testează CRLF interne și blocul zero, respingând trunchieri, extensii, câmpuri finale și octeți suplimentari.
- Verifică înainte de aplicare
- Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
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 + 2Păstrează explicit formatul acceptat de decodor
Un decodor are nevoie de un răspuns precis privind locul unde se termină intrarea validă și începe respingerea. ChunkRavel este un spațiu de lucru Windows pentru programare cu IA, destinat dezvoltării acestei limite având în vedere codul proiectului. Descrie formatul de intrare acceptat, limitele de dimensiune și rezultatul așteptat, apoi cere asistentului să examineze cum avansează implementarea existentă prin octeți și raportează erorile.
Exemplul restrâns de corp chunked este o sarcină pe care o poți examina. Acceptă o formă deliberat îngustă, așa că examinează extensiile și câmpurile finale neacceptate împreună cu intrarea trunchiată și octeții suplimentari. Cere modificări care păstrează limitele declarate, cu excepția cazului în care cerința le extinde explicit. Urmărește și ieșirea decodată în apelant, deoarece un rezultat corect în octeți poate fi totuși tratat greșit de componenta care îl primește.
Pentru opțiuni de IA abliterată, selectează un model disponibil printr-un endpoint acceptat compatibil cu OpenAI sau Anthropic și furnizează credențiale când sunt necesare. Modelul și serverul determină contextul, instrumentele și restricțiile aplicabile. Examinează diferențele și rulează cazuri valide și nevalide prin testele proiectului înainte să accepți modificarea decodorului. Un server local de modele care rulează separat nu face local fiecare instrument sau serviciu conectat.
Examinarea unui contract restrâns de decodare
- Trebuie decodorul să accepte orice formă de intrare chunked?
Doar dacă aceasta este cerința aplicației și implementarea este proiectată și testată pentru ea. Exemplul acceptă o formă restrânsă. Păstrează explicite extensiile, câmpurile finale și alte cazuri neacceptate, fără să tratezi o demonstrație limitată drept suport complet pentru protocol.
- Cum testez un corp trunchiat?
Oferă cazuri de test tăiate la limite relevante, inclusiv în interiorul unui token de dimensiune, al corpului și al delimitatorului. Precizează comportamentul de respingere așteptat. Rulează-le prin punctul real de intrare al decodorului, astfel încât tratarea înconjurătoare a intrării să fie inclusă în rezultatul examinat.
- De ce să verific octeții rămași după ultimul segment?
Aplicația are nevoie de o politică definită pentru intrarea neconsumată. Examinează dacă octeții suplimentari trebuie respinși sau tratați de alt strat, apoi testează contractul respectiv. Ignorarea accidentală poate ascunde o neconcordanță între decodor și apelantul său.
- Implică domeniul legat de SQL funcții de decodare a bazelor de date?
Nu este afirmată o astfel de funcție. Exemplul de proiect furnizat privește decodarea octeților, iar ChunkRavel este un spațiu de lucru Windows pentru programare cu IA. Alege fișierele reale ale proiectului și mediul de execuție pentru sarcină, în loc să deduci capacitățile produsului din domeniu.
ChunkRavel · Actualizat 2026-10-25