Comments 2
Классная работа, очень аккуратно разведён reverse-engineering и уважение к сервису — особенно понравилось, как вы упёрлись в SSE и отдельный модуль парсера, чтобы сохранить тестируемость без сети.Интересно, не думали ли вы поверх aurelle-py сделать маленький «meta-слой» для устойчивого multi-turn-режима — например, хранить и реконструировать контекст на стороне клиента, чтобы компенсировать отсутствие истории и странности с llmChatId/parentMessageId?
Спасибо! Идея рабочая, но, как выяснилось, в этом направлении уже есть официальное решение.
Уже после публикации мы обнаружили полную OpenAPI-спецификацию alphaxiv, которая до сих пор не гуглится надо сказать. Там задокументирован эндпоинт GET /assistant/v2/{llmChatId}/messages, который возвращает историю сообщений с parentMessageId для каждого. То есть нормальный tree-style threading в API есть — мы просто наткнулись на 404 во время исследования (скорее всего, race condition: пробовали читать историю раньше, чем сообщение успевало сохраниться) и ошибочно списали это на архитектурное ограничение.
Реальный multi-turn, судя по всему, выглядит так: после каждого ответа делаем GET /messages, берём id последнего сообщения и передаём его как parentMessageId в следующий POST /chat. Никакой реконструкции контекста на стороне клиента не нужно. Планируем реализовать это в следующей версии aurelle-py.
Неофициальный Python-клиент для alphaxiv: как мы нашли скрытый API и упаковали его в пакет