Skip to content

FarManagerLegacy/AskAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ask AI – макрос для взаимодействия с ChatGPT (и другими LLM-сервисами) в FAR

Этот макрос – дальнейшее развитие bito.ai code assistant (см.), теперь с поддержкой множества LLM-сервисов.

Доступ к сервисам возможен как посредством разнообразных консольных утилит, так и напрямую через REST API.

Каждый из LLM-сервисов имеет свои достоинства и недостатки – выбор за пользователем.

Макрос назначен на Ctrl+B и открывает диалог для ввода запроса и настройки параметров генерации. При этом выделение редактора передаётся в качестве контекста.

Может быть также запущен в качестве скрипта LuaShell.

Вывод ответа осуществляется в отдельном редакторе.

Макросы, активные в окне с выводом:

  • Ctrl+Shift+Ins:
    • скопировать выделенный текст, склеив свёрнутые строки обратно в параграфы;
    • при отсутствии выделения ищет и обрабатывает блок кода под курсором.
  • Alt+F2 полностью убрать форматирование (свёртку).

Ctrl+B:Double позволяет в любой момент открыть окно с выводом повторно.

Если выделен текст, то нажатие Ctrl+B:Hold продолжает чат без открытия диалога, передавая выделение в качестве нового запроса.

Примечание: составные сочетания типа Ctrl+B:Double предполагают использование модуля MacroEx.
Альтернативно, можно заменить сочетание на простое через параметр keyOutput.
Его можно изменить прямо в коде (в начале скрипта), либо воспользоваться возможностями ScriptsBrowser/cfgscript.

Диалог

Диалог служит для ввода запроса и настройки различных параметров.
Ранее набранные приглашения доступны в истории поля ввода.
Для удобного редактирования объёмных/многострочных запросов рекомендуется макрос EditBoxToEditor.

Вместе с запросом передаётся выделенный в редакторе текст.
Если в запросе присутствует шаблон {{%input%}}, то выделенный текст подставляется на его место.
В противном случае выделенный текст добавляется в конец запроса.

Последующие запросы учитывают предыдущий контекст, образуя диалог (сессию), если не настроено иное.

На верхней рамке диалога отображается имя текущего профиля, перейти к нему можно не только курсорными клавишами, но и по CtrlHome.

В поле редактирования запроса можно переместиться с помощью хоткея или нажатием PgUp.

Примечание: повторные нажатия CtrlHome / PgUp переключают фокус между полями профиля / запроса.

Доступны такие настройки:

  • Session - по умолчанию (состояние [?]) сессия продолжается, пока открыт редактор с выводом.
    Также сессию можно в любой момент принудительно очистить кнопкой “-”.
  • Timeout - предельное время ожидания ответа на запрос (для “нативных” конфигураций).
  • Форматирование вывода по заданной границе или по ширине окна (состояние [?]).
    Блоки кода не форматируются.
  • Установка различных параметров генерации (в зависимости от выбранного сервиса/утилиты).
    Значения запоминаются в истории и легко доступны для повторного выбора.
    Некоторые параметры специфичны для отдельной конфигурации, другие могут разделяться между разными (посредством общей истории).
  • Возможность установки переменных окружения, необходимых для отдельных утилит.

Кнопки:

  • [ Utility cfg ] доступна в случае, если используемая активной конфигурацией утилита держит настройки в собственном файле; нажатие кнопки позволяет открыть его в редакторе.
  • [ Presets - F5 ] позволяет подставить сразу несколько параметров набором (“пресетом”).
    По нажатию кнопки открывается Список пресетов.
  • [ Models - F6 ] запрашивает список моделей через API, если это предусмотрено конфигурацией, в противном случае кнопка недоступна.
    Также фиксированный список моделей может быть уже предварительно занесён в историю поля ввода (актуально для некоторых пресетов и конфигураций).
  • [ Providers - ^B ] или же повторное нажатие Ctrl+B позволяет переключиться на другую конфигурацию, открывая Меню выбора конфигурации провайдера.
  • { Go! } или Enter – запуск генерации ответа модели, вывод открывается в отдельном редакторе.

Дополнительные шорткаты:

  • Shift+F4 - задать заголовки запроса (для OpenAI-compatible) в виде таблицы Lua или Moonscript (удобно использовать single line table literal).
  • Shift+F5 - открыть историю поля apibase.
  • Shift+F6 - открыть отсортированный в алфавитном порядке список истории моделей.
  • Ctrl+H - переключение между полным и “компактным” режимом диалога (без параметров конфигурации и кнопок).
  • Alt+F4 - открывает в редакторе файл активной конфигурации провайдера (*.lua.cfg), например при необходимости изменить набор доступных параметров.

