Обновить

Неофициальный Python-клиент для alphaxiv: как мы нашли скрытый API и упаковали его в пакет

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели9K
Всего голосов 6: ↑6 и ↓0+6
Комментарии6

Комментарии 6

Классная работа, очень аккуратно разведён 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.

Добрый день!
Спасибо за хорошую работу!
Но возник вопрос: возможно ли ещё получить постоянный Bearer Token? Не нашел про него информации на сайте

Добрый день!
Вы абсолютно правы: как заметили в Issue на GitHub, AlphaXiv через несколько дней после данного обзора закрыл возможность получения токенов (хотя он им больше года до этого и не мешал).

Тем не менее, некоторые возможности API доступны сейчас без токена.

Грустно( Подскажите, пожалуйста: какие возможности остались доступны без токена?

aurelle-py без токена не работает совсем — библиотека решает ровно одну задачу (интерактивный чат-ассистент), а этот эндпоинт требует аутентификации.

Если вы столкнулись с тем, что токен больше нельзя создать самостоятельно: по имеющимся данным, alphaxiv перешёл на ручную выдачу ключей. Попробуйте написать на contact@alphaxiv.org — это официальный адрес команды. Вероятно, доступ можно получить по запросу, хотя процедура нигде формально не описана. Мы рассчитываем, что самостоятельная выдача ключей вернётся — такая функция в личном кабинете явно существовала и, скорее всего, это временная мера.

Тем временем мы работаем над следующей версией пакета. Изучив полную OpenAPI-спецификацию alphaxiv, мы обнаружили, что значительная часть API доступна без токена вообще: метаданные статей, готовые AI-обзоры, полный текст, поиск по индексу, похожие статьи, профили пользователей. Планируем добавить в aurelle-py методы для этих эндпоинтов — так пакет станет полезен и тем, у кого токена пока нет.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации