-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathaskai.ru.hlf
312 lines (230 loc) · 27.2 KB
/
askai.ru.hlf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
.Language=Russian,Russian (Русский)
.PluginContents=Ask AI
.Options CtrlStartPosChar=§¦
@Contents
$ #Ask AI – макрос для взаимодействия с ChatGPT (и другими LLM-сервисами) в FAR#
Этот макрос – дальнейшее развитие #bito.ai code assistant# (~см.~@https://forum.farmanager.com/viewtopic.php?t=13283@),
с поддержкой множества LLM-сервисов.
Доступ к сервисам реализуется как посредством (произвольных) консольных утилит,
так напрямую через REST API.
Каждый из LLM-сервисов имеет свои достоинства и недостатки, ~выбор~@Providers@ остаётся за пользователем.
Макрос назначен на #Ctrl+B#. Также может быть запущен в качестве скрипта ~LuaShell~@https://forum.farmanager.com/viewtopic.php?f=15&t=10907@.
#Ctrl+B:Double# позволяет в любой момент открыть окно с выводом повторно.
#Функции:#
#•# §¦Ввод #запроса# в диалоге, ранее набранные приглашения доступны в истории поля ввода.
#•# §¦Вместе с запросом передаётся #выделенный в редакторе текст#.
§¦Если в запросе присутствует шаблон #{{%input%}}#, то он заменяется выделенным текстом.
§¦В противном случае выделенный в редакторе текст добавляется в конец запроса.
В #диалоге# доступны такие настройки:
#•# §¦Возможность работы #в единой сессии#, с учётом предыдущего контекста.
§¦По умолчанию (состояние #[?]#) сессия продолжается пока открыт редактор с выводом.
§¦Сессию также можно в любой момент принудительно #очистить# кнопкой “#-#”.
#•# §¦#Форматирование вывода# по заданной границе, или по ширине окна (состояние #[?]#).
§¦Блоки кода не форматируются.
#•# §¦Установка различных #параметров# генерации (в зависимости от выбранного сервиса/утилиты).
§¦Значения запоминаются в истории, и легко доступны для повторного выбора.
§¦Некоторые параметры специфичны для отдельной #конфигурации#, другие могут разделяться между разными
(посредством общей истории).
#•# §¦Возможность установки #переменных окружения#, необходимых для отдельных утилит.
Кнопки:
#•# §¦#[ Utility cfg ]# доступна в случае, если используемая активной конфигурацией утилита
держит #настройки в собственном файле#; нажатие кнопки позволяет открыть его в редакторе.
#•# §¦#[ Definition ]# открывает в редакторе файл #определения# активной конфигурации (*.lua.cfg),
например при необходимости там легко изменить набор доступных параметров.
#•# §¦#[ Presets - F5 ]# позволяет подставить сразу несколько параметров набором (“пресетом”).
§¦По нажатию кнопки открывается ~Список пресетов~@Presets@.
#•# §¦#[ Models - F6 ]# запрашивает список #моделей# через API, если это предусмотрено конфигурацией,
в противном случае кнопка недоступна.
§¦Также фиксированный список моделей может быть уже предварительно занесён в историю поля ввода
(актуально для некоторых пресетов и конфигураций).
#•# §¦#[ Switch ]# или же повторное нажатие #Ctrl+B# позволяет переключиться на другую конфигурацию,
открывая ~Меню выбора конфигурации~@UtilitiesMenu@.
#•# §¦#{ Go! }# запуск генерации ответа модели, вывод открывается в редакторе.
Дополнительные шорткаты:
#•# §¦#Shift+F4# - задать заголовки запроса (для #OpenAI-compatible#), в виде таблицы Lua или Moonscript
(удобно использовать #~single line table literal~@https://moonscript.org/reference/##the-language/table-literals@#).
#•# §¦#Shift+F5# - открыть историю поля #apibase#.
#•# §¦#Shift+F6# - открыть историю списка моделей.
@=
Макросы, активные в #окне с выводом#:
#•# §¦#Ctrl+Shift+Ins#:
#•# §¦скопировать выделенный текст, склеив свёрнутые строки обратно в параграфы;
#•# §¦при отсутствии выделения ищет и обрабатывает блок кода под курсором.
#•# §¦#Alt+F2# полностью убрать форматирование (свёртку).
@=
Другие разделы справки: [~Установка~@Install@], [~Меню выбора конфигурации~@UtilitiesMenu@], [~Обзор конфигураций~@Providers@], [~i~@index@]
@Presets
$ #Работа с пресетами#
Список пресетов вызывается из ~диалога~@Contents@ нажатием соответствующей кнопки, хоткеем, или же по #F5#.
“Пресет” представляет собой именованный набор параметров, подставляемых в соответствующие поля диалога.
Пресеты хранятся в файлах #*.preset# и являются Lua-файлами.
Создать новый пресет можно нажав #Shift+F4# или #Ins#.
Над пресетами в списке доступны следующие действия:
#•# §¦#Enter# - заполнить поля диалога значениями из пресета.
#•# §¦#F4# - открыть в редакторе.
#•# §¦#F5# - скопировать, #F6# - переименовать.
#•# §¦#F8# или #Del# - удалить.
В списке отображаются только пресеты, подходящие для текущей конфигурации диалога:
если в пресете содержится параметр, не имеющий соответствия в диалоге текущей конфигурации,
то такой пресет показан не будет.
Нажатием #Ctrl+H# можно принудительно отобразить все пресеты.
См. также: обзор пресетов для сервисов совместимых с #OpenAI API# в разделе ~Обзор конфигураций~@Providers@.
@=
Другие разделы справки: [~Основные функции~@Contents@], [~Установка~@Install@], [~Меню выбора конфигурации~@UtilitiesMenu@], [~Обзор конфигураций~@Providers@], [~i~@index@]
@Install
$ #Установка#
#•# §¦Содержимое архива разместить в отдельной директории, где-то в #Macros/scripts#.
#•# §¦Для ~LuaShell~@https://forum.farmanager.com/viewtopic.php?f=15&t=10907@ – стандартным образом, т.е. где-то в #Macros/utils#,
или в любой другой директории, доступной через #%PATH%#.
#•# §¦Для работы с сетью непосредственно, через “нативные” конфигурации, такие как #openai.lua.cfg#,
необходимы следующие модули:
#•# §¦#LuaSocket#, #LuaSec#: ~https://github.com/FarManagerLegacy/LuaBinaries/releases~@https://github.com/FarManagerLegacy/LuaBinaries/releases@
§¦и их зависимости: ~OpenSSL~@https://slproweb.com/products/Win32OpenSSL.html@, (для некоторых билдов) ~MS Visual C++ Redist~@https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170##latest-microsoft-visual-c-redistributable-version@.
#•# §¦Практически любой JSON модуль, предоставляющий функции #encode#/#decode#.
#•# §¦По умолчанию ищется модуль с одним из имён: #cjson#, #rsjson#, #ljson#, #dkjson#, #lunajson#, или просто ~json~@https://luarocks.org/search?q=json@
(см. также ~lua-users wiki~@http://lua-users.org/wiki/JsonModules@).
§¦Мною тестировались ~Lua CJSON~@https://github.com/FarManagerLegacy/LuaBinaries/@ и ~dkjson~@http://dkolf.de/dkjson-lua/@.
#•# §¦Для явного указания имени модуля следует использовать опцию #json_module# в начале скрипта.
§¦Её можно изменить прямо в коде, либо воспользоваться возможностями ~ScriptsBrowser~@https://forum.farmanager.com/viewtopic.php?f=15&t=10418@/#cfgscript#.
#•# §¦Также можно работать через сторонние утилиты:
#•# §¦Для запуска утилит рекомендуется модуль ~Piper~@https://forum.farmanager.com/viewtopic.php?p=167895##p167895@
(положить в #modules#).
§¦В случае его отсутствия для запуска будет использована стандартная функция ~io.popen~@https://www.lua.org/manual/5.1/manual.html##pdf-io.popen@, в сочетании
§¦с созданием временных файлов, и перенаправлением их в стандартный ввод посредством команд shell.
#•# §¦В #%PATH%# должны быть #утилиты#, соответствующие имеющимся файлам #определений# (*.lua.cfg),
см. раздел ~Меню выбора конфигурации~@UtilitiesMenu@.
#Настройка#
Большая часть #конфигураций# требует задания некоторых параметров в ~диалоге~@Contents@.
Наиболее важные параметры - такие как #apibase#, #apikey# и #model# - определяются выбранным ~провайдером~@Providers@.
Некоторые #утилиты# используют файл настройки, доступный как из #диалога#, так и в ~списке конфигураций~@UtilitiesMenu@
(подробнее см. в документации соответствующих утилит).
@=
Другие разделы справки: [~Основные функции~@Contents@], [~Меню выбора конфигурации~@UtilitiesMenu@], [~Обзор конфигураций~@Providers@], [~i~@index@]
@UtilitiesMenu
$ #Меню выбора конфигурации#
В комплекте идут #определения# для ряда опробованных мной утилит/сервисов
(но легко добавить и новые).
С некоторыми соображениями по выбору конфигурации можно ознакомиться в разделе ~Обзор конфигураций~@Providers@.
#•# §¦Выбор конфигурации осуществляется через #меню#, доступное как прямо из ~диалога~@Contents@,
так и отовсюду посредством макроса.
§¦Выбор запоминается.
#•# §¦Верхний раздел списка содержит “нативные” конфигурации, работающие с сетью средствами Lua.
§¦Раздел не будет отображаться, если отсутствуют необходимые модули, см. ~Установка~@Install@.
#•# §¦Нижний раздел списка содержит определения, использующие внешние утилиты.
§¦По умолчанию список содержит только установленные утилиты, полный список – по #Ctrl+H#.
#•# §¦Утилиты необходимо скачать самостоятельно (соответствующий сайт открывается по #Alt+F1# из меню).
#•# §¦Утилитам может требоваться настройка (помимо параметров в диалоге),
подробнее см. в собственной их документации.
§¦Быстрый доступ к файлу с настройками (если применимо) - #F4# в меню, или по кнопке в ~диалоге~@Contents@.
#•# §¦По #Alt+F4# - быстрый доступ к файлу с #определением# той или иной конфигурации (*.lua.cfg).
В общем случае следует отдать предпочтение “нативным” конфигурациям, поскольку они обеспечивают больше возможностей.
Однако в некоторых случаях может оказаться проще или удобнее работать и через утилиты, например:
#•# §¦если соответствующая утилита уже есть (и используется из командной строки);
#•# §¦если утилита уже содержит настройки провайдеров (как #bito#, #tgpt#, #pytgpt#);
#•# §¦если пользователю проще скачать утилиту, чем выполнить другие инструкции по ~установке~@Install@.
#Обзор утилит#
#•# §¦~gh models~@https://github.com/github/gh-models@ - GitHub Models extension.
§¦Инструкуции по установке см. на домашней странице.
Необходим аккаунт GitHub. Действуют ~лимиты~@https://docs.github.com/en/github-models/prototyping-with-ai-models##rate-limits@.
#•# §¦~tgpt~@https://github.com/aandrew-me/tgpt@, ~pytgpt~@https://github.com/Simatwa/python-tgpt@ - не требуют предварительной настройки.
§¦Недостаток: не гарантирована стабильность (иногда требуется обновление утилит).
#•# §¦~bito~@https://bito.ai/@ настройка описана ~тут~@https://forum.farmanager.com/viewtopic.php?t=13283@.
§¦Недостаток: бесплатный лимит 20 сообщений в день.
#•# §¦Прочие утилиты - ~aichat~@https://github.com/sigoden/aichat@, ~chatgpt-cli~@https://github.com/kardolus/chatgpt-cli@, ~mods~@https://github.com/charmbracelet/mods@, ~sgpt~@https://github.com/tbckr/sgpt@ - работают с ~OpenAI API~@https://platform.openai.com/docs/api-reference@ (и совместимыми).
§¦Требуют задания некоторых параметров, прежде всего #apibase#, #apikey#, и #model#.
Их значения зависят от выбранного ~провайдера~@Providers@.
§¦В зависимости от утилиты, параметры надо установить или через файл настроек
(#F4# в списке ~выбора~@UtilitiesMenu@),
или как #аргументы# командной строки (доступные в ~диалоге~@Contents@),
или через #переменные окружения# (также доступны в ~диалоге~@Contents@).
@=
Другие разделы справки: [~Основные функции~@Contents@], [~Установка~@Install@], [~Обзор конфигураций~@Providers@], [~i~@index@]
@Providers
$ #Обзор конфигураций#
#Выбор модели#
На данный момент наиболее сильные модели это:
#•# §¦#o3#, #o1# и #gpt-4o# от ~OpenAI~@https://platform.openai.com/@;
#•# §¦#gemini-2.0-*#, #gemini-exp-*# от ~Google~@https://ai.google.dev/@;
#•# §¦#claude-3.5-sonnet# от ~Anthropic~@https://www.anthropic.com/@;
#•# §¦#grok-2# от ~xAI~@https://x.ai/grok@;
Из опенсорсных - все что побольше, например:
#•# §¦из серии ~Llama~@https://www.llama.com/@ от #Meta AI#: #llama-3.1-405b#, #llama-3.2-90b#, #llama-3.3-70b#;
#•# §¦ряд моделей от китайских разработчиков также демонстрирует хорошие результаты:
~DeepSeek~@https://www.deepseek.com/@, ~Qwen~@https://qwenlm.github.io/@, #Yi# от ~01.AI~@https://www.01.ai/@, ~MiniMax~@https://www.minimaxi.com/en@.
Ориентироваться можно по рейтингу ~ChatBot Arena~@https://lmarena.ai/?leaderboard@.
#Обзор провайдеров#
#•# §¦~OpenAI~@https://platform.openai.com/@ – оригинальный разработчик #ChatGPT#.
§¦Новому пользователю предоставляется кредит $5, после исчерпания которого доступно только платное использование.
§¦Работа с этим апи возможна как с помощью сторонних утилит, так и с помощью “нативной” конфигурации,
так и называющейся “#OpenAI-compatible#”.
#•# §¦Другие #OpenAI#-совместимые: ~Mistral AI~@https://mistral.ai/@, ~xAI~@https://x.ai/grok@ #Grok#, ~AI21 labs~@https://www.ai21.com@ #Jamba#.
§¦К этой же категории относится целый ряд провайдеров, предоставляющие доступ к OpenSource-моделям.
#•# §¦Провайдеры с собственным API, такие как ~Google~@https://ai.google.dev/@ #Gemini#, ~Anthropic~@https://www.anthropic.com/@ #Claude#, ~Cohere~@https://cohere.com/command@ #Command R+#, и т.д.
§¦Для поддержки в #AskAI# требуется или соответствующая “нативная” конфигурация, или специальный
сервис-адаптер, который будет конвертировать API в совместисый с #OpenAI# формат.
§¦Примеры таких сервисов: ~openai-gemini~@https://habr.com/ru/articles/798123/@, ~openai-github-copilot~@https://habr.com/ru/articles/799215/@, и др.
#Обзор ~пресетов~@Presets@ для сервисов совместимых с ~OpenAI API~@https://platform.openai.com/docs/api-reference@#
В комплекте со скриптом идёт набор пресетов, содержащих предварительно заданные
значения #apibase# (и начальное значение #model#).
В большинстве случаев пользователю также требуется самостоятельно получить #apikey#,
адрес сайта для регистрации можно найти в файле пресета (открывается из списка по #F4#).
С перечисленными ниже пресетами помимо конфигурации #openai.lua.cfg# совместимы также
конфигурации некоторых утилит (кроме тех, которые хранят эти значения в собственных файлах настроек).
#•# §¦Не требуют ключа (#apikey#) только эти пресеты:
#•# §¦~anyai~@https://api.airforce/@: контекст лимитирован
#•# §¦#tmrace#: лимит 50 сообщений в сутки
#•# §¦~deepinfra~@https://deepinfra.com/models/text-generation@ (всевозможные OpenSource модели): some anonymous usage allowed
#•# §¦Для использования других надо зарегистрироваться и получить ключ.
Следующие пресеты относятся к бесплатным сервисам (с определёнными лимитами):
#•# §¦~cloudflare~@https://developers.cloudflare.com/workers-ai/models/@ (в основном небольшие модели, но есть и #@@cf/meta/llama-3.3-70b-instruct-fp8-fast#)
#•# §¦~gemini~@https://ai.google.dev/gemini-api/docs/openai@ от Google
#•# §¦~github~@https://github.com/marketplace/models/@ (модели от #OpenAI#, #DeepSeek#, #Anthropic#, #Mistral#, #Meta#, #Cohere#, #AI21#, #Microsoft# и др.)
#•# §¦~groq~@https://console.groq.com/playground@ (модели до 90b)
#•# §¦~mistral~@https://docs.mistral.ai/getting-started/models/models_overview/@, ~codestral~@https://console.mistral.ai/codestral@
#•# §¦~sambanova~@https://cloud.sambanova.ai/pricing@ (Llama <= 405b)
#•# §¦На некоторых сервисах только часть моделей доступно бесплатно:
#•# §¦~chutes~@https://chutes.ai/app@ (DeepSeek, Llama, Qwen, …)
#•# §¦~huggingface~@https://huggingface.co/models?other=text-generation-inference&inference=warm@ (бесплатно в основном небольшие модели, но есть и такие как #CodeLlama-34b-Instruct-hf# и #Qwen2.5-72B-Instruct#)
#•# §¦~openrouter~@https://openrouter.ai/models?q=:free@ (бесплатно в основном небольшие модели, но доступны и такие как #llama-3.1-405b-instruct#)
#•# §¦~siliconflow~@https://docs.siliconflow.cn/reference/chat-completions-1@ (бесплатно - небольшие модели)
#•# §¦~together.ai~@https://api.together.xyz/models@ (бесплатно - #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~@https://cloud.cerebras.ai/@ (#llama-3.3-70b#, #llama3.1-70b#, #llama3.1-8b#, #deepseek-r1-distill-llama-70b#)
#•# §¦~featherless~@https://featherless.ai/models@ (бесплатно - небольшие модели)
#•# §¦~fireworks.ai~@https://fireworks.ai/models@ (всевозможные OpenSource-модели)
#•# §¦~lepton~@https://www.lepton.ai/playground@ (всевозможные OpenSource-модели)
#•# §¦Для полноты: пресеты для некоторых сервисов, для которых доступны пробные ключи:
#•# §¦~ai21~@https://www.ai21.com/jamba@ (Jamba): $10 credit, 3mo trial?
#•# §¦~deepbricks~@https://deepbricks.ai/pricing@ (o1/gpt-4o/3.5/claude-3.5-sonnet/llama): allows some usage with 0 balance
#•# §¦~grok~@https://console.x.ai/@ от ~xAI~@https://x.ai/grok@
#•# §¦~hyperbolic~@https://app.hyperbolic.xyz/models@ (OpenSource-модели: DeepSeek, Llama, Qwen): $10 credit for free trial
#•# §¦~ncompass~@https://www.ncompass.tech/about@ (OpenSource-модели: Llama, Qwen, …): $100 of credit
#•# §¦~novita.ai~@https://novita.ai/model-api/product/llm-api@ (OpenSource-модели): $0.5 credit
Кроме того:
#•# §¦#copilot-#/#gemini-proxy-public# позволяют попробовать соответствующие сервисы-адаптеры, упомянутые выше.
§¦Примечание: #gemini# ~с некоторых пор~@https://developers.googleblog.com/en/gemini-is-now-accessible-from-the-openai-library/@
доступен и через OpenAI API.
#•# §¦#keepass# позволяет держать свои собственные пресеты в базе ~KeePass~@https://keepass.info/@.
§¦Подобным образом можно организовать работу и с другими аналогичными утилитами.
@=
#Примечание#: задача перечислить все существующих сервисы не ставилась, это попросту невозможно,
не говоря о том что каждый день могут появляться новые.
Помимо самостоятельных провайдеров, можно встретить также сервисы не вполне понятного происхождения,
не имеющие даже официального сайта. Такими в списке выше являются #anyai# и #tmrace#.
По причине их неопределённого статуса пользоваться ими следует с осторожностью, и не передавать чувствительные данные!
Подобных сервисов довольно много, некоторые например перечислены тут: ~cool ai stuff!~@https://cas.zukijourney.com/@
@=
Другие разделы справки: [~Основные функции~@Contents@], [~Установка~@Install@], [~Меню выбора конфигурации~@UtilitiesMenu@], [~i~@index@]
@index
$ #Index#
#•# §¦~Ask AI – макрос для взаимодействия с ChatGPT (и другими LLM-сервисами) в FAR~@Contents@
#•# §¦~Работа с пресетами~@Presets@
#•# §¦~Установка~@Install@
#•# §¦Настройка
#•# §¦~Меню выбора конфигурации~@UtilitiesMenu@
#•# §¦Обзор утилит
#•# §¦~Обзор конфигураций~@Providers@
#•# §¦Выбор модели
#•# §¦Обзор провайдеров
#•# §¦Обзор пресетов для сервисов совместимых с OpenAI API