فك جسم chunked ضمن حدود
فك جسم chunked مقيدًا من 65536 بايت كحد أقصى بحد خرج قدره 4096 بايت.
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- النماذج
- اضبط نقطة اتصال متوافقة مع OpenAI أو Anthropic باستخدام العنوان الأساسي ومفتاح API عند الحاجة. اختبر الاتصال. يجب أن يعمل خادم النموذج المحلي؛ وقد ترسل الأدوات البعيدة البيانات بشكل منفصل.
- المشروع
- اختبر CRLF الداخلية والقطعة الصفرية وارفض البتر والامتدادات والحقول الختامية والبايتات الزائدة.
- راجع قبل التطبيق
- قارن السلوك الفعلي بالنتيجة المتوقعة. إذا فشل فحص، تحقّق من السبب قبل إجراء تغييرات إضافية.
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أبقِ التنسيق المقبول لفاك الترميز صريحاً
يحتاج فاك الترميز جواباً دقيقاً عن موضع انتهاء المدخل الصالح وبدء الرفض. ChunkRavel مساحة عمل للبرمجة بالذكاء الاصطناعي على Windows لتطوير هذا الحد مع شيفرة مشروعك أمامك. صف تنسيق المدخل المدعوم وحدود الحجم والنتيجة المتوقعة، ثم اطلب من المساعد فحص تقدم التنفيذ الحالي عبر البايتات وإبلاغه عن الإخفاق.
مثال الجسم المجزأ المقيد مهمة يمكنك فحصها. يقبل صيغة ضيقة عمداً، لذا راجع الامتدادات والحقول الختامية غير المدعومة مع المدخل المبتور والبايتات الزائدة. اطلب تغييرات مقترحة تحافظ على الحدود المعلنة ما لم توسعها المتطلبات صراحة. تتبع المخرجات المفكوكة إلى المستدعي أيضاً، لأن نتيجة بايتات صحيحة قد تسيء معالجتها الجهة التي تتلقاها.
لخيارات الذكاء الاصطناعي منزوع آليات الرفض، اختر نموذجاً متاحاً عبر نقطة نهاية مدعومة متوافقة مع OpenAI أو خاصة بـ Anthropic وقدم بيانات اعتماد عند الحاجة. يحدد النموذج والخادم السياق والأدوات والقيود السارية. افحص الفروق وشغّل حالات صالحة وغير صالحة في اختبارات مشروعك قبل قبول تغيير فاك الترميز. خادم نموذج محلي يعمل منفصلاً لا يجعل كل أداة أو خدمة متصلة محلية.
مراجعة عقد ضيق لفاك الترميز
- هل يقبل فاك الترميز كل أشكال المدخل المجزأ؟
فقط إذا تطلب التطبيق ذلك وكان التنفيذ مصمماً ومختبراً له. يدعم المثال صيغة مقيدة. أبقِ الامتدادات والحقول الختامية وغيرها من الحالات غير المدعومة صريحة بدلاً من اعتبار عرض ضيق دعماً كاملاً للبروتوكول.
- كيف أختبر جسماً مبتوراً؟
قدم حالات مقطوعة عند حدود ذات معنى، بما فيها داخل رمز الحجم والمتن والفاصل. حدد سلوك الرفض المتوقع. شغّلها عبر نقطة الدخول الفعلية لفاك الترميز كي تشمل النتيجة المفحوصة معالجة المدخل المحيطة.
- لماذا نفحص البايتات الباقية بعد الجزء الأخير؟
يحتاج التطبيق سياسة محددة للمدخل غير المستهلك. افحص ما إذا كانت البايتات الزائدة ترفض أو تعالجها طبقة أخرى ثم اختبر العقد. قد يخفي تجاهلها بالخطأ خلافاً بين فاك الترميز ومستدعيه.
- هل يوحي النطاق المتعلق بـ SQL بميزات فك قواعد بيانات؟
لا ندعي هذه الميزة. يتعلق مثال المشروع المقدم بفك البايتات، وChunkRavel مساحة عمل للبرمجة بالذكاء الاصطناعي على Windows. اختر ملفات المشروع وبيئة التشغيل الفعلية للمهمة بدلاً من استنتاج قدرات المنتج من النطاق.
ChunkRavel · آخر تحديث 2026-10-25