В этом репозитории реализован очень простой ежедневный сканер для Arxiv, который использует GPT4 и совпадения авторов для поиска статей, которые могут вас заинтересовать. Он будет запускаться ежедневно с помощью действий GitHub и может публиковать эту информацию через бота или просто отображать ее на статических страницах GitHub.
Простую демонстрацию ежедневных газет можно увидеть здесь на cs.CL
Приблизительно на 07.02.2024 запуск этого приложения на всей платформе cs.CL
стоил 0,07 доллара США.
Это минимально необходимые шаги для запуска сканера. Настоятельно рекомендуется прочитать всю статью, чтобы решить, что вы хотите запустить.
config/paper_topics.template.txt
в config/paper_topics.txt
и заполните его типами статей, которым вы хотите следовать.config/authors.template.txt
в config/authors.txt
и перечислите авторов, за которыми вы действительно хотите следить. Цифры, стоящие за автором, важны. Это идентификаторы авторов семантического ученого, которые вы можете найти, выполнив поиск авторов в Semantic Scientific и взяв числа в конце URL-адреса.config/config.ini
.OAI_KEY
) как «секрет GitHub».На этом этапе ваш бот должен запускаться ежедневно и публиковать статический веб-сайт. Вы можете проверить это, запустив рабочий процесс действия GitHub вручную.
Необязательно, но настоятельно рекомендуется :
S2_KEY
) в качестве секрета GitHub. В противном случае этап поиска автора будет очень медленным.SLACK_KEY
в качестве секрета GitHub.SLACK_CHANNEL_ID
в секрете github.configs/config.ini
чтобы настроить фильтрацию.Каждый день в 13:00 по всемирному координированному времени бот будет запускаться и публиковать сообщения в Slack, а также публиковать страницы на веб-сайте github (подробности см. в действияхPublish_md и cron_runs).
Шаги в целом такие же, как указано выше, но вам необходимо настроить среду через requirements.txt
Вместо передачи учетных данных через секреты GitHub вам необходимо установить переменные среды OAI_KEY
, SLACK_KEY
, SLACK_CHANNEL_ID
.
Чтобы запустить все, просто вызовите main.py
Другие примечания: вы также можете захотеть не отправлять в Slack, и в этом случае установите желаемую конечную точку вывода (json, markdown, slack) в полях dump_json
, dump_md
и push_to_slack
в config/config.ini
.
Если время ожидания API семантического ученого истекло или он работает медленно, вам следует получить ключ API S2 и установить его как S2_KEY
в переменных среды. (из-за ограничений действий github это поможет только в том случае, если код запускается локально)
Заставить его работать самостоятельно: все это почти не требует вычислительных ресурсов, поэтому вы можете арендовать самую дешевую виртуальную машину у AWS, поместить в нее этот репозиторий, установить файл requirements.txt
, соответствующим образом настроить переменные среды и добавить следующий crontab.
0 13 * * * python ~/arxiv_scanner/main.py
Этот crontab будет запускать скрипт каждый день в 13:00 по всемирному координированному времени и в 18:00 по тихоокеанскому времени.
paper_topics.txt
Файл paper_topics.txt
используется для создания запроса для GPT. Это список тем, за которыми вы хотите следить. Один набор примеров может быть чем-то вроде
1. New methodological improvements to RLHF or instruction-following which are specific fine-tuning steps that are taken to make language models better at following user instructions across a range of tasks.
- Relevant: papers that discuss specific methods like RLHF, or instruction-tuning datasets, improving these methods, or analyzing them.
- Not relevant: papers about adaptation to some task. Simply following instructions or inputs are not sufficient.
2. Shows new powerful test set contamination or membership inference methods for language models. Test set contamination is the phenomenon where a language model observes a benchmark dataset during pretraining.
- Relevant: test statistics that can detect contamination of benchmarks in language models. statistics that can provide guarantees are more interesting. membership inference methods that are general enough to apply to language models are also relevant.
- Not relevant: any papers that do not consider language models, or that do not consider test set contamination.
3. Shows a significant advance in the performance of diffusion language models.
- Relevant: papers that study language models that are also diffusion models. Continuous diffusions are even more relevant, while discrete diffusions are less so.
- Not relevant: papers about image diffusions like DALL-E or Stable Diffusion, or papers that do not explicitly mention language models or applications to text.
Это всего лишь стандартная подсказка, но ее конкретность может помочь, особенно в таких вещах, как «языковые модели распространения» или «следование инструкциям», когда LM может запутаться в том, актуально ли распространение изображений или лучше выполнить какую-то задачу. достаточно, чтобы улучшить выполнение инструкций.
Возможно, вы также захотите проследить за этим, рассмотрев некоторые общие области интересов, такие как
In suggesting papers to your friend, remember that he enjoys papers on statistical machine learning, and generative modeling in natural language processing.
Your friend also likes learning about surprising empirical results in language models, as well as clever statistical tricks.
He does not want to read papers that are about primarily applications of methods to specific domains.
Скрипт получает набор кандидатов на статьи ArXiv за определенный день через RSS-каналы. Чтобы избежать двойного анонсирования статей, он будет получать RSS-каналы только за последний день. Чтобы не пропустить документы, вам следует запускать это каждый день. Он отфильтровывает любые UPDATED
статьи и объявляет только новые.
Логика фильтрации довольно проста. Сначала мы проверяем совпадение авторов.
authors.txt
он попадает в набор кандидатов со оценкой по author_match_score
.Затем мы проверяем релевантность, оцененную GPT. Мы делаем это в два этапа.
hcutoff
в config.ini
. Это для снижения затрат.model
в config.ini
. Для отладки следует использовать только GPT3.5. Для этой цели он не подходит! На этом шаге используется следующая настройка приглашения, определенная в configs/
Вы — полезный помощник по чтению статей, чья работа — читать ежедневные сообщения ArXiv и находить несколько статей, которые могут быть интересны вашему другу. Ниже будет до 5 статей. Ваша задача — найти документы, которые:
- Критерий 1
- Критерий 2
[ДОКУМЕНТЫ]
Напишите ответ в формате JSONL, указав {ARXIVID, КОММЕНТАРИЙ, АКТУАЛЬНОСТЬ, НОВИНКА} в каждой строке, по одному для каждой статьи. ARXIVID должен быть идентификатором ArXiv. КОММЕНТАРИЙ должен указать, существуют ли критерии, которые очень близко соответствуют статье. Если да, то следует указать его номер (нет необходимости упоминать критерии несовпадения). Эти совпадения не должны основываться на общих терминах, таких как «моделирование языка» или «достижения», а должны конкретно относиться к критерию. РЕЛЕВАНТНОСТЬ должна представлять собой оценку релевантности от 1 до 10, где 10 должно быть напрямую связано с точным, конкретным критерием с совпадениями ключевых слов, близкими к синонимам, и с авторами, известными своими работами по теме, 1 не имеет отношения к какому-либо критерию и не имеет отношения к область общих интересов вашего друга, 2–3 — это статьи, которые относятся к общей области интересов, но не к конкретным критериям, а 5 — прямое соответствие конкретному критерию. НОВИНКА должна оцениваться по шкале от 1 до 10, где 10 — это новаторское открытие общего назначения, которое изменит всю область, а 1 — это работа, которая улучшает один аспект проблемы или представляет собой приложение в очень специфической области. Внимательно прочитайте аннотацию, чтобы убедиться в этом, и предположите, что авторам нельзя доверять в их заявлениях о новизне.
config/papers_topics.txt
) и новизне (по шкале от 1 до 10).config.ini
Наконец, все статьи сортируются по максимальному author_match_score
и сумме оценок релевантности и новизны с рейтингом GPT (оценки релевантности и новизны будут отображаться в окончательном выводе только в том случае, если они превышают пороговые значения, установленные вами в конфигурации). файл). Затем документы визуализируются и отправляются в конечные точки (текстовые файлы или Slack).
В этом репозитории используется ruff check .
и ruff format .
Пожалуйста, установите перехватчик предварительной фиксации, запустив pre-commit install
Код filter_papers.py
также можно запустить как отдельный скрипт. Это возьмет пакет документов в in/debug_papers.json
, запустит любую конфигурацию и запросы, которые у вас есть, и вернет выходные данные в out/filter_paper_test.debug.json
. Если вы обнаружите, что бот допускает ошибки, вы можете найти соответствующий пакет в out/gpt_paper_batches.debug.json
и скопировать его в соответствующий файл debug_papers
.
Это позволяет вам построить тест для фильтра и посмотреть, что получится на другой стороне.
Этот репозиторий и код изначально были созданы Тацунори Хашимото и распространяются по лицензии Apache 2.0. Спасибо Chenglei Si за тестирование и тестирование фильтра GPT.