Pull to refresh

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.

Sign up to leave a comment.

Articles