Omezené dekódování těl chunked
Dekódujte omezené tělo chunked z nejvýše 65536 bajtů do výstupu nejvýše 4096 bajtů.
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- Modely
- Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně.
- Projekt
- Ověřte vnitřní CRLF a nulový blok a odmítněte useknutí, rozšíření, závěrečná pole i další bajty.
- Před použitím zkontrolujte
- Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu.
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 + 2Udržujte přijímaný formát dekodéru výslovně vymezený
Dekodér potřebuje přesnou odpověď na to, kde končí platný vstup a začíná odmítnutí. ChunkRavel je pracovní prostředí pro programování s AI ve Windows pro rozvoj této hranice s ohledem na kód vašeho projektu. Popište podporovaný vstupní formát, limity velikosti a očekávaný výsledek, potom požádejte asistenta o kontrolu průchodu stávající implementace bajty a hlášení selhání.
Jednou z úloh, které můžete zkoumat, je příklad omezeného dekódování těla přenášeného po blocích. Přijímá záměrně úzkou formu, proto vedle useknutého vstupu a nadbytečných bajtů prověřte nepodporovaná rozšíření a koncová pole. Žádejte změny zachovávající stanovené limity, pokud je požadavek výslovně nerozšiřuje. Sledujte dekódovaný výstup i do volajícího, protože komponenta, která jej přijímá, může nesprávně zpracovat i správný bajtový výsledek.
Pro volbu abliterované AI vyberte dostupný model přes podporovaný koncový bod kompatibilní s OpenAI nebo Anthropic a případně zadejte přihlašovací údaje. Model a server určují kontext, nástroje a platná omezení. Před přijetím změny dekodéru prověřte diff a spusťte platná i neplatná testovací data v testech projektu. Samostatný lokální modelový server nečiní každý připojený nástroj či službu lokálními.
Kontrola úzce vymezeného kontraktu dekodéru
- Má dekodér přijímat každou formu vstupu přenášeného po blocích?
Pouze pokud to aplikace požaduje a implementace je pro to navržena a otestována. Příklad podporuje omezenou formu. Rozšíření, koncová pole a další nepodporované případy udržujte výslovně vymezené a nepovažujte úzkou ukázku za úplnou podporu protokolu.
- Jak otestovat useknuté tělo?
Dodejte testovací data useknutá na smysluplných hranicích, včetně vnitřku tokenu velikosti, těla a oddělovače. Určete očekávané odmítací chování. Spusťte je přes skutečný vstupní bod dekodéru, aby prověřovaný výsledek zahrnoval okolní zpracování vstupu.
- Proč kontrolovat bajty zbývající po posledním bloku?
Aplikace potřebuje definovaná pravidla pro nespotřebovaný vstup. Prověřte, zda mají být nadbytečné bajty odmítnuty, nebo zpracovány jinou vrstvou, a tento kontrakt otestujte. Jejich neúmyslné ignorování může skrýt neshodu dekodéru s volajícím.
- Znamená doména související s SQL funkce databázového dekódování?
Žádná taková funkce se netvrdí. Dodaný projektový příklad se týká bajtového dekódování a ChunkRavel je pracovní prostředí pro programování s AI ve Windows. Pro úlohu vyberte skutečné projektové soubory a běhové prostředí místo odvozování schopností produktu z domény.
ChunkRavel · Aktualizováno 2026-10-25