По умолчанию диалог открывается в полном режиме, но это можно изменить опцией compactDlg, которая находится в начале скрипта.
Помимо этого там же можно настроить шорткаты для вызова макросов и некоторые другие параметры.

А чтобы после каждого обновления скрипта не приходилось вручную восстанавливать изменённые значения, рекомендуется использовать возможности cfgscript из пакета ScriptsBrowser.

Профили

По существу профиль представляет собой именованный набор значений, сохраняемых в истории соответствующих полей ввода.

Профили задуманы как средство для выполнения “быстрых действий” с использованием макросов (см. ниже), и без этого не несут большой ценности, т.к. для обычного свободного чата достаточно штатного выбора из истории.

На практике же при использовании AskAI часто возникают типовые повторяющиеся задачи, которые хотелось бы выполнять максимально оперативно, с заранее заданными параметрами, не тратя внимание на ввод, и даже не открывая диалога, если например все исходные данные содержатся в выделенном тексте.

Для обеспечения этого и задуманы профили.

Управление

Текущий профиль отображается на верхней рамке, быстро перейти в поле для редактирования можно нажатием Ctrl+Home; если ввести имя несуществующего профиля, то он будет создан.

Выбрать существующий профиль можно из выпадающего списка, по Shift+Del в этом списке профиль можно удалить.

Находясь в любом поле ввода с помощью Ctrl+Up можно открыть список истории соответствующего поля из профиля default.

Использование

Предполагается, что под каждую типовую задачу заводится отдельный профиль, который можно вызвать одним нажатием клавиши, используя макрос.

Примеры макросов можно увидеть в macros.lua.sample (для загрузки переименовать в файл с расширением .lua).

Это самый обычный макрофайл, загружаемый штатным образом, а функция askAI доступна в нём как модуль, через require.

В макросе задаётся только имя профиля, а соответствующая роль, запрос (prompt), провайдер и прочее настраиваются уже в диалоге. Введённые значения запоминаются каждый раз при закрытии диалога по Enter/CtrlEnter; также можно сохранить их принудительно нажатием Shift+Enter в любой строке редактирования.

Примечание: заранее создавать профиль нет необходимости, он будет и так открыт при вызове макроса (сначала надо будет выбрать провайдера).

Работа с пресетами

Список пресетов вызывается из диалога нажатием соответствующей кнопки, хоткеем, или же по 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), см. раздел Обзор утилит.
  • При работе с профилями, чтобы при удалении профиля очищалась и связанная с ним история, опционально можно установить модуль LuaSQLite3, который присутствует например в дистрибутиве плагина Polygon.

Настройка

Большая часть конфигураций требует задания некоторых параметров в диалоге.
Наиболее важные параметры - такие как apibase, apikey и model - определяются выбранным сервисов.

Некоторые утилиты используют файл настройки, доступный как из диалога, так и в списке конфигураций (подробнее см. в документации соответствующих утилит).

Меню выбора конфигурации провайдера

В комплекте идут конфигурации для ряда опробованных мной утилит/сервисов (но легко добавить и новые).

С некоторыми соображениями по выбору конфигурации можно ознакомиться в разделе Обзор сервисов.

  • Выбор конфигурации осуществляется через меню, доступное как прямо из диалога, так и отовсюду посредством макроса.
    Выбор запоминается.
  • Верхний раздел списка содержит “нативные” конфигурации, работающие с сетью средствами Lua.
    Раздел не будет отображаться, если отсутствуют необходимые модули, см. Установка.
    Стандартные конфигурации (см. обзор): OpenAI-compatible, Google Gemini, Cohere.
  • Нижний раздел списка содержит определения, использующие внешние утилиты (см. обзор ниже).
    По умолчанию список содержит только установленные утилиты, полный список – по Ctrl+H.
    • Утилиты необходимо скачать самостоятельно (соответствующий сайт открывается по Alt+F1 из меню).
    • Утилитам может требоваться настройка (помимо параметров в диалоге), подробнее см. в их собственной документации.
      Быстрый доступ к файлу с настройками (если применимо) - из меню по F4, или в диалоге по кнопке [ Utility cfg ].
  • По Alt+F4 - быстрый доступ к файлу с определением той или иной конфигурации (*.lua.cfg).

