Этот макрос – дальнейшее развитие bito.ai code assistant (см.), с поддержкой множества LLM-сервисов.
Доступ к сервисам реализуется как посредством (произвольных) консольных утилит, так напрямую через REST API.
Каждый из LLM-сервисов имеет свои достоинства и недостатки, выбор остаётся за пользователем.
Макрос назначен на Ctrl+B
. Также может быть запущен в качестве скрипта LuaShell.
Ctrl+B:Double
позволяет в любой момент открыть окно с выводом повторно.
Функции:
- Ввод запроса в диалоге, ранее набранные приглашения доступны в истории поля ввода.
- Вместе с запросом передаётся выделенный в редакторе текст.
Если в запросе присутствует шаблон{{%input%}}
, то он заменяется выделенным текстом.
В противном случае выделенный в редакторе текст добавляется в конец запроса.
В диалоге доступны такие настройки:
- Возможность работы в единой сессии, с учётом предыдущего контекста.
По умолчанию (состояние[?]
) сессия продолжается пока открыт редактор с выводом.
Сессию также можно в любой момент принудительно очистить кнопкой “-
”. - Форматирование вывода по заданной границе, или по ширине окна (состояние
[?]
).
Блоки кода не форматируются. - Установка различных параметров генерации (в зависимости от выбранного сервиса/утилиты).
Значения запоминаются в истории, и легко доступны для повторного выбора.
Некоторые параметры специфичны для отдельной конфигурации, другие могут разделяться между разными (посредством общей истории). - Возможность установки переменных окружения, необходимых для отдельных утилит.
Кнопки:
[ Utility cfg ]
доступна в случае, если используемая активной конфигурацией утилита держит настройки в собственном файле; нажатие кнопки позволяет открыть его в редакторе.[ Definition ]
открывает в редакторе файл определения активной конфигурации (*.lua.cfg), например при необходимости там легко изменить набор доступных параметров.[ Presets - F5 ]
позволяет подставить сразу несколько параметров набором (“пресетом”).
По нажатию кнопки открывается Список пресетов.[ Models - F6 ]
запрашивает список моделей через API, если это предусмотрено конфигурацией, в противном случае кнопка недоступна.
Также фиксированный список моделей может быть уже предварительно занесён в историю поля ввода (актуально для некоторых пресетов и конфигураций).[ Switch ]
или же повторное нажатиеCtrl+B
позволяет переключиться на другую конфигурацию, открывая Меню выбора конфигурации.{ Go! }
запуск генерации ответа модели, вывод открывается в редакторе.
Дополнительные шорткаты:
Shift+F4
- задать заголовки запроса (для OpenAI-compatible), в виде таблицы Lua или Moonscript (удобно использовать single line table literal).Shift+F5
- открыть историю поляapibase
.Shift+F6
- открыть историю списка моделей.
Макросы, активные в окне с выводом:
Ctrl+Shift+Ins
:- скопировать выделенный текст, склеив свёрнутые строки обратно в параграфы;
- при отсутствии выделения ищет и обрабатывает блок кода под курсором.
Alt+F2
полностью убрать форматирование (свёртку).
Список пресетов вызывается из диалога нажатием соответствующей кнопки, хоткеем, или же по F5
.
“Пресет” представляет собой именованный набор параметров, подставляемых в соответствующие поля диалога.
Пресеты хранятся в файлах *.preset
и являются Lua-файлами.
Создать новый пресет можно нажав Shift+F4
или Ins
.
Над пресетами в списке доступны следующие действия:
Enter
- заполнить поля диалога значениями из пресета.F4
- открыть в редакторе.F5
- скопировать,F6
- переименовать.F8
илиDel
- удалить.
В списке отображаются только пресеты, подходящие для текущей конфигурации диалога:
если в пресете содержится параметр, не имеющий соответствия в диалоге текущей конфигурации,
то такой пресет показан не будет.
Нажатием Ctrl+H
можно принудительно отобразить все пресеты.
См. также: обзор пресетов для сервисов совместимых с OpenAI API в разделе Обзор конфигураций.
- Содержимое архива разместить в отдельной директории, где-то в
Macros/scripts
. - Для LuaShell – стандартным образом, т.е. где-то в
Macros/utils
, или в любой другой директории, доступной через%PATH%
. - Для работы с сетью непосредственно, через “нативные” конфигурации, такие как
openai.lua.cfg
, необходимы следующие модули:LuaSocket
,LuaSec
: https://github.com/FarManagerLegacy/LuaBinaries/releases
и их зависимости: OpenSSL, (для некоторых билдов) MS Visual C++ Redist.- Практически любой JSON модуль, предоставляющий функции
encode
/decode
.- По умолчанию ищется модуль с одним из имён:
cjson
,rsjson
,ljson
,dkjson
,lunajson
, или простоjson
(см. также lua-users wiki).
Мною тестировались Lua CJSON иdkjson
. - Для явного указания имени модуля следует использовать опцию
json_module
в начале скрипта.
Её можно изменить прямо в коде, либо воспользоваться возможностями ScriptsBrowser/cfgscript
.
- По умолчанию ищется модуль с одним из имён:
- Также можно работать через сторонние утилиты:
- Для запуска утилит рекомендуется модуль Piper
(положить в
modules
).
В случае его отсутствия для запуска будет использована стандартная функцияio.popen
, в сочетании
с созданием временных файлов, и перенаправлением их в стандартный ввод посредством команд shell. - В
%PATH%
должны быть утилиты, соответствующие имеющимся файлам определений (*.lua.cfg), см. раздел Меню выбора конфигурации.
- Для запуска утилит рекомендуется модуль Piper
(положить в
Большая часть конфигураций требует задания некоторых параметров в диалоге.
Наиболее важные параметры - такие как apibase
, apikey
и model
- определяются выбранным провайдером.
Некоторые утилиты используют файл настройки, доступный как из диалога, так и в списке конфигураций (подробнее см. в документации соответствующих утилит).
В комплекте идут определения для ряда опробованных мной утилит/сервисов (но легко добавить и новые).
С некоторыми соображениями по выбору конфигурации можно ознакомиться в разделе Обзор конфигураций.
- Выбор конфигурации осуществляется через меню, доступное как прямо из диалога,
так и отовсюду посредством макроса.
Выбор запоминается. - Верхний раздел списка содержит “нативные” конфигурации, работающие с сетью средствами Lua.
Раздел не будет отображаться, если отсутствуют необходимые модули, см. Установка. - Нижний раздел списка содержит определения, использующие внешние утилиты.
По умолчанию список содержит только установленные утилиты, полный список – поCtrl+H
.- Утилиты необходимо скачать самостоятельно (соответствующий сайт открывается по
Alt+F1
из меню). - Утилитам может требоваться настройка (помимо параметров в диалоге),
подробнее см. в собственной их документации.
Быстрый доступ к файлу с настройками (если применимо) -F4
в меню, или по кнопке в диалоге.
- Утилиты необходимо скачать самостоятельно (соответствующий сайт открывается по
- По
Alt+F4
- быстрый доступ к файлу с определением той или иной конфигурации (*.lua.cfg).
В общем случае следует отдать предпочтение “нативным” конфигурациям, поскольку они обеспечивают больше возможностей.
Однако в некоторых случаях может оказаться проще или удобнее работать и через утилиты, например:
- если соответствующая утилита уже есть (и используется из командной строки);
- если утилита уже содержит настройки провайдеров (как
bito
,tgpt
,pytgpt
); - если пользователю проще скачать утилиту, чем выполнить другие инструкции по установке.
- gh models - GitHub Models extension.
Инструкуции по установке см. на домашней странице. Необходим аккаунт GitHub. Действуют лимиты. - tgpt, pytgpt - не требуют предварительной настройки.
Недостаток: не гарантирована стабильность (иногда требуется обновление утилит). - bito настройка описана тут.
Недостаток: бесплатный лимит 20 сообщений в день. - Прочие утилиты - aichat, chatgpt-cli, mods, sgpt - работают с OpenAI API (и совместимыми).
Требуют задания некоторых параметров, прежде всегоapibase
,apikey
, иmodel
. Их значения зависят от выбранного провайдера.
В зависимости от утилиты, параметры надо установить или через файл настроек (F4
в списке выбора), или как аргументы командной строки (доступные в диалоге), или через переменные окружения (также доступны в диалоге).
На данный момент наиболее сильные модели это:
o3
,o1
иgpt-4o
от OpenAI;gemini-2.0-*
,gemini-exp-*
от Google;claude-3.5-sonnet
от Anthropic;grok-2
от xAI;
Из опенсорсных - все что побольше, например:
- из серии Llama от Meta AI:
llama-3.1-405b
,llama-3.2-90b
,llama-3.3-70b
; - ряд моделей от китайских разработчиков также демонстрирует хорошие результаты: DeepSeek, Qwen, Yi от 01.AI, MiniMax.
Ориентироваться можно по рейтингу ChatBot Arena.
- OpenAI – оригинальный разработчик ChatGPT.
Новому пользователю предоставляется кредит $5, после исчерпания которого доступно только платное использование.
Работа с этим апи возможна как с помощью сторонних утилит, так и с помощью “нативной” конфигурации, так и называющейся “OpenAI-compatible”. - Другие OpenAI-совместимые: Mistral AI, xAI Grok, AI21 labs Jamba.
К этой же категории относится целый ряд провайдеров, предоставляющие доступ к OpenSource-моделям. - Провайдеры с собственным API, такие как Google Gemini, Anthropic Claude, Cohere Command R+, и т.д.
Для поддержки в AskAI требуется или соответствующая “нативная” конфигурация, или специальный сервис-адаптер, который будет конвертировать API в совместисый с OpenAI формат.
Примеры таких сервисов: openai-gemini, openai-github-copilot, и др.
Обзор пресетов для сервисов совместимых с OpenAI API
В комплекте со скриптом идёт набор пресетов, содержащих предварительно заданные
значения apibase
(и начальное значение model
).
В большинстве случаев пользователю также требуется самостоятельно получить apikey
,
адрес сайта для регистрации можно найти в файле пресета (открывается из списка по F4
).
С перечисленными ниже пресетами помимо конфигурации openai.lua.cfg
совместимы также
конфигурации некоторых утилит (кроме тех, которые хранят эти значения в собственных файлах настроек).
- Не требуют ключа (
apikey
) только эти пресеты: - Для использования других надо зарегистрироваться и получить ключ. Следующие пресеты относятся к бесплатным сервисам (с определёнными лимитами):
- На некоторых сервисах только часть моделей доступно бесплатно:
- chutes (DeepSeek, Llama, Qwen, …)
- huggingface (бесплатно в основном небольшие модели, но есть и такие как
CodeLlama-34b-Instruct-hf
иQwen2.5-72B-Instruct
) - openrouter (бесплатно в основном небольшие модели, но доступны и такие как
llama-3.1-405b-instruct
) - siliconflow (бесплатно - небольшие модели)
- together.ai (бесплатно -
meta-llama/Llama-3.3-70B-Instruct-Turbo-Free
,meta-llama/Llama-Vision-Free
,deepseek-ai/DeepSeek-R1-Distill-Llama-70B-free
)
- Некоторые сервисы дают возможность бесплатно пользоваться только сайтом, но в некоторых случаях возможно
задействовать их приватный API (указав Cookie и/или другие требуемые данные в заголовках):
- cerebras (
llama-3.3-70b
,llama3.1-70b
,llama3.1-8b
,deepseek-r1-distill-llama-70b
) - featherless (бесплатно - небольшие модели)
- fireworks.ai (всевозможные OpenSource-модели)
- lepton (всевозможные OpenSource-модели)
- cerebras (
- Для полноты: пресеты для некоторых сервисов, для которых доступны пробные ключи:
- ai21 (Jamba): $10 credit, 3mo trial?
- deepbricks (o1/gpt-4o/3.5/claude-3.5-sonnet/llama): allows some usage with 0 balance
- grok от xAI
- hyperbolic (OpenSource-модели: DeepSeek, Llama, Qwen): $10 credit for free trial
- ncompass (OpenSource-модели: Llama, Qwen, …): $100 of credit
- novita.ai (OpenSource-модели): $0.5 credit
Кроме того:
copilot-
/gemini-proxy-public
позволяют попробовать соответствующие сервисы-адаптеры, упомянутые выше.
Примечание:gemini
с некоторых пор доступен и через OpenAI API.keepass
позволяет держать свои собственные пресеты в базе KeePass.
Подобным образом можно организовать работу и с другими аналогичными утилитами.
Примечание: задача перечислить все существующих сервисы не ставилась, это попросту невозможно, не говоря о том что каждый день могут появляться новые.
Помимо самостоятельных провайдеров, можно встретить также сервисы не вполне понятного происхождения,
не имеющие даже официального сайта. Такими в списке выше являются anyai
и tmrace
.
По причине их неопределённого статуса пользоваться ими следует с осторожностью, и не передавать чувствительные данные!
Подобных сервисов довольно много, некоторые например перечислены тут: cool ai stuff!