Фоновая установка элемента в списке Т9 от ИИ

tormozit Закрыто Высокий

Нужна возможность фоновой отправки запроса к ИИ с последующим выводом результата в список Т9.
Предлагаю в событии ПриПолученииДанныхТ9 добавить параметр "ОтображатьЭлементИИ" типа Булево. Если он включен, то без фильтра сверху списка добавляется неактивный элемент предложения Напарника. Сначала в нем отображается текст "ИИ спит...". Но через 2 секунды или при активации строки пользователем вызывается событие ПриОтправкеЗапросаИИТ9.
Туда скрипт передает URL, тип, заголовки и тело запроса. Турбоконф в отдельном потоке будет отправлять этот запрос и при получении ответа будет вставлять текст в список Т9. Пока запрос выполняется, в элементе списка отображается текст "ИИ думает...".
Если пользователю понравилось начало предложения ИИ, то он может

  • активировать строку предложения ИИ одним нажатием клавиши Up при активной второй строке или клавиши Home в любом месте списка и увидеть в панели описания слова полный текст предложения
  • когда видима строка предложения ИИ, нажать TAB и тогда вставится первый кусок предложения ИИ, а само предложение ИИ отрежет его из своего начала

Пример отображения такой строки:

  1. Пока ждем ответа:
    ИИ: думает...
  2. После получения:
    ИИ: Строка.Контрагент = Справочники... - (в окне описания текущего элемента показываем полный блок кода)

Пример:

Комментарии

tormozit
#1, ред. 28 сентября 2025 13:59

Сделал похожий режим в ИР https://www.hostedredmine.com/issues/1007287


bolsun
#2, 28 сентября 2025 13:55

Еще вариант


bolsun
#3, ред. 28 сентября 2025 13:59

(1) tormozit, добавил в описание пример.


bolsun
#4, 28 сентября 2025 14:36

Еще нужно подумать, разве не сам скрипт должен отправлять запрос к ИИ и возвращать уже готовый результат в подсказку.


tormozit
#5, 28 сентября 2025 15:48

(4) bolsun, Можно и так сделать. Тогда нужно нужно добавить в API функцию для обновления свойств выбранных элементов списка Т9 или же отдельного предложения ИИ.


tormozit
#6, 28 сентября 2025 15:56

(2) bolsun, Далековато глазами водить будет вниз. Но если не часто пользоваться этой подсказкой, но может так даже удобнее будет. К тому же в таком варианте сразу видно много строк предложения как я понял. В то же время, если не часто выбирать предложение ИИ, то плохо что оно будет много места заслонять сразу при открытии списка. Все таки многое при оценке полезности зависит от частоты появления удачной подсказки ИИ. А по моей оценке эта частота менее 20%. С учетом этого я в своей реализации выбрал самый компактный вариант.


bolsun
#7, ред. 28 сентября 2025 16:07

(6) tormozit, смена ИИ спит..., ИИ думает... и результат ИИ слишком отвлекают
Думаю достаточно ИИ думает... сразу показывать, все равно практически сразу статус меняется с ИИ спит на думает.


tormozit
#8, 28 сентября 2025 16:14

(7) bolsun, про смену "ИИ спит"->"ИИ думает" согласен, что соотношение пользы и вреда тут самое низкое. Однако все же я решил сделать так, чтобы пользователю было сразу понятнее, что он может ускорить запрос к ИИ путем активации строки. А сразу автоматически слать запрос вредно по нескольким причинам:

  • избыточная нагрузка на сервер ИИ
  • на подготовку данных для запроса ИИ тоже нужно ряд вычислений сделать, отобрав драгоценное время от задач расчета типа активного слова


bolsun
#9, 28 сентября 2025 16:20

(8) tormozit, я и не буду сразу слать, через какой-то интервал, пока 2 сек сделал, но вроде многовато.


bolsun
#10, 28 сентября 2025 16:48

(8) tormozit, решил проблему отвлекания просто убрав слова спит, думает.
А смену статуса отображаю троеточием.
Получается достаточно ненавязчиво.


bolsun
#11, ред. 28 сентября 2025 16:50

Вообще я бы сделал какой-то переключатель, авто ИИ или по кнопке, т.к. во многих случаях его совсем не нужно будет вызывать автоматически.


bolsun
#12, ред. 28 сентября 2025 16:51

Т.е. открыли подсказку, ИИ на паузе.
Нажали какую-то клавишу (может TAB, еще пока не знаю) ИИ выполнил запрос.
Следующий TAB - вставляет ИИ код.


bolsun
#13, 28 сентября 2025 16:52

И допустим кнопку переключатель режима Авто ИИ вкл. /выкл.


bolsun
#14, 28 сентября 2025 17:06

В ручном режиме ИИ не стартует автоматически.

Нажали Tab, активировалась строка ИИ и пошел запрос.

После выполнения запроса появился полный код, следующий Tab вставляет код.


tormozit
#15, ред. 28 сентября 2025 17:21

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

(14) Да, выглядит годно.


bolsun
#16, ред. 28 сентября 2025 17:26

В общем механизм ИИ я интегрировал в подсказку, теперь нужно решить кто будет отправлять запрос к серверу ИИ, в обработчике вроде для этого есть все что нужно. Он асинхронный, в случае закрытия подсказки или изменения набираемого слова, он будет отменен.

Работать будет аналогично обработчику ПриАктивизацииСтрокиT9


bolsun
#17, 28 сентября 2025 17:29

Но в целом перед этим решением мне нужно посмотреть структуру запроса.


tormozit
#18, ред. 28 сентября 2025 17:40

Я пока не пробовал отправлять HTTP запрос из ОСкрипт. Но думаю что должно получится и оттуда.
В обработчике ПриАктивизацииСтрокиT9ИИ я синхронно отправляю запрос и возвращаю в параметре обработчика текст предложения ИИ. Но важно, чтобы пока выполняется этот обработчик ты не блокировал вызовы ПриАктивизацииСтрокиT9.
По структуре запроса Напарника - это POST с таким минимальным телом
{
"local_context": {
"prefix": "",
"path":"",
"suffix": ""
}
}
Но это малый локальный контекст. Над передачей большого локального и глобального контекста мне еще предстоит работать.


tormozit
#19, ред. 28 сентября 2025 18:16

Еще важный момент - режим продолжения работы с готовым предложением ИИ. У меня он описан.
При нажатии ENTER/TAB на строке предложения выполняется вставка первой строки из его предложения, а окно автодополнения остается открытым, пока в предложении остается текст.
Суть в том, что если пользователь вставил первую строку, то предложение ИИ не сбрасывается и потому сразу должно отображаться и становиться активным при переоткрытии списка подсказки.


bolsun
#20, 28 сентября 2025 20:40

(19) tormozit, т.е. вставка идет построчно, почему не все сразу строки?


tormozit
#21, 28 сентября 2025 21:35

(20) bolsun, потому что чем дальше от первой строки, тем ниже вероятность полезного содержания


tormozit
#22, 30 сентября 2025 08:00

Есть небольшие продвижения по передаче метаданных в Напарника. Но тестировать их сложно без переключения контекста из Турбоконфа.


bolsun
#23, 30 сентября 2025 15:52

