Оптимізація контекстного вікна за допомогою серверної компактизації OpenAI
OpenAI представила серверну компактизацію для зменшення розміру контексту в тривалих сесіях зі збереженням критичного стану розмови. Ця безстанова функція дозволяє розробникам зберігати якість міркувань, знижуючи затримку та витрати на токени.
Вплив: Високий
Чому це важливо
Ви можете суттєво знизити витрати на API та тривалу затримку в довгих діалогах з агентами, дозволивши серверу автоматично обрізати контекст.
TL;DR
- 01Компактизація зменшує розмір активного контексту в довгих діалогах, зберігаючи ключовий стан міркувань.
- 02Вмикається шляхом передачі context_management з compact_threshold у запитах на створення відповіді.
- 03У безстанових ланцюжках видалення елементів перед останнім елементом компактизації зменшує розмір запиту та затримку.
- 04Функція повністю сумісна з ZDR при поєднанні з конфігурацією store=false.
Ключові факти
- Поріг запуску компактизації
- compact_threshold
- Кінцева точка API
- POST /responses або responses.create
- Безстанова кінцева точка
- /responses/compact
Налаштування серверної компактизації
Щоб увімкнути серверну компактизацію, додайте параметр context_management у ваш запит на створення відповіді. Ви вказуєте поріг compact_threshold, який визначає ліміт токенів для запуску процесу компактизації.
Патерни інтеграції
Ви можете керувати циклами розмови за допомогою одного з двох патернів: 1. Безстановий ланцюжок вхідного масиву (Stateless Input-Array Chaining): Додавайте вихідні дані асистента, включаючи зашифровані елементи компактизації, до вхідного масиву наступного запиту. Для мінімізації розміру запиту та затримки можна безпечно видалити всі елементи, що передували останньому елементу компактизації. 2. Ланцюжок через ID попередньої відповіді (Previous Response ID Chaining): Передавайте лише нове повідомлення користувача на кожному кроці разом із previous_response_id. У цьому режимі не потрібно вручну видаляти елементи, оскільки сервер обробляє ланцюжок автоматично.
Обидва патерни підтримують політику нульового збереження даних (ZDR), якщо вказати параметр store: false у вашому запиті.
Спробуй за 2 хвилини
next_response = client.responses.create(
store=False,
model="gpt-4o",
context_management=[{
"type": "compaction",
"compact_threshold": 200000
}],
input=[*compacted_output, {"role": "user", "content": "Continue coding tasks..."}]
)python
✓ Коли використовувати
- При побудові тривалих чат-додатків або кодуючих асистентів, які накопичують велику історію.
- Для балансування витрат на токени та затримок у багатокрокових сесіях.
- Коли необхідно зберегти контекст міркувань без передачі повної історії транскрипту на клієнт.
✕ Коли НЕ варто
- Для коротких одноразових запитів або простих сесій питань-відповідей, де немає ризику досягти лімітів контексту.
- Якщо вам потрібне точне, дослівне відтворення попередніх повідомлень, а не ущільнений стан міркувань.
Що зробити сьогодні
- Оновіть конфігурації клієнта OpenAI API, додавши властивість context_management у тривалих процесах агентів.
- Встановіть відповідне значення compact_threshold відповідно до вашого бюджету та очікуваного максимального розміру контексту.
- Реалізуйте безстановий механізм очищення контексту, видаляючи елементи, старіші за отриманий зашифрований елемент компактизації, для оптимізації затримки.
Джерела