В общем случае следует отдать предпочтение “нативным” конфигурациям, поскольку они обеспечивают больше возможностей.

Однако в некоторых случаях может оказаться проще или удобнее работать и через утилиты, например:

  • если соответствующая утилита уже есть (и используется из командной строки);
  • если утилита уже содержит настройки провайдеров (как bito, gh models, tgpt, pytgpt);
  • если пользователю проще скачать утилиту, чем выполнить другие инструкции по установке.

Обзор утилит

  • bito - настройка описана тут.
    Недостаток: бесплатный лимит 75 сообщений в день, доступ только к BASIC-модели (gpt-4o-mini).
  • Gemini CLI - ещё один способ доступа к моделям от Google.
    В отличии от других вариантов бесплатно предоставляется доступ к gemini-2.5-pro (до 1000 запросов в день).
    Простой логин через браузер.
    Требуется Node.js.
  • gh models - GitHub Models extension.
    Инструкции по установке см. на домашней странице.
    Необходим аккаунт GitHub. Действуют лимиты.
  • tgpt, pytgpt - не требуют предварительной настройки.
    Недостаток: не гарантирована стабильность (иногда требуется обновление утилит).
  • Прочие утилиты - aichat, chatgpt-cli, mods, sgpt, smartcat - работают с OpenAI API (и совместимыми).
    Требуют задания некоторых параметров, прежде всего apibase, apikey и model. Их значения зависят от выбранного сервиса.
    В зависимости от утилиты, параметры или надо установить через файл настроек (как описано выше), или они могут быть доступны сразу в диалоге, если они передаются как аргументы командной строки, или через переменные окружения.
    Для заполнения параметров в диалоге можно использовать пресеты, идущие в комплекте (см. обзор).

Обзор онлайн-сервисов

Выбор модели

На данный момент наиболее сильные модели это:

  • gpt-5, gpt-4.1, gpt-4o, o4, o3, o1 (а также модели с суффиксами -mini) от OpenAI;
  • gemini-2.5-pro от Google;
  • claude-opus-4, -sonnet-4 от Anthropic;
  • grok-4 от xAI;

Из опенсорсных - все что побольше, например:

  • gpt-oss-120b от OpenAI;
  • из серии Llama от Meta AI: llama-4-maverick, llama-3.1-405b, llama-3.2-90b, llama-3.3-70b;
  • ряд моделей от китайских разработчиков также демонстрирует хорошие результаты: DeepSeek, Qwen от Alibaba, GLM-4.5 от Zhipu AI, Kimi K2 от Moonshot AI, Baidu ERNIE, MiniMax, Yi от 01.AI.

Ориентироваться можно по рейтингу LMArena.

Обзор провайдеров

  • OpenAI – оригинальный разработчик ChatGPT.
    Новому пользователю предоставляется кредит $5, после исчерпания которого доступно только платное использование.
    Работа с этим апи возможна как с помощью сторонних утилит, так и с помощью “нативной” конфигурации, так и называющейся “OpenAI-compatible”.
  • Другие OpenAI-совместимые: Mistral AI, xAI Grok, AI21 labs Jamba.
    К этой же категории относится целый ряд провайдеров, предоставляющих доступ к OpenSource-моделям.
  • Провайдеры с собственным API, такие как Google Gemini, Anthropic Claude, Cohere Command и т.д.
    Для поддержки в AskAI требуется или соответствующая “нативная” конфигурация, или специальный сервис-адаптер, который будет конвертировать API в совместимый с OpenAI формат.
    Примеры таких сервисов: openai-gemini, openai-github-copilot и др.

Обзор пресетов для сервисов совместимых с OpenAI API

В комплекте со скриптом идёт набор пресетов, содержащих предварительно заданные значения apibase (и начальное значение model).
В большинстве случаев пользователю также требуется самостоятельно получить apikey, адрес сайта для регистрации можно найти в файле пресета (открывается из списка по F4).

С перечисленными ниже пресетами помимо конфигурации openai.lua.cfg совместимы также конфигурации некоторых утилит (кроме тех, которые хранят эти значения в собственных файлах настроек).

  • Не требуют ключа (apikey) только эти пресеты:
    • pollinations.ai (OpenAI, Gemini, DeepSeek, Qwen, Mistral, Llama, )
    • tmrace (gpt-4o-mini): лимит 50 запросов в сутки
    • api.airforce: лимит 1 запрос в минуту, 500 в сутки
    • g4f.*: GPT4Free
    • deepinfra (всевозможные OpenSource модели): some anonymous usage allowed
  • Для использования других надо зарегистрироваться и получить ключ. Следующие пресеты относятся к бесплатным сервисам (с определёнными лимитами):
    • cloudflare (@cf/openai/gpt-oss-120b, @cf/meta/llama-3.3-70b-instruct-fp8-fast, @cf/deepseek-ai/deepseek-r1-distill-qwen-32b и модели поменьше)
    • cohere (серии command-* и c4ai-aya-*)
    • gemini от Google
    • github-copilot (модели от OpenAI, Anthropic, Google)
    • github-models (модели от Cohere, DeepSeek, Meta, Mistral AI, Microsoft, OpenAI, xAI и др.)
    • groq (модели до 120b)
    • mistral, codestral
    • nvidia (OpenSource-модели: DeepSeek, gpt-oss, Llama, Qwen и др.)
    • sambanova (Llama, DeepSeek, Qwen)
    • vercel (модели от Alibaba Qwen, Amazon, Anthropic, Cohere, DeepSeek, Google, Meta, Mistral AI, Moonshot AI, OpenAI, xAI, Zhipu AI и др.)
      Для регистрации требуется привязка кредитной карты.
      Free-аккаунты получают ежемесячно кредит $5, но есть и полностью бесплатные модели, в настоящий момент это meituan/longcat-flash-chat, stealth/sonoma-dusk-alpha, stealth/sonoma-sky-alpha, xai/grok-4-fast-non-reasoning, xai/grok-4-fast-reasoning.
  • На некоторых сервисах только часть моделей доступна бесплатно:
    • chutes (бесплатно - небольшие модели openai/gpt-oss-20b, zai-org/GLM-4.5-Air, Qwen/Qwen3-Coder-30B-A3B-Instruct, …)
    • openrouter (до 50 запросов в день к бесплатным “:free” моделям, в том числе от Google, а также llama, deepseek, qwen и др.;
      покупкой 10 кредитов лимит можно увеличить до 1000 запросов в день)
    • siliconflow (бесплатно - небольшие модели)
  • Некоторые сервисы дают возможность бесплатно пользоваться только сайтом, но в некоторых случаях возможно задействовать их приватный API (указав Cookie и/или другие требуемые данные в заголовках):
    • cerebras (gpt-oss-120b, и несколько моделей Llama, Qwen)
    • featherless (бесплатно - огромное количество моделей <15B)
    • fireworks.ai (всевозможные OpenSource-модели)
    • lepton (llama3-3-70, …, mixtral-8x7b и др.)
  • Для полноты: пресеты для некоторых сервисов, для которых доступны пробные ключи:
    • ai21 (Jamba): $10 credit, 3mo trial
    • deepbricks (o1/o3/o4/gpt-5/…/claude/deepseek/gemini/llama): allows some usage with 0 balance
    • grok от xAI
    • huggingface (OpenSource-модели): $0.1 monthly
    • hyperbolic (OpenSource-модели: DeepSeek, Llama, Qwen): $10 credit for free trial
    • ncompass (OpenSource-модели: Llama, Qwen, …): $1 free credits
    • novita.ai (OpenSource-модели): $0.5 credit

Кроме того:

  • github-copilot-/gemini-proxy-public позволяют попробовать соответствующие сервисы-адаптеры, упомянутые выше.
    Примечание: gemini с некоторых пор доступен и через OpenAI API.
  • keepass позволяет держать свои собственные пресеты в базе KeePass.
    Подобным образом можно организовать работу и с другими аналогичными утилитами.

Примечание: задача перечислить все существующие сервисы не ставилась, это попросту невозможно, не говоря о том, что каждый день могут появляться новые.

Помимо самостоятельных провайдеров, можно встретить также сервисы не вполне понятного происхождения, не имеющие даже официального сайта. Такими в списке выше являются tmrace и api.airforce.

По причине их неопределённого статуса пользоваться ими следует с осторожностью и не передавать чувствительные данные!

Подобных сервисов довольно много, некоторые например перечислены тут: cool ai stuff!

About

Macro for interacting with ChatGPT (and other LLM services) in Far Manager

Topics

Resources

License

Stars

Watchers

Forks