(22) tormozit, для доработки скрипта мне нужна актуальная версия Редактор скрипта для TurboConf. т.к. нужно дописать часть кода на OneScript и заодно проверить работу ассистента. Пока ее нет, переключаюсь на другую задачу.


tormozit
#24, 30 сентября 2025 18:32

(23) bolsun, обновил редактор скриптов


bolsun
#25, ред. 01 октября 2025 11:58

(24) tormozit, обработчик и строку для ИИ добавил, но вскрылось несколько проблем:

  1. Все обработчики T9 выстраиваются в очередь (через локер). Но обработчик ИИ нельзя в общую очередь добавлять, т.к. запрос может выполнятся относительно долго (вплоть до таймаута соединения при проблемах со связью).
    Решение одно - обработчик ИИ должен выполнятся без локера.
    Отменить накопленную очередь я могу, но только те обработчики которые еще не ушли в скрипт.
    Вопрос, что произойдет с Адаптером, если 2 обработчика сработают почти одновременно (и например в это время будет выполнятся задача в COM)? COM однопоточный насколько я помню, для этого и делали очередь.


tormozit
#26, ред. 01 октября 2025 12:08

(25) bolsun, COM-сервер (приложение ИР) входящие вызовы сам выстраивает в очередь, т.е. они ждут пока завершатся предыдущие. Поэтому обработчик ИИ в скрипте сделает короткий COM вызов (возможно немного подождет в очереди, освободит COM) и дальше будет ждать ответ от сервера ИИ, не блокируя другие вызовы COM.


bolsun
#27, ред. 01 октября 2025 14:40

  1. Мне не понравился режим вставки построчно из того же окна подсказки, слишком непонятно и перегружено.
    Вместо этого после первой вставки, подсказка откроется в режиме последовательной вставки строк ответа ИИ.

Esc - закроет ее и следующее открытие будет уже в обычном режиме.

Ctrl+Space - также будет переключать на обычный режим из режима вставки строк.

Если начать вводить текст в этом режиме, то подсказка закроется и далее будет вызвана автоматически в обычном режиме (если это нужно)

Пример
Здесь можно будет нажать TAB для вставки первой строки или ENTER для всего фрагмента

Далее подсказка открывается уже в режиме вставки строк.

TAB вставляет следующую сроку и т.д.


tormozit
#28, ред. 01 октября 2025 15:00

(27) bolsun, Такой режим будет более выгодным, если среднее число вставляемых строк из одного предложения ИИ будет >=2. Но у меня оно пока ближе к 1.


bolsun
#29, ред. 01 октября 2025 15:18

(28) tormozit, в таком случае просто закроешь окно, также как ты бы сделал это для подсказки в обычном режиме, которая открылась после вставки первой строки. Либо нажмешь Ctrl+Space для переключения в обычный режим и получения нового ответа ИИ, либо продолжишь набирать код.


bolsun
#30, 01 октября 2025 15:43

Вроде получается удобно


bolsun
#31, 01 октября 2025 16:13

6.5.9405.32542
https://disk.yandex.ru/d/XRPUNWQtrbwBUw

