Не могу разобраться с Интеграцией ChatGPT в 1С
Пытаюсь интегрировать чат. Получается какая-то фигня.
Код общего модуля
#Если Сервер Тогда
Функция ОтправитьВопросВChatGPT(ТекстВопроса) Экспорт
Попытка
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Заголовки.Вставить("Authorization", "Bearer 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");
ТелоЗапроса = Новый Структура("prompt, max_tokens", ТекстВопроса, 150);
СтрокаТелаЗапроса = ДанныеВJSON(ТелоЗапроса);
Соединение = Новый HTTPСоединение("api.openai.com", , , , , Истина);
HTTPЗапрос = Новый HTTPЗапрос("/v1/engines/davinci-codex/completions", Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаТелаЗапроса, КодировкаТекста.UTF8);
HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Если HTTPОтвет.КодСостояния = 200 Тогда
ОтветJSON = ДанныеИзJSON(HTTPОтвет.ПолучитьТелоКакСтроку());
Если ОтветJSON.Свойство("choices") Тогда
Возврат ОтветJSON.choices[0].text;
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
Исключение
Возврат Неопределено;
КонецПопытки;
КонецФункции
Функция ДанныеВJSON(Значение, ПараметрыЗаписиJSON = Неопределено, НастройкиСериализации = Неопределено)
ПотокВПамяти = Новый ПотокВПамяти;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПотокВПамяти);
// Если есть параметры записи, то установите их здесь, используя методы объекта ЗаписьJSON. Например:
// ЗаписьJSON.УстановитьФорматирование(Истина);
// ЗаписьJSON.УстановитьФорматСлужебнойИнформации(ФорматСлужебнойИнформацииJSON.БезСлужебнойИнформации);
ЗаписатьJSON(ЗаписьJSON, Значение); // Значение - это структура ТелоЗапроса
ЗаписьJSON.Закрыть();
ПотокВПамяти.УстановитьПозицию(0); // Сбрасываем курсор на начало потока
Результат = ПотокВПамяти.ПолучитьСтроку(); // Получаем результат в виде строки
Возврат Результат;
КонецФункции
Функция ДанныеИзJSON(ДанныеJSON, ИзФайла = Ложь, ПрочитатьВСоответствие = Ложь, ЗначениеПоУмолчанию = Неопределено, ОписаниеОшибки = "")
ЧтениеJSON = Новый ЧтениеJSON;
Если ИзФайла Тогда
ЧтениеJSON.ОткрытьФайл(ДанныеJSON);
Иначе
ЧтениеJSON.УстановитьСтроку(ДанныеJSON);
КонецЕсли;
Попытка
Результат = ПрочитатьJSON(ЧтениеJSON, ПрочитатьВСоответствие);
Исключение
ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Результат = ЗначениеПоУмолчанию;
КонецПопытки;
Возврат Результат;
КонецФункции
#КонецЕсли
Код модуля формы
&НаСервере
Процедура ОтправитьВопросНаСервере()
ТекстВопроса = Объект.Вопрос; // Получите текст из вашего поля ввода
Ответ = ИнтеграцияChatGPT.ОтправитьВопросВChatGPT(ТекстВопроса);// Используйте ранее созданную функцию для отправки вопроса
Если Ответ <> Неопределено Тогда
Объект.Ответ = Ответ; // Установите ответ в текстовое поле для ответа
КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьВопрос(Команда)
ОтправитьВопросНаСервере();
КонецПроцедуры
Код общего модуля
#Если Сервер Тогда
Функция ОтправитьВопросВChatGPT(ТекстВопроса) Экспорт
Попытка
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
Заголовки.Вставить("Authorization", "Bearer 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");
ТелоЗапроса = Новый Структура("prompt, max_tokens", ТекстВопроса, 150);
СтрокаТелаЗапроса = ДанныеВJSON(ТелоЗапроса);
Соединение = Новый HTTPСоединение("api.openai.com", , , , , Истина);
HTTPЗапрос = Новый HTTPЗапрос("/v1/engines/davinci-codex/completions", Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаТелаЗапроса, КодировкаТекста.UTF8);
HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Если HTTPОтвет.КодСостояния = 200 Тогда
ОтветJSON = ДанныеИзJSON(HTTPОтвет.ПолучитьТелоКакСтроку());
Если ОтветJSON.Свойство("choices") Тогда
Возврат ОтветJSON.choices[0].text;
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
Исключение
Возврат Неопределено;
КонецПопытки;
КонецФункции
Функция ДанныеВJSON(Значение, ПараметрыЗаписиJSON = Неопределено, НастройкиСериализации = Неопределено)
ПотокВПамяти = Новый ПотокВПамяти;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПотокВПамяти);
// Если есть параметры записи, то установите их здесь, используя методы объекта ЗаписьJSON. Например:
// ЗаписьJSON.УстановитьФорматирование(Истина);
// ЗаписьJSON.УстановитьФорматСлужебнойИнформации(ФорматСлужебнойИнформацииJSON.БезСлужебнойИнформации);
ЗаписатьJSON(ЗаписьJSON, Значение); // Значение - это структура ТелоЗапроса
ЗаписьJSON.Закрыть();
ПотокВПамяти.УстановитьПозицию(0); // Сбрасываем курсор на начало потока
Результат = ПотокВПамяти.ПолучитьСтроку(); // Получаем результат в виде строки
Возврат Результат;
КонецФункции
Функция ДанныеИзJSON(ДанныеJSON, ИзФайла = Ложь, ПрочитатьВСоответствие = Ложь, ЗначениеПоУмолчанию = Неопределено, ОписаниеОшибки = "")
ЧтениеJSON = Новый ЧтениеJSON;
Если ИзФайла Тогда
ЧтениеJSON.ОткрытьФайл(ДанныеJSON);
Иначе
ЧтениеJSON.УстановитьСтроку(ДанныеJSON);
КонецЕсли;
Попытка
Результат = ПрочитатьJSON(ЧтениеJSON, ПрочитатьВСоответствие);
Исключение
ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
Результат = ЗначениеПоУмолчанию;
КонецПопытки;
Возврат Результат;
КонецФункции
#КонецЕсли
Код модуля формы
&НаСервере
Процедура ОтправитьВопросНаСервере()
ТекстВопроса = Объект.Вопрос; // Получите текст из вашего поля ввода
Ответ = ИнтеграцияChatGPT.ОтправитьВопросВChatGPT(ТекстВопроса);// Используйте ранее созданную функцию для отправки вопроса
Если Ответ <> Неопределено Тогда
Объект.Ответ = Ответ; // Установите ответ в текстовое поле для ответа
КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ОтправитьВопрос(Команда)
ОтправитьВопросНаСервере();
КонецПроцедуры
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот