Одиночні діапазони байтів HTTP
Визначте один ASCII-діапазон байтів HTTP для ресурсу від нуля до 10^12 байтів із заголовком до 80 символів.
import re
def byte_range(header, size):
if type(header) is not str or len(header) > 80 or type(size) is not int or not 0 <= size <= 10**12:
raise ValueError("range.input")
match = re.fullmatch(r"bytes=([0-9]*)-([0-9]*)", header)
if match is None or not any(match.groups()):
raise ValueError("range.syntax")
left, right = match.groups()
if not left:
suffix = int(right)
if suffix == 0 or size == 0:
return None
return max(0, size-suffix), size-1
start = int(left)
end = int(right) if right else size-1
if start >= size or end < start:
return None
return start, min(end, size-1)
Перевірте перед застосуванням
Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
Моделі
Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
Проєкт
Перевірте відкриті кінці й суфікси, обмежте кінець та поверніть відсутність інтервалу для нездійсненних запитів, відхиляючи хибний синтаксис і кілька діапазонів.
import re
def byte_range(header, size):
if type(header) is not str or len(header) > 80 or type(size) is not int or not 0 <= size <= 10**12:
raise ValueError("range.input")
match = re.fullmatch(r"bytes=([0-9]*)-([0-9]*)", header)
if match is None or not any(match.groups()):
raise ValueError("range.syntax")
left, right = match.groups()
if not left:
suffix = int(right)
if suffix == 0 or size == 0:
return None
return max(0, size-suffix), size-1
start = int(left)
end = int(right) if right else size-1
if start >= size or end < start:
return None
return start, min(end, size-1)
Зберігайте зміст запиту під час рефакторингу утиліти
RangeTallow — програмне забезпечення з ШІ для перевірки змін утиліт у контексті програми, яка від них залежить. Відкрийте проєкт у Windows і опишіть, яка поведінка має зберегтися під час рефакторингу. Попросіть модель разом перевірити розбір входу, повернені значення та відповідний код виклику. Це не дає коротшій реалізації непомітно змінити зміст запиту.
Можна використати byte_range.py для обговорення визначення суфіксного діапазону за відомим розміром файла. Надайте явні приклади звичайного діапазону, порожнього ресурсу й запиту поза доступним вмістом. Перевірте, що повертає допоміжна функція, перш ніж вирішувати, як обробник відповіді має це використовувати. Розглядайте тлумачення діапазону й побудову відповіді як пов’язані обов’язки з межею, яку можна пояснити.
Протестуйте запропоновану зміну в середовищі проєкту, включно з випадками, що розрізняють некоректний вхід і незадовільний діапазон. Перевірте код відповіді, який використовує результат, щоб нова домовленість про повернення не спричинила оманливого виходу. RangeTallow підтримує підключення, сумісні з OpenAI, або Anthropic, з обліковими даними за потреби. Моделі без обмежень можна вибрати, коли їх пропонує ваша кінцева точка; межі контексту, інструменти й обмеження залежать від моделі та сервера. Приклади допустимих запитів дають обговоренню рефакторингу конкретний критерій успіху.
Перевірка змін обробки діапазонів
Навіщо розрізняти некоректний і незадовільний вхід?
Вони описують різні умови: запит може не відповідати допустимому синтаксису або вимагати вміст, недоступний за відомого розміру. Визначте, як допоміжна функція подає кожну умову, і перевірте, як обробник відповіді використовує цю різницю.
Чи достатньо розібраного діапазону для правильної відповіді?
Ні. Код виклику ще має побудувати відповідь відповідно до власного контракту й фактичного ресурсу. Перевірте, як він використовує повернені межі, включно з вибором тіла та статусом, а не вважайте успішний розбір завершеною інтеграцією.
Що має визначати приклад суфікса?
Надайте запитану довжину суфікса, відомий розмір ресурсу та очікувані включні межі або результат відхилення. Додайте порожній ресурс, щоб реалізація не покладалася на постійну наявність останнього байта для вибору.
Як зберегти чіткі межі рефакторингу?
Запишіть поточні допустимі випадки й задуману зміну, якщо вона є. Попросіть пропозицію зі збереженням решти поведінки, потім перегляньте різницю й запустіть ці випадки через допоміжну функцію та код виклику.
RangeTallow · Оновлено 2026-10-25