Процедура ПриВыполненииЗапросаИИТ9(Параметры, Отказ, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;	

	Ответ = "Ответ от ИИ";	
	
	Параметры.Ответ = Ответ;
	
КонецПроцедуры


tormozit
#32, ред. 01 октября 2025 18:09

(30) bolsun, У тебя на видео сразу актива строка ИИ. Это вредно. ИИ часто плохо подходящий текст предлагает. Поэтому при открытии - активной должна быть верхняя обычная строка, кроме случая продолжения вставки строки ИИ.


tormozit
#33, 01 октября 2025 19:02

Такой обработчик почему то выдает пустое предложение.

Процедура ПриВыполненииЗапросаИИТ9(Параметры, Отказ, СтандартнаяОбработка) Экспорт
	СтандартнаяОбработка = Ложь;
	Параметры.Ответ = "кук";
КонецПроцедуры


tormozit
#34, 01 октября 2025 19:05

Непонятно как отключить строку ИИ. Сейчас она сильно мешает писать код. Но я бы включал ее временно для тестов.


bolsun
#35, 01 октября 2025 19:30

(33) tormozit, в моей версии все в порядке, возможно уже исправил в ней до этого.


bolsun
#36, ред. 01 октября 2025 21:13

6.5.9405.41192
https://disk.yandex.ru/d/XRPUNWQtrbwBUw

Улучшена надежность вставки через TAB построчно.
Добавлено форматирование вставляемого фрагмента, для вставки корректных отступов.
Добавил переключатель ИИ Вкл./Выкл.
При открытии подсказки активируется следующая за ИИ строка.

API
В обработчике ПриВыполненииЗапросаИИТ9 добавлено свойство

Параметры.ФорматироватьТекст, по умолчанию Истина.
Если Истина, то ТурбоКонф отформатирует фрагмент для вставки строк с правильными отступами. Если Ложь, то будет вставлять так, как это пришло в Ответе.

Параметры.ФорматироватьТекст = Ложь;


bolsun
#37, 01 октября 2025 21:24

6.5.9405.42027
https://disk.yandex.ru/d/XRPUNWQtrbwBUw

  • Исправлено выполнение запроса к ИИ, в случае если строка ИИ отключена.
  • Исправлено добавление строки ИИ, в случае если пользователь уже набрал часть слова.


tormozit
#38, 01 октября 2025 23:10

Перестал обновляться текст типа после выполнения обработчика ПриАктивизацииСтрокиT9.


tormozit
#39, 01 октября 2025 23:40

Пропала панель описания текущего слова


bolsun
#40, 01 октября 2025 23:43

(38) tormozit, (39) tormozit,

Исправлено.
Также исправлено отсутствие панели полного ответа ИИ, при наличии действующего обработчика ПриАктивизацииСтрокиT9 в скриптах.

6.5.9406.3002
https://disk.yandex.ru/d/XRPUNWQtrbwBUw


tormozit
#41, 02 октября 2025 08:37

Единая клавиша ENTER для вставки строки кажется удобнее. В чем ты видишь преимущество использования TAB?


tormozit
#42, ред. 02 октября 2025 09:57

Нажатие TAB сейчас вставляет текущее слово. Выше ты писал что вроде бы должно вставлять предложение ИИ.
Если даже оно будет вставлять слово ИИ, то обычно все таки хочется увидеть полностью первую строку предложения ИИ и только потом вставлять. С учетом этого нажатие ENTER выглядит более удобным.
Как вариант можно пока обе клавиши использовать для вставки строки из окна ИИ.


tormozit
#43, 02 октября 2025 10:59

Нужно при отображении в строке списка отрезать лидирующие непечатные символы предложения ИИ


bolsun
#44, ред. 02 октября 2025 11:53

(41) tormozit, если использовать Enter для вставки только одной строки - это будет нелогично, т.к. нарушает привычное поведение, когда Enter вставляет весь текст (слова, шаблона). TAB же более привычная клавиша для работы с подсказками ИИ в коде. Таким образом появляется возможность как вставить целиком предложение ИИ, если оно нам подходит или же первую строку.


bolsun
#45, ред. 02 октября 2025 11:58

6.5.9406.24821

  • TAB сейчас вставляет первую строку предложения ИИ, даже если текущая строка в списке не является строкой ИИ.
  • Состояние переключателя ИИ теперь запоминается между сеансами работы.

https://disk.yandex.ru/d/XRPUNWQtrbwBUw


bolsun
#46, ред. 02 октября 2025 11:59

Возможно будет полезнее не вставлять сразу строку ИИ по TAB, если она не является текущей, а активировать строку ИИ.


bolsun
#47, 02 октября 2025 12:08

(46) попробовал такой вариант, показался удобнее.


bolsun
#48, 02 октября 2025 12:47

6.5.9406.26427

  • Tab сейчас устанавливает текущей строку ИИ или вставляет первую строку предложения, если она уже является текущей.
  • Исправлена вставка по Enter, когда вставлялась только первая строка предложения без последующего показа подсказки.
  • Лидирующие непечатные символы теперь убираются в представлении строки ИИ.
  • Исправлены различные мелкие ошибки.

https://disk.yandex.ru/d/XRPUNWQtrbwBUw


tormozit
#49, ред. 04 октября 2025 10:03

Прошу оставить вставку предложения ИИ через ENTER построчно, т.е. нажимаю ENTER и вставляется только первая строка предложения ИИ. Напоминаю, что ИИ крайне редко выдает много полезных строк. Полезные обычно 1-2 строки. Остальные приходится удалять тому, кто привык вставлять через ENTER. А постоянно чередовать ENTER/TAB - лишняя затрата внимания.

Вот мой типичный сценарий в случае, когда я предполагаю высокий шанс удачной подсказки ИИ.
Нажал CTRL+Space. Сразу нажал клавишу "Вверх". Дождался текста ИИ. Если он удачный нажал ENTER для вставки первой строки. Если неудачный нажал клавишу "Вниз" и нажал ENTER.


tormozit
#50, ред. 04 октября 2025 09:50

Если возвращается пустая строка
Параметры.Ответ = ""
, то нужно убирать текст "ИИ...". Иначе пользователь продолжает ждать, считая что результат "в пути". А на самом деле ждать уже нет смысла.


tormozit
#51, ред. 04 октября 2025 10:02

Предлагаю убрать задержку вызова ПриВыполненииЗапросаИИТ9, чтобы он вызывался сразу после первого ПриАктивизацииСТрокиТ9. Теперь я не выполняю долгих операций в обработчике ПриВыполненииЗапросаИИТ9.


bolsun
#52, 04 октября 2025 15:58

(50) tormozit, что значит пустой ответ, ИИ не знает его, или его не запрашивали?
Можно изменить название на "ИИ не знает ответ..." или "ИИ нечего предложить", чтобы пользователь не пытался снова его вызывать через TAB.


tormozit
#53, ред. 04 октября 2025 16:09

(52) bolsun, просто пустой (пустая строка). Случается это нередко. Поэтому считаю что в этом случае много текста в его строке выводить плохо, т.к. это будет отвлекать. Думаю достаточно показать пустую строку или что то очень короткое

  • "ИИ." (на мой взгляд оптимальный вариант)
  • "ИИ не знает"
  • "ИИ не понял"
  • "ИИ не нашел"

И уж точно не стоит вставлять в конец "...", т.к. это финальный результат.


bolsun
#54, 04 октября 2025 16:17

(53) tormozit,
ИИ: 🤷‍♂️


bolsun
#55, 04 октября 2025 16:18

ИИ. с одной точкой похож на ИИ...
Сложно различить думает он еще или нет, "ИИ не знает" видимо самое подходящее.
Можно еще ИИ??


tormozit
#56, 04 октября 2025 16:22

(54) bolsun, картинка будет слишком много внимания привлекать.
(55) да, "ИИ не знает" наверное оптимальный вариант


bolsun
#57, 04 октября 2025 16:28

Выглядит забавно


tormozit
#58, ред. 04 октября 2025 16:44

(57) bolsun, такая картинка с одной стороны меньше привлекает внимания чем предложенная выше, но с другой не очень дает понимание что произошло. Ну я по крайней мере не смог там сразу разглядеть что то знакомое. Это мартышка закрывающая глаза?


bolsun
#59, 04 октября 2025 17:12

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


bolsun
#60, 04 октября 2025 17:13

6.5.9408.33899

  • Запрос к ИИ теперь стартует через 300 мс, после открытия подсказки, а не через 1000мс.
  • В случае пустого ответа теперь отображается "ИИ не знает".
  • Ужаты кнопки в подсказке. Минимальная ширина подсказки увеличена с 460 до 480 пикселей.
  • Добавлена всплывающая подсказка при наведении на тип контекста.
  • Исправлено самопроизвольное выделение строки под указателем мыши в момент открытия подсказки или при небольших движениях мышью (менее 5 пикселей).

https://disk.yandex.ru/d/XRPUNWQtrbwBUw


bolsun
#61, 04 октября 2025 17:15

Запрос к ИИ теперь стартует через 300 мс, после открытия подсказки, а не через 1000мс.

Можно думаю сразу стартовать ИИ запрос после открытия (ну или через 100мс), т.к. все равно ближайший обработчик запустится только через 200 мс после открытия окна.


bolsun
#62, 04 октября 2025 17:20

(61) совсем сразу наверное не стоит, вдруг пользователь продолжает текст набирать, а 100-150 мс в самый раз.


tormozit
#63, ред. 04 октября 2025 17:22

(62) bolsun, первый обработчик ПриАктивизацииСтрокиТ9 уже с задержкой (200мс вроде) стартует. Он выполняется в среднем 100мс и дальше только очередь дойдет до обработчика ИИ.


bolsun
#64, ред. 04 октября 2025 17:23

(63) tormozit, так я и предлагаю запускать ИИ обработчик раньше.


tormozit
#65, ред. 04 октября 2025 17:29

(64) bolsun, ну наверное в 200мс обработчик отправки запроса ИИ будет обычно укладываться. Тогда не будет сдвигать старт первого ПриАктивизацииСтрокиТ9. Да, наверное вреда не будет.


tormozit
#66, ред. 04 октября 2025 18:33

(49) tormozit, постоянно жму на автомате ENTER на строке ИИ и вставляется куча мусора, которую приходится удалять.
Обычно, когда я жду ИИ предложения, то стою во второй строке. Когда предложение ИИ появляется, я выбираю из нескольких верхних слов лучшее клавишами Вверх/Вниз и жму ENTER.
А сейчас надо постоянно переключать мозг "Для первой строки жми TAB, а для остальных жми ENTER"


bolsun
#67, 04 октября 2025 18:32

6.5.9408.36788


tormozit
#68, 04 октября 2025 19:01

(67) bolsun, Проверил. Работает.


bolsun
#69, ред. 04 октября 2025 21:15

Забыл написать, в версии 6.5.9408.36788 обработчик ИИ выполняется через 25мс после открытия окна подсказки.


tormozit
#70, ред. 05 октября 2025 13:53

Давай попробуем оставлять строку ИИ наверху, даже если введен фильтр.


bolsun
#71, 05 октября 2025 13:01

(70) tormozit, не понял.


tormozit
#72, ред. 05 октября 2025 13:53

(71) bolsun,
Сделать строку ИИ не зависящей от фильтра, т.е. чтобы она всегда отображалась.


tormozit
#73, ред. 05 октября 2025 14:00

Или попробовать чтобы строка ИИ подчинялась фильтру, но уже равноправно с остальными элементами, если фильтр задан.


bolsun
#74, 05 октября 2025 18:18

6.5.9409.36323
Важно! Заменена английская буква T на русскую в имени обработчика ПриОтправкеЗапросаИИТ9

Добавлен выбор помощника ИИ (скрипта-провайдера который обеспечивает ИИ подсказку). Провайдер обязательно должен быть выбран пользователем, либо он может быть отключен в настройках.

https://disk.yandex.ru/d/XRPUNWQtrbwBUw


bolsun
#75, 05 октября 2025 18:20

Флаги и ключ пока не работают.


bolsun
#76, ред. 05 октября 2025 18:55

6.5.9409.37515

  • Флаги заработали, поле для ключа тоже.

Получить ключ в скрипте

КлючСервиса = ТурбоКонф.ПолучитьЗначениеНастройки("AI_ApiKey");

В настройках ИИ, добавлена кнопка Добавить которая открывает Маркетплейс, в дальнейшем будет сразу открываться раздел со скриптами-провайдерами ИИ.

https://disk.yandex.ru/d/XRPUNWQtrbwBUw


tormozit
#77, 05 октября 2025 19:40

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


tormozit
#78, 05 октября 2025 19:54

(76) bolsun, Проверил. После выбора в настройках провайдером "ИР адаптер" запросы к Напарнику заработали.


bolsun
#79, ред. 05 октября 2025 22:38

6.5.9410.612

  • Добавлена кнопка проверки работоспособности ИИ помощника.
  • Исправлено сбрасывание выбранного провайдера ИИ при перезапуске.
  • В Параметрах обработчиков появилось свойство Тест

Обработчик ПриПолученииОтветаИИТ9 должен вернуть ОК или короткое описание ошибки (код). Полное описание вывести в уведомлении.

Если Параметры.Тест Тогда
		Параметры.Ответ = "OK";
		Возврат;
	КонецЕсли;

//или

Если Параметры.Тест Тогда
		Параметры.Ответ = "Ошибка (500). См. уведомления";
		Возврат;
	КонецЕсли;
  • В обработчик ПриОтправкеЗапросаИИТ9 добавлен параметр Параметры.Таймаут, в сек. (по умолчанию 10 сек)

https://disk.yandex.ru/d/XRPUNWQtrbwBUw


bolsun
#80, 05 октября 2025 23:03

(72) tormozit, непонятно как с этим быть, обновлять ее при каждом изменении строки фильтра? Тогда будет куча запросов генерироваться. Не обновлять, она будет неактуальная. Но мне и самому не хватает конечно, что бы подсказка генерировалась даже с набранной частью слова.


bolsun
#81, 05 октября 2025 23:04

Нужно что-то придумать как пропускать строки из ответа, иногда нужная строка идет не первой, но она есть. Или не нужно добавлять Попытка, а дальше пара правильных строк.
Может Shift+TAB, Shift+Enter.


bolsun
#82, 05 октября 2025 23:05

Особенно часто встречается при генерации полей структур и т.д.


bolsun
#83, 05 октября 2025 23:11

(80) в целом да, пусть покажет предложение на момент открытия подсказки, чтобы не жать постоянно Ctrl+Space.


bolsun
#84, 05 октября 2025 23:16

(83) но получается такое


bolsun
#85, ред. 05 октября 2025 23:20

Видимо нужно обновлять все таки ответ, но при паузе ввода больше 200 мс.
Либо если набранная строка не пустая на момент открытия подсказки, то отправляем запрос только после обработчика ПриАктивизацииСтроки.
Если пустая, то как сейчас.


tormozit
#86, ред. 05 октября 2025 23:24

Думаю не стоит слать запрос ИИ заново при редактировании слова. Это будет слишком большая нагрузка на сервер.
Я имел ввиду попробовать показывать то предложение, которое при открытии вернулось от ИИ.
А если часть слова уже набрана, то видимо нужно отправлять ему запрос без начала слова.


bolsun
#87, 05 октября 2025 23:23

(86) tormozit, на примере видно, что получается чушь.


tormozit
#88, ред. 05 октября 2025 23:28

(87) bolsun, Да, понял. Может тогда оставить строку ИИ вне фильтра и рассчитывать ее без учета введенного начала слова и не активировать автоматически. А при вставке заменять уже введенное начало слова. Да, много сложных вопросов возникает.


bolsun
#89, 05 октября 2025 23:29

(87) tormozit, тогда лучше не отправлять при открытии, но можно будет отправить принудительно по TAB, когда закончил набирать часть слова. В строке написать "ИИ ждет".


bolsun
#90, ред. 05 октября 2025 23:32

(89) например я хочу набрать Результат = Новый Структура;
Набираю Рез открывается подсказка "ИИ ждет TAB".
Нажимаю TAB получаю более релевантную подсказку.


bolsun
#91, ред. 05 октября 2025 23:36

Или еще лучше подсказывать только один раз, в момент первой паузы. Хотя принудительный режим тоже можно оставить.


tormozit
#92, ред. 05 октября 2025 23:48

В EDT напарник обновляет свое предложение при вводе части слова после небольшой паузы (бездействия пользователя, думаю не менее 500мс). Поэтому можно сделать также - после остановки ввода для начала на 1000мс автоматом отправлять запрос к ИИ или принудительно, если пользователь активировал строку ИИ.


tormozit
#93, ред. 05 октября 2025 23:43

Как только пользователь дальше стал печатать, то предложение Напарника надо очищать (но строку в списке оставлять), если оно не подходит фильтру.


bolsun
#94, 06 октября 2025 00:17

Для тестирования нового поведения мне нужна исправленная версия ИР, т.к. сейчас префикс считается неверно.


tormozit
#95, ред. 06 октября 2025 09:25

Сделал в ИР вариант (92-93). Вроде годно получилось. Важный момент - к предложению ИИ дописываю начало слова, чтобы выглядело единообразно с другими элементами списка (не обрезано).
xcazc7O2Aa.mp4


tormozit
#96, ред. 06 октября 2025 09:28

(95) tormozit, Небольшой вред - ИИ дописывает продолжение к любой чуши или опечатке. Это отвлекает немного. Пока думаю как это устранить.


bolsun
#97, 06 октября 2025 12:53

6.5.9410.26603

  • Добавлено обновление строки ИИ через 1сек после неактивности ввода.
  • В Параметры обработчика ПриОтправкеЗапросаИИТ9 добавлены свойства ТекстМодуля, Позиция, СтрокаВвода.

https://disk.yandex.ru/d/XRPUNWQtrbwBUw


tormozit
#98, 06 октября 2025 19:20

(96) tormozit, добавил проверку существования первой переменной, на которую ИИ ссылается. Это отбросило значительную часть его вредных фантазий.


tormozit
#99, ред. 06 октября 2025 19:41

(97) bolsun, каретка стоит в слове Сум<>ма. Помещаю в обработчике ПриПолученииОтветаИИТ9
Параметры.Ответ= "Сумма"
и вижу в списке "СумСумма"
Ожидал увидеть "Сумма".


tormozit
#100, 06 октября 2025 19:59

В режиме продолжения вставки строк ИИ через 1 секунду окно ИИ замещается на окно Т9. Ожидал что окно ИИ останется, пока я не нажму что либо.
CAqo65GKg1.mp4


bolsun
#101, ред. 06 октября 2025 20:07

(99) tormozit, ТК сам дополнит представление об ответе. Отправляй "ма = 0"


tormozit
#102, ред. 06 октября 2025 20:19

(101) bolsun, то порождает лишние проблемы. Например при выводе ошибочных сообщений от сервера ИИ или пустого результата.


bolsun
#103, 06 октября 2025 21:24

(102) tormozit, т.е. ты в ответе сам дополняешь до полного слова?


tormozit
#104, 06 октября 2025 22:27

(103) bolsun, да. Конечно можно это доверить и Турбоконфу, но тогда нужен флаг для управления этим дополнением на стороне Турбоконфа, чтобы можно было и полный текст элемента списка установить в случае ошибки или отсутствия подходящего слова.


bolsun
#105, ред. 07 октября 2025 00:46

(100) @tormozit

6.5.9411.2662

  • Исправлено: В режиме продолжения вставки строк ИИ через 1 секунду окно ИИ замещается на окно Т9.
  • В обработчиках ИИ добавлено свойство Параметры.Фильтр. Теперь каждый провайдер должен сам дополнять ответ ИИ, если это необходимо. Набранное слово перед вставкой, если оно есть, будет удалено.

Процедура ПриПолученииОтветаИИТ9(Параметры, Отказ, СтандартнаяОбработка)
	
	Если Параметры.Тест Тогда		
		
		Если Параметры.КодСостояния = 200 Тогда
			Параметры.Ответ = "OK";
		Иначе
			Параметры.Ответ = "Ошибка: " + Строка(Параметры.КодСостояния) + " см. уведомления.";	
		КонецЕсли;
		
		Возврат;
		
	КонецЕсли;
	
	Сообщить("Ответ ИИ: " + Параметры.ТелоОтвета);
	
	//Если несет чушь, то Параметры.Ответ = Неопределено.
	
	Параметры.Ответ = Параметры.Фильтр + Параметры.ТелоОтвета; //Добавим уже набранное на момент запроса слово.		
	
	Параметры.ФорматироватьТекст = Истина;
	
КонецПроцедуры

https://disk.yandex.ru/d/XRPUNWQtrbwBUw


bolsun
#106, ред. 06 октября 2025 23:51

Можно выводить предложение ИИ курсивом, чтобы отличать от обычной подсказки. Но может это ухудшит читаемость. Обычно инлайн ИИ предложения выводятся курсивом, в подсказке может нет смысла.


bolsun
#107, ред. 06 октября 2025 23:54

(106) но в целом выглядит неплохо


tormozit
#108, 06 октября 2025 23:58

(106) bolsun, думаю курсив слишком усложнит чтение. Может просто картинку особую для этой строки сделать? Т.е. вместо "abc" например "ИИ".


bolsun
#109, 07 октября 2025 00:00

(108) думал об этом, тогда будет ИИ ИИ...


tormozit
#110, ред. 07 октября 2025 00:04

(109) bolsun, ну из представления тогда убрать "ИИ", а все служебные сообщения (не знает, ошибка, думает, спит, ждет) писать курсивом, чтобы было понятно что это не результат генерации. Но тогда нужен будет в параметрах обработчика еще параметр, отвечающий за тип текста.


bolsun
#111, 07 октября 2025 00:23

(110) tormozit, оставим пока как есть.


tormozit
#112, 07 октября 2025 00:30

При изменении фильтра нужно сразу стирать старое слово ИИ. Сейчас оно не стирается в течение 1 секунды.
Ox4oHMuyJk.mp4


bolsun
#113, 07 октября 2025 01:01

(112) tormozit, исправил.
https://disk.yandex.ru/d/XRPUNWQtrbwBUw
6.5.9411.5231


tormozit
#114, 07 октября 2025 07:13

(113) bolsun, Проверил. Исправлено.


tormozit
#115, 07 октября 2025 08:04

ИР адаптер для тестов
RDT.os


tormozit
#116, ред. 07 октября 2025 08:08

Нужно еще сделать режим ручной отправки запроса ИИ, т.е. флажок "Авто отправка запроса" в настройках ИИ, чтобы при его отключении можно было только активацией строки ИИ отправлять запрос.


tormozit
#117, 07 октября 2025 12:03

За время, пока ИИ отвечал, фильтр мог измениться, поэтому предлагаю его тоже передавать в параметрах ПриПолученииОтветаИИТ9, чтобы можно было проверить, подходит ли ответ ИИ под актуальный фильтр.


tormozit
#118, ред. 07 октября 2025 19:30

(76) bolsun, неудобно выполнять проверку соединения с ИИ сервисом, т.к. для сессионного режима (Напарник) сначала нужно выполнить запрос создания сессии и именно в нем сервер проверяет ключ. Этот запрос полностью выполняю сам в обработчике ПриОтправкеЗапросаИИТ9. Поэтому прошу перенести параметр "Тест" туда и добавить параметр для возврата результата теста.


bolsun
#119, 07 октября 2025 20:50

(118) tormozit, ПриОтправкеЗапроса не возвращает ответ, но флаг Тест есть в обоих обработчиках. Поэтому можно установить в первом СтандартнаяОбработка = Ложь, а во втором выполнить проверку.


tormozit
#120, 07 октября 2025 21:04

(119) bolsun, мне это подойдет. Но кажется это слишком неочевидный способ и самому будет тяжело догадаться.


tormozit
#121, 07 октября 2025 21:18

ТурбоКонф.ПолучитьЗначениеНастройки("AI_ApiKey") возвращает хранимый ключ, а не тот который в поле окна настроек. Нужно передавать именно из поля.


bolsun
#122, ред. 07 октября 2025 22:17

(120) tormozit, скорее всего количество провайдеров в обозримом будущем вряд ли будет > 2 (ты и я), поэтому пока оставим так, хотя механизм действительно немного неочевидный.


bolsun
#123, 08 октября 2025 00:16

6.5.9412.3955
https://disk.yandex.ru/d/XRPUNWQtrbwBUw

  • Переделана форма ИИ, ключи теперь разделяются на Ключ помощника (это может быть Напарник или еще какой-либо ключ) и пользовательский ключ, для языковых моделей, если не используется Напарник.
  • Проверка ключа помощника теперь выполняется в отдельном обработчике

Процедура ПриПроверкеПровайдераИИ(Параметры, Отказ, СтандартнаяОбработка)
	
	//Сообщить(Параметры.КлючПомощника);
	
	Параметры.Результат = Истина;
	
	//или
	
	//Параметры.Результат = Ложь;
	//Параметры.ТекстОшибки = "Ошибка 500 (см. уведомления)";	
	
КонецПроцедуры


bolsun
#124, ред. 08 октября 2025 00:25

Ключ LLM ТК тестирует сам, поэтому не нужно этого реализовывать в скрипте.


bolsun
#125, 08 октября 2025 00:28

6.5.9412.4236
https://disk.yandex.ru/d/XRPUNWQtrbwBUw

Исправил несохранение ключа Помощника.

Ключ помощника (Напарника) теперь AI_AssistantApiKey
Ключ сервиса языковой модели AI_ApiKey
Адрес сервера LLM: AI_ServerUrl
Модель AI_Model


tormozit
#126, 08 октября 2025 11:50

(113) bolsun, Забыл явно указать, что если текущее предложение ИИ совпадает с фильтром, то очищать его не нужно и запускать таймер для нового запроса тоже.


tormozit
#127, ред. 08 октября 2025 19:05

(123) bolsun, при проверке соединения получил ошибку и тестовое сообщение "11" в лог выводится. После перезапуска Турбоконфа ошибка повторяется.
ScriptEngine.Machine.TypeConvertionException: {Модуль C:\Portable\TurboConf\user_scripts\RDT.os / Ошибка в строке: 6701 / Значение не является значением объектного типа}
ИДКонфигуратора = Конфигуратор.PID; в ScriptEngine.Machine.Values.GenericValue.AsObject()
в ScriptEngine.Machine.MachineInstance.ResolveProp(Int32 arg)
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
в ScriptEngine.Machine.MachineInstance.ExecuteCode()
в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
в ScriptEngine.Machine.Contexts.ScriptDrivenObject.CallAsFunction(Int32 methodNumber, IValue[] arguments, IValue& retValue)
в TurboConf.HostApplication.HostApplicationForm.ExecuteScript(Script script, Keys ctrl, Keys alt, Keys shift, ScreenForm statusForm, String entryPoint, ScriptOptions options, IVariable[] parameters)

Ссылка скрыта


// см. СобытияМодуль.ПриПроверкеПровайдераИИ
Процедура ПриПроверкеПровайдераИИ(Параметры, Отказ, СтандартнаяОбработка)
	Сообщить(11);
	ПолеТекстаПрограммы = ПолеТекстаПрограммыИзКэша();
	Если ПолеТекстаПрограммы = Неопределено Тогда
		Отказ = Истина;
		Возврат;
	КонецЕсли;  
	КлючСервиса = ТурбоКонф.ПолучитьЗначениеНастройки("AI_AssistantApiKey");
	РезультатСоединения = ПолеТекстаПрограммы.СоединениеНапарника(КлючСервиса, Истина);
	Если ТипЗнч(РезультатСоединения) = Тип("Строка") Тогда
		Параметры.ТекстОшибки = РезультатСоединения;
		Параметры.Результат = Ложь;
	Иначе
		Параметры.Результат = Истина;
	КонецЕсли; 
КонецПроцедуры


bolsun
#128, ред. 08 октября 2025 19:41

(127) tormozit, то что такая ошибка - логично, т.к. никакого конфигуратора в данный момент нет, проверяй что объект Конфигуратор заполнен.


bolsun
#129, ред. 08 октября 2025 19:48

6.5.9412.38698

https://disk.yandex.ru/d/XRPUNWQtrbwBUw

(126) это исправил

  • Теперь в шапке скрипта, необходимо зарегистрировать ассистента

//@ai_assistant ИмяАссистента Представление в списке

//@ai_assistant ИРАдаптер ИР Адаптер (с сервисом "Напарник 1С")

Также можно зарегистрировать несколько вариантов ассистента

//@ai_assistant ИРАдаптер_Напарник ИР Адаптер (с сервисом "Напарник 1С")
//@ai_assistant ИРАдаптер_LLM ИР Адаптер (свой ключ сервиса LLM)

Выбранного ассистента можно получить в настройке AI_Assistant


tormozit
#130, ред. 08 октября 2025 19:51

(128) bolsun, не понял. Почему нет конфигуратора? В соседних обработчиках он есть.


bolsun
#131, 08 октября 2025 19:57

(130) tormozit, потому что вызов происходит из окна Настройки ТК, а не из окна конфигуратора.


tormozit
#132, ред. 08 октября 2025 20:38

(131) bolsun, у меня код заполнения параметров сессии ИИ находится в расширении ИР, которое сидит в конкретной базе. Кроме того еще я обеспечиваю возможность использования ключа их хранилища ИР (единое для компьютера), если в настройках Турбоконфа ключ не указан. Как мне подключиться к приложению ИР оттуда?


tormozit
#133, ред. 08 октября 2025 20:38

(129) bolsun, исправлено не полностью. Например ввожу "Сообщ" и затем "и" и отправляется запрос к ИИ, а нужно чтобы не отправлялся.
6aMFBrv9cL.mp4


bolsun
#134, 08 октября 2025 20:41

(132) tormozit, конфигуратор вообще может быть не запущен или еще не подключен к ТК, или клиент ИР еще не запущен. Пользователь мог только установить скрипт ИР и полезть настраивать ИИ. Что делать в этом случае?


bolsun
#135, 08 октября 2025 20:42

Сделай проверку прямо в скрипте, кода там немного.


tormozit
#136, ред. 08 октября 2025 21:07

(135) bolsun, Напарник не позволяет одновременно 2 сессии под одним ключом с разных устройств. Хеш устройства рассчитывается кодом ИР. Если я буду считать хеш другим алгоритмом при проверке, то в течение минуты потом не будет создаваться сессия Напарника, т.к. ИР будет другой хеш устройства отправлять.


tormozit
#137, 08 октября 2025 21:09

(134) bolsun, Если окна конфигуратора нет, то я буду выдавать ошибку "Требуется активное окно конфигуратора в разрешенным приложением ИР".


bolsun
#138, 08 октября 2025 21:13

(137) tormozit, у тебя же есть список запущенных процессов с открытым клиентом, почему ты не можешь запросить оттуда? Я не знаю в каких конфигураторах подключен ИР. Пользователь вызывает настройки обычно из панели задач.


bolsun
#139, ред. 08 октября 2025 21:16

Я только могу передать ИД окна конфигуратора или PID из которого вызвали окно настроек в обработчик. Если его вызывали из окна конфигуратора. Но думаю, тебе проще из активных клиентов выполнить проверку.


bolsun
#140, 08 октября 2025 21:17

(133) tormozit, не воспроизводится, нужен лог.


tormozit
#141, 08 октября 2025 23:13

(140) bolsun, зависит от текста модуля. Clip_769754.html


bolsun
#142, 08 октября 2025 23:36

(141) tormozit, исправил.
6.5.9413.2716
https://disk.yandex.ru/d/XRPUNWQtrbwBUw


tormozit
#143, 09 октября 2025 00:06

(142) bolsun, Я был невнимателен. На моем видео ИИ предлагал "СообщЕ", а я ввел "СообщИ". Поэтому ошибки не было. Турбоконф тут работал и работает корректно.


tormozit
#144, ред. 09 октября 2025 08:45

(138) bolsun, сделал через свой список конфигураторов. Но в случае неудачи возвращаю длинный текст
Сначала откройте конфигуратор и подключите приложение ИР
Он не умещается на форме подключения. Картинку не смог вставить, т.к. сайт выдает ошибку вставки картинки.


tormozit
#145, 09 октября 2025 12:14

(129) bolsun, ключ возвращается пустой через
ТурбоКонф.ПолучитьЗначениеНастройки("AI_AssistantApiKey")
в обработчике ПриПроверкеПровайдераИИ. В других не пробовал.


bolsun
#146, 09 октября 2025 12:29

(145) tormozit, ключ еще может быть не применен в это время используй ключ из Параметров как в примере (123)


bolsun
#147, 09 октября 2025 16:56

6.5.9413.33641
https://disk.yandex.ru/d/XRPUNWQtrbwBUw

! Обработчик проверки переименован - теперь ПриПроверкеПомощникаИИ
! Заголовок для добавления помощника теперь Json

//@ai_assistant {"Name": "ИРАдаптер", "DisplayName": "ИР Адаптер", "RequiresAssitantKey": "true", "RequiresApiKey": "false", "Hint": "Для работы необходим ключ сервиса \"Напарник 1С\""}

Поле для сообщения проверки расширено, при выборе помощника в него помещается подсказка Hint (необязательно).


tormozit
#148, ред. 09 октября 2025 17:09

Сломалась построчная вставка предложения ИИ. Вставляет всегда первую строку исходного текста, а не остатка.
jh5T5eztSO.mp4

Процедура ДополнитьПараметры() Экспорт
	ДоступныеПараметры = ЦентрОперацийПовтИсп.ДоступныеПараметрыЭлементовЦентраОпераций();
	
КонецПроцедуры


tormozit
#149, 09 октября 2025 17:35

Наблюдаю задержку 1 секунда, если открываю окно подсказки после введенной части слова через CTRL+Space. Ожидал что ее не будет аналогично открытию окна без введенного начала слова.


bolsun
#150, 09 октября 2025 18:09

(148) tormozit, не воспроизводится. Нужен лог.


tormozit
#151, 09 октября 2025 18:27

(150) bolsun, обрати внимание, что первая строка предложения пустая, вторая строка на том же уровне что и текущая, а третья (первая проблемная) - смещена 1 уровень.


bolsun
#152, 09 октября 2025 18:28

(151) tormozit, пришли мне этот ответ в виде текста.


tormozit
#153, ред. 09 октября 2025 18:46

Не смог в точности повторить, но тут примерно похожий текст и тоже некорректно вставляется, но немного по-другому.

Для Каждого ДоступныйПараметр Из ДоступныеПараметры Цикл
		Если ЭтотОбъект.Параметры.Найти(ДоступныйПараметр.Параметр) = Неопределено Тогда
			НовыйПараметр = ЭтотОбъект.Параметры.Добавить();
			НовыйПараметр.Параметр = ДоступныйПараметр.Параметр;
			НовыйПараметр.Значение = ДоступныйПараметр.ЗначениеПоУмолчанию;
		КонецЕсли;
	КонецЦикла;

Ссылка скрыта


tormozit
#154, ред. 09 октября 2025 19:26

(147) bolsun, проверил. Теперь проверка подключения работает и текст ошибка/подсказки видно, если окно сделать пошире.


tormozit
#155, 09 октября 2025 19:41

В окне Т9 перестают работать клавиши навигации и выбора, если в обработчике ПриОтправкеЗапросаИИТ9 установить СтандартнаяОбработка = Ложь;


tormozit
#156, 09 октября 2025 19:43

(155) tormozit, И еще промаргивает какое то окно. Похоже оно и забирает фокус.


bolsun
#157, 09 октября 2025 21:28

(153) tormozit, проблема возникает из-за обработчика ПриВыбореЗначения, он совсем не должен вызываться для строки ИИ. Уберу вызов.


tormozit
#158, ред. 09 октября 2025 21:34

(157) bolsun, Для первой строки то он должен вызываться, т.к. там могут быть сложные сценарии наложения текста и я их планирую реализовать. С первой строкой проблемы не было.
А для второй и далее ты его тоже вызывал? Там же другое окошко.


bolsun
#159, 09 октября 2025 21:49

(158) tormozit, почему ты не можешь просто модифицировать ответ, как нужно для вставки? Какие сложные сценарии могут быть, которые не решить заменой введенного слова?


bolsun
#160, 09 октября 2025 21:51

Также текущее поведение мешает моему помощнику, т.к. вмешивается в процесс вставки.


tormozit
#161, ред. 09 октября 2025 22:45

(159) bolsun, Потому что блокирующие тяжелые вычисления лучше делать тогда, когда они уже точно нужны. А если делать их после каждого ответа Напарника, то они будут напрасно отнимать время у других более полезных расчетов в очереди вызовов COM.


tormozit
#162, 09 октября 2025 22:26

(160) bolsun, думаю было бы логичным вызывать обработчик ПриВыбореЗначения для строки ИИ из скрипта только в случае, если он же ее и добавил.


tormozit
#163, 09 октября 2025 22:38

(157) bolsun, в чем заключается некорректное воздействие обработчика ПриВыбореЗначения?


bolsun
#164, 09 октября 2025 22:40

(163) tormozit, ты отключаешь флаг СтандартнаяОбработка


tormozit
#165, 09 октября 2025 22:42

(164) bolsun, как опознать строку ИИ? В ИР я в ее тип помещаю "ИИ".


bolsun
#166, ред. 09 октября 2025 22:46

(165) tormozit, в текущей версии - никак, могу присылать также в Типе. Могу сделать флаг ИИ.


tormozit
#167, 09 октября 2025 22:47

(166) bolsun, давай лучше флаг. И я пока сделаю возврат из обработчика, если он передан.


bolsun
#168, 09 октября 2025 22:55

(167) tormozit, проще я могу пока отключить вызов обработчика для строки ИИ, потом уже разберемся с этим, когда более важные дела сделаем.


tormozit
#169, 09 октября 2025 22:56

(168) bolsun, хорошо


tormozit
#170, 09 октября 2025 22:59

(155) tormozit, тогда из видимых мне проблем остается только эта.
Прикладываю скрипт для тестов
RDT.os


bolsun
#171, 09 октября 2025 22:59

(155) tormozit, не воспроизводится, нужен ролик и лог.


bolsun
#172, 09 октября 2025 23:00

(170) tormozit, проверю на этой версии скрипта.


tormozit
#173, 09 октября 2025 23:01

(172) bolsun, Поясню тест. Надо ввести в окне настроек некорректный ключ и нажать ОК. Затем надо вызвать подсказку в модуле.


bolsun
#174, 09 октября 2025 23:04

(173) tormozit, это норма? Ключ 123


bolsun
#175, 09 октября 2025 23:04

(173) tormozit, так или иначе не воспроизводится, нужен лог и ролик.


bolsun
#176, ред. 09 октября 2025 23:07

(174) bolsun, может потому что у меня ключ задан в ИР? Тогда неплохо бы было сообщить об этом в окне результата теста.


tormozit
#177, 09 октября 2025 23:08

(176) bolsun, да, в старой версии ИР перекрытие ключа немного по-другому работает. Поэтому очисть его там. В новой версии будет более логично работать.


bolsun
#178, 09 октября 2025 23:09

(177) tormozit, я очищаю ,но результат все равно успешный.


bolsun
#179, 09 октября 2025 23:09

(177) tormozit, скинь свою версию ИР.


bolsun
#180, 09 октября 2025 23:12

(178) очистил, после Применить, ключ вроде исчез. Но проблема не воспроизводится.


tormozit
#181, ред. 09 октября 2025 23:41

(156) tormozit, кажется это было окно настроек Турбоконфа, оно появлялось на мгновение и лишь рамка успевала нарисоваться. Подозреваю там какой то возможно случайно залипший обработчик завершения выбора/ответа срабатывал. Сейчас повторил те же действия и не воспроизвелось.


tormozit
#182, 09 октября 2025 23:19

(179) bolsun, ИР 7.97.0e.cfe


bolsun
#183, 09 октября 2025 23:25

6.5.9414.2444
https://disk.yandex.ru/d/XRPUNWQtrbwBUw

  • Отключил вызов обработчика ПриВыбореЗначенияТ9 для строки ИИ.


tormozit
#184, ред. 09 октября 2025 23:47

Хотя мне и удалось сделать вывод ошибки соединения в список в текущем виде, но получилось грязновато - за один логический вызов ИИ я делаю 2 попытки соединения - 1-й раз в ПриОтправкеЗапросаИИТ9, чтобы сбросить стандартную обработку и 2-й раз в ПриПолученииОтветаИИТ9, чтобы уже вывести текст ошибки в список. Каждый раз я делаю лишнюю попытку соединения из-за отсутствия возможности передать ошибку между обработчиками.

// см. СобытияМодуль.ПриОтправкеЗапросаИИТ9
Процедура ПриОтправкеЗапросаИИТ9(Параметры, Отказ, СтандартнаяОбработка) Экспорт
	ПолеТекстаПрограммы = ПолеТекстаПрограммыИзКэша();
	Если Ложь
		Или ПолеТекстаПрограммы = Неопределено
		Или Не ПолеТекстаПрограммы.ЛиАвтодополнениеНапарника() 
	Тогда
		Отказ = Истина;
		Возврат;
	КонецЕсли;
	Позиция = Параметры.Позиция + 1;
	Если Позиция <> ПолеТекстаПрограммы.мПозицияВТексте Тогда
		ПолеТекстаПрограммы.УстановитьТекст(Параметры.ТекстМодуля,,,, , ПолеТекстаПрограммы.мИмяМодуля, Позиция, Позиция);
	КонецЕсли;
	КлючСервиса = ТурбоКонф.ПолучитьЗначениеНастройки("AI_AssistantApiKey");
	РезультатСоединения = ПолеТекстаПрограммы.СоединениеНапарника(КлючСервиса);
	Если ТипЗнч(РезультатСоединения) = Тип("Строка") Тогда
		СтандартнаяОбработка = Ложь;
		Возврат;
	КонецЕсли;
	Параметры.Адрес = "https://code.1c.ai/api/v1/complete";
	Параметры.ТелоЗапроса = ПолеТекстаПрограммы.ТелоЗапросаАвтодополненияНапарника();
	УстановитьЗаголовкиНапарника(ПолеТекстаПрограммы, Параметры.Заголовки);
	Параметры.Заголовки.Удалить("Content-Type"); // Если не удалить, будет ошибка https://turboconf.ru/Tasks/10541
КонецПроцедуры 

// см. СобытияМодуль.ПриПолученииОтветаИИТ9
Процедура ПриПолученииОтветаИИТ9(Параметры, Отказ, СтандартнаяОбработка)
	ПолеТекстаПрограммы = ПолеТекстаПрограммыИзКэша();
	Если ПолеТекстаПрограммы = Неопределено Тогда
		Отказ = Истина;
		Возврат;
	КонецЕсли;
	Если Параметры.КодСостояния = Неопределено Тогда
		КлючСервиса = ТурбоКонф.ПолучитьЗначениеНастройки("AI_AssistantApiKey");
		Параметры.Ответ = ПолеТекстаПрограммы.СоединениеНапарника(КлючСервиса);
		Возврат;
	КонецЕсли;
	Сообщить("Первая строка ответа Напарника: " + СтрПолучитьСтроку(Параметры.ТелоОтвета, 1));
	Если Параметры.КодСостояния = 401 Тогда
		ПолеТекстаПрограммы.СоединениеНапарника(, Истина);
		Возврат;
	КонецЕсли;
	Если Параметры.КодСостояния = 200 Тогда
		ТекстОбновленияНапарника = "";
		Параметры.Ответ = ПолеТекстаПрограммы.ОбработатьОтветНапарника(Параметры.ТелоОтвета, ТекстОбновленияНапарника);
		//Параметры.ФорматироватьТекст = Истина;
		ТурбоКонф.СохранитьЗначениеСеанса("ТекстОбновленияНапарника", ТекстОбновленияНапарника);
	Иначе
		Параметры.Ответ = "Ошибка " + Параметры.КодСостояния + ": " + Параметры.ТелоОтвета;
	КонецЕсли;
КонецПроцедуры


bolsun
#185, 09 октября 2025 23:49

(184) tormozit, почему просто не вызвать исключение?


tormozit
#186, ред. 09 октября 2025 23:53

(185) bolsun, потому что мне непонятна реакция Турбоконфа на него в этой ситуации. В списке будет сразу видно и не навязчиво. И в ИР я сделал также.


bolsun
#187, 09 октября 2025 23:53

(186) tormozit, это же не нужно каждый раз делать?

РезультатСоединения = ПолеТекстаПрограммы.СоединениеНапарника(КлючСервиса);
Если ТипЗнч(РезультатСоединения) = Тип("Строка") Тогда
СтандартнаяОбработка = Ложь;
Возврат;
КонецЕсли;


tormozit
#188, 09 октября 2025 23:54

(187) bolsun, нужно делать каждый раз для возможной переустановки соединения (пересоздания сессии).


bolsun
#189, ред. 10 октября 2025 12:49

(188) tormozit, у нас есть уже подходящий для этого обработчик ПриПроверкеАссистента, я могу вызывать его перед ПриОтправкеЗапроса и проверять Результат и в нем есть ТекстОшибки, который я могу вывести в строку ИИ при результате Ложь.


bolsun
#190, 15 октября 2025 22:54

6.5.9420.1159

Таймаут ожидания ответа сервера по умолчанию уменьшен до 5 сек.


tormozit
#191, 16 октября 2025 00:07

По логам сниффера я 2 раза видел ответ чуть больше 5 сек. Но в реальной работе столько ждать человек врядли будет, но для экспериментов/исследований может стоит сделать побольше - 10 сек.


bolsun
#192, ред. 16 октября 2025 00:12

(191) tormozit, изменен параметр по умолчанию, 10 сек- точно обычный пользователь не будет ждать, устанавливай параметр Таймаут в обработчике, тот который нужно.


bolsun
#193, ред. 16 октября 2025 15:44

6.5.9420.31777
! В обработчике ПриПроверкеПомощникаИИ

Параметры.ТекстОшибки теперь Параметры.Текст //Можно вывести любой текст пользователю (например дальнейшие действия, лимит и т.д.)

	Параметры.Результат = Истина;
	Параметры.Текст = Результат.ТелоОтвета;

https://disk.yandex.ru/d/XRPUNWQtrbwBUw


tormozit
#194, 16 октября 2025 18:48

(193) bolsun, учтено в ИР адаптере 2.35


bolsun
#195, 16 октября 2025 22:34

Тестовая версия для разработчиков вышла, тему закрываю, далее уже предметные заявки.
bolsun изменил статус на Закрыто


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера