Я посвящаю себя отслеживанию каждого исследовательского проекта, каждого списка чтения, повестки дня и каждого набора задач и жизненных целей в виде простого текста, который можно гибко искать, индексировать и архивировать. Для меня способ сделать это — использовать Режим организации.
До сих пор в этом рабочем процессе отсутствовала интеграция с генеративным ИИ, таким как ChatGPT.
gptel для Emacs: канонический пакет?
Я начал время от времени взламывать свой собственный пакет с идеей записи совместных разговоров с LLM и превращения их в статьи базы знаний, проекты и грамотное программирование.
К счастью, я обнаружил пакет gptel @karthink и быстро понял, что он намного превзошел то, что я начал.
Этот пост посвящен интересным функциям и деталям. Я буду следить за этим в другом посте с «почему» и «как»!
Позвольте мне начать с моих самых ценных функций в этом пакете, а затем дать некоторые идеи об использовании gptel для различных рабочих процессов.
Функции
Радикальная приверженность простому тексту
Это означает настоящий обычный текст без специальных внеполосных метаданных.
Идея заключается в том, что вы можете открывать и редактировать любой текст в Emacs и просто отправлять регион в модель ИИ из любого буфера.
Вы можете использовать ответ, чтобы начать чат, или просто добавить или изменить текст в документе. Вы можете открыть сохраненный файл из предыдущего сеанса чата, а затем вызвать gptel-режим, который определит контекст и позволит вам продолжить разговор с того места, где вы остановились.
Сообщество
Очень активный GitHub и вдумчивый и отзывчивый разработчик
Структурированный? Как-то структурировано? Все хорошо!
Используйте буферы организационного режима, режима уценки или буферы другого режима, если хотите.
Крючки и фильтры
Массируйте ответы от ИИ, чтобы придать любую структуру, которую вы предпочитаете
Несмотря на то, что вы можете сохранить все в текстовом режиме, у вас есть возможность использовать организационный режим, который дает преимущества исполняемого исходного кода, экспорта во многие форматы, назначения задач и многого другого. Markdown — это еще один вариант, любой режим кодирования, основанный на prog-mode, — это другой!
LLM очень искусны в создании кода Markdown, несколько менее совершенны в организационном режиме. Поэтому я запрашиваю модель для вывода в Markdown, а затем позволяю gptel преобразовать ее в режим организации. Включенная свободная от зависимостей функция Emacs Lisp для этого очень проста, поэтому я написал свою собственную функцию, которая вызывает Pandoc в ответе.
Безопасная и простая обработка ключей API
Меня сводит с ума, когда я вижу весь код в учебниках по кодированию, которые ожидают, что люди будут размещать токены API и другие учетные данные в тексте в коде. Менее опытные разработчики и даже опытные разработчики могут случайно отправить эти учетные данные в общедоступные репозитории.
Пакет Emacs auth-source — встроенная функция для безопасного управления учетными данными — является опцией gptel, которая делает хранилище ключей безопасным (оно может быть зашифровано) и помещает его за пределы любого каталога, который может быть проверен на GitHub!
Легкий доступ к вашим любимым подсказкам в виде «директив»
Используя настройку, вы можете поддерживать группу системных подсказок с клавишами и изменять их на лету в сеансе чата, используя интерфейс переходного режима.
Интерфейс переходного режима
Это пользовательский интерфейс выбора параметров, который использует Magit — приятно иметь его, поскольку, когда вы хотите настроить один параметр, такой как лимит токенов, вы также можете изменить температуру, модель и другие вещи.
Тем не менее, я не самый большой поклонник Transient как универсального UX. Например, для переключения системных подсказок (директив) я предпочитаю использовать встроенную функцию завершения-чтения, поэтому я просто добавил функцию, которая делает именно это.
Потоковая поддержка
Хотя может быть приятно видеть потоковую передачу текста, как вы это делаете в веб-интерфейсе ChatGPT, я не очень часто использую это в данный момент из-за моей потребности массировать ответ: перевод в режим организации, добавление заголовков и отступы структуры структура в хуке пост-ответа.
Выбор API и параметров API
(Желательная) цель на будущее — поддерживать гораздо больше, чем модели OpenAI.
Резюме
Короче говоря, для меня этот пакет — святой Грааль (я отказываюсь это использовать). Это только для текстового генеративного ИИ, пока только для API OpenAI, но он использует правильный подход для обеспечения гибкости и чистого подхода, свободного от зависимостей.
Моя следующая статья будет посвящена использованию организационного режима и пакета Denote для управления сбором знаний, исследовательскими проектами, статьями базы знаний, списками чтения, задачами и планированием. Я поделюсь кодом, чтобы он соответствовал моему рабочему процессу, в надежде вдохновить вас.
Если вам понравилась эта статья, пожалуйста, подпишитесь на меня здесь, на Medium. Я планирую написать гораздо больше, и это должно стать гиковским!