1. Что изменилось 2 ноября
По состоянию на 4 ноября 2026 года актуальное объявление Anthropic от 2 ноября — бета Message Threads. Первый запрос передаёт историю, последующие — новые сообщения и ID предыдущего ответа. Меняется повторная загрузка и обработка, а не размер контекстного окна. Обновление водяных знаков от 3 ноября относится к другой функции.
OpenAI позволяет связывать Responses через previous_response_id либо использовать Conversations. Сравнивать следует владельца истории, наследование инструкций и восстановление. Предложенные ниже решения — инженерный анализ, а не результаты измерений на производственных данных.
Claude Platform release notes · Claude Message threads · OpenAI conversation state
2. Четыре контракта состояния
Разделяйте бизнес-диалог, указатель продолжения провайдера и журнал выполненных действий. Основная история принадлежит приложению, удалённый ID — оптимизация адаптера. Смешение этих сущностей создаёт неоднозначность при перезапуске процесса и смене провайдера.
Таблица описывает контракты состояния, а не рейтинг моделей. Отдельно проверьте доступ проекта, модель и настройки данных. Message thread в Messages API отличается от session thread в Claude Managed Agents.
| Режим | Владелец контекста | Продолжение и восстановление |
|---|---|---|
| История приложения | Полный собственный журнал | Самостоятельное воспроизведение и удаление |
| Claude Message Threads | Краткосрочное состояние и своя копия | Истечение через 5 минут; пересоздание при thread_not_found |
| OpenAI previous_response_id | Цепочка Responses | Повторять instructions; проверять хранение |
| OpenAI Conversations | Постоянный объект диалога | Отдельное управление состоянием и хранением |
3. Минимальный пример двух ходов
Пример работает с синтетическим тикетом. Используйте официальный SDK с документированным helper, закрепите версию и настройте разрешённые модели в своих API-проектах. Код приведён без запуска; реальные запросы оплачиваются.
Helper Claude добавляет beta-заголовок и создаёт поток при первом send. Во втором примере instructions передаются снова: previous_response_id не наследует верхнеуровневые инструкции предыдущего ответа. Это различие должно быть явно отражено в адаптере.
# Documentation example only; not executed for this article.
# Use approved API projects and synthetic input. Requests incur API charges.
import os
import anthropic
from openai import OpenAI
rules = "Use only the synthetic fixture and cite its ticket ID."
a = anthropic.Anthropic()
thread = a.beta.messages.thread(
model=os.environ["CLAUDE_MODEL"], max_tokens=256, system=rules
)
thread.send({"role": "user", "content": "SYN-1: delivery is on Friday."})
reply_a = thread.send({"role": "user", "content": "Which day for SYN-1?"})
# Stored-state example: use only where the project's retention policy permits it.
o = OpenAI()
first = o.responses.create(
model=os.environ["OPENAI_MODEL"], instructions=rules,
input="SYN-1: delivery is on Friday.", store=True
)
reply_o = o.responses.create(
model=os.environ["OPENAI_MODEL"], instructions=rules,
previous_response_id=first.id, input="Which day for SYN-1?", store=True
)
Claude Message threads · Anthropic Python SDK thread helper · OpenAI Responses create: instructions
4. Передача данных и счёт — разные метрики
Поток не включает prompt cache автоматически. Claude требует настройки кэша, а OpenAI продолжает учитывать исторический вход цепочки в оплате. Меньший HTTP-запрос не доказывает бесплатную историю или фиксированное ускорение.
Наш расчёт: начальные 8000 текстовых единиц, ещё 700 на каждом следующем ходе, всего 20 ходов. Полная пересылка даёт 293000 единиц, инкрементальная — 21300. Это не оплаченные токены и не тест задержки; ответы и служебные данные исключены. Измеряйте байты UTF-8, кэш, повторы и стоимость принятой задачи отдельно.
Claude Message threads · OpenAI conversation state · Claude prompt caching · OpenAI prompt caching
5. Истечение состояния — штатный сценарий
Поток Claude истекает через пять минут после последнего запроса; удаление выполняется не позже часа после последнего использования. Это разные сроки. Храните полную историю в приложении: память helper не заменяет сохранение между процессами.
Успешный ответ не подтверждает сохранение этого хода сервером. Если следующий запрос вернул thread_not_found, создайте новый поток из полной истории. До воспроизведения контекста сверяйте уже выполненные бизнес-действия. Диаграмма показывает предлагаемый порядок.
- Сохранить вход и версию настроек
- Получить право одного писателя и текущий ID
- Передать новые сообщения с корреляцией
- Успех: сохранить ID и подтверждения
- Истечение: восстановить из журнала
- Неопределённость: сначала сверить действия
6. Конкуренция, тайм-ауты и действия инструментов
Каждый ID ответа Claude допускает одно продолжение. Конкурирующие работники могут получить thread_already_continued или thread_continue_in_flight; смена фиксированных полей вызывает thread_fingerprint_mismatch. Документированные проверки выполняются до модели, но это не означает, что любой тайм-аут безопасно повторять.
Используйте одного писателя на диалог и атомарное сравнение версии записи перед обновлением ID. Внешним действиям нужны отдельные ключи идемпотентности и сохранённые подтверждения. Восстановление модели не гарантирует однократную отправку письма, списание денег или создание тикета.
7. Политика хранения определяет архитектуру
Message Threads сейчас не поддерживает ZDR. История зашифрована в памяти сервера, не записывается в долговременное хранилище, но временно сохраняется. Нельзя называть это нулевым хранением. Для Responses и Conversations проверяйте собственные правила каждого объекта.
Сначала выберите допустимую политику хранения. При управлении историей приложением сохраняйте необходимые элементы ответа и связи вызовов инструментов, а не только финальный текст. Авторизация по пользователю и арендатору и удаление должны распространяться на вашу копию.
Claude Message threads · OpenAI API data controls · Claude API data retention
8. Проверка, способная выявить ошибку
Подготовьте синтетические задачи с известными ответами: короткий и длинный диалог, вызов инструмента, истечение состояния, перезапуск и конкурентные отправки. Сначала сравните два режима на одной модели; только затем меняйте поставщика или модель.
Записывайте приёмку, число запросов, байты, задержку первого токена и всей задачи, токены и кэш, восстановления, дубли действий и полную стоимость. Учитывайте неуспешные задачи. Более низкая средняя задержка не оправдывает потерянные ссылки, контекст или повторные внешние действия.
9. Внедрение и сопровождение
Начните с длинного сценария только на чтение и сохраните адаптер полной пересылки как запасной путь. Закрепите модель и версию настроек за диалогом. Для новых system или tools создавайте новое состояние.
Совместно анализируйте истечения, восстановления, корректность и стоимость принятой задачи. Если выгода мала или политика хранения не подходит, локальная история остаётся разумным вариантом. Подписка чата не заменяет права API-проекта.