You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-24 19:49:22 +02:00
OLLAMA: Загрузка выгрузка модели
This commit is contained in:
13978
service/dictionaries/en.json
vendored
13978
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
69
src/ru/OInt/core/Modules/OPI_Ollama.os
vendored
69
src/ru/OInt/core/Modules/OPI_Ollama.os
vendored
@@ -203,6 +203,74 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСМоделями
|
||||
|
||||
// Загрузить модель в память
|
||||
// Загружает выбранную модель в оперативную память
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Load a model](@github.com/ollama/ollama/blob/main/docs/api.md#load-a-model)
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - URL сервера Ollama - url
|
||||
// Модель - Строка - Имя модели - model
|
||||
// Период - Число - Время удержания модели в памяти в секундах - keep
|
||||
// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ЗагрузитьМодельВПамять(Знач URL, Знач Модель, Знач Период = 300, Знач ДопЗаголовки = "") Экспорт
|
||||
|
||||
ДополнитьURL(URL, "api/generate");
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("keep_alive", Период, "Число" , Параметры);
|
||||
|
||||
ОбработатьЗаголовки(ДопЗаголовки);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, ДопЗаголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Выгрузить модель из памяти
|
||||
// Выгружает выбранную модель из памяти
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Unload a model](@github.com/ollama/ollama/blob/main/docs/api.md#unload-a-model)
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - URL сервера Ollama - url
|
||||
// Модель - Строка - Имя модели - model
|
||||
// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ВыгрузитьМодельИзПамяти(Знач URL, Знач Модель, Знач ДопЗаголовки = "") Экспорт
|
||||
|
||||
ДополнитьURL(URL, "api/generate");
|
||||
|
||||
Параметры = Новый Структура;
|
||||
Параметры.Вставить("keep_alive", 0);
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("model", Модель, "Строка", Параметры);
|
||||
|
||||
ОбработатьЗаголовки(ДопЗаголовки);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, ДопЗаголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ДополнитьURL(URL, Знач Путь)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||
@@ -238,4 +306,5 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
41
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
41
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@@ -2576,6 +2576,8 @@
|
||||
|
||||
Ollama_ПолучитьОтвет(ПараметрыТеста);
|
||||
Ollama_ПолучитьОтветВКонтексте(ПараметрыТеста);
|
||||
Ollama_ЗагрузитьМодельВПамять(ПараметрыТеста);
|
||||
Ollama_ВыгрузитьМодельИзПамяти(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -20523,6 +20525,45 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Ollama_ЗагрузитьМодельВПамять(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["Ollama_URL"];
|
||||
Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama
|
||||
|
||||
Модель = "tinyllama";
|
||||
Период = 500;
|
||||
|
||||
ДопЗаголовки = Новый Соответствие;
|
||||
ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен));
|
||||
|
||||
Результат = OPI_Ollama.ЗагрузитьМодельВПамять(URL, Модель, Период, ДопЗаголовки);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьМодельВПамять", "Ollama");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_OllamaЗагрузкаВыгрузка(Результат, Ложь);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Ollama_ВыгрузитьМодельИзПамяти(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["Ollama_URL"];
|
||||
Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama
|
||||
|
||||
Модель = "tinyllama";
|
||||
|
||||
ДопЗаголовки = Новый Соответствие;
|
||||
ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен));
|
||||
|
||||
Результат = OPI_Ollama.ВыгрузитьМодельИзПамяти(URL, Модель, ДопЗаголовки);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыгрузитьМодельИзПамяти", "Ollama");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_OllamaЗагрузкаВыгрузка(Результат, Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -2330,6 +2330,19 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_OllamaЗагрузкаВыгрузка(Знач Результат, Знач Выгрузка) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["model"]).Заполнено();
|
||||
ОжидаетЧто(Результат["done"]).Равно(Истина);
|
||||
|
||||
Если Выгрузка Тогда
|
||||
ОжидаетЧто(Результат["done_reason"]).Равно("unload");
|
||||
Иначе
|
||||
ОжидаетЧто(Результат["done_reason"]).Равно("load");
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_OllamaСообщение(Знач Результат, Знач Завершен = Истина) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["model"]).Заполнено();
|
||||
@@ -2374,9 +2387,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@@ -203,6 +203,74 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область РаботаСМоделями
|
||||
|
||||
// Загрузить модель в память
|
||||
// Загружает выбранную модель в оперативную память
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Load a model](@github.com/ollama/ollama/blob/main/docs/api.md#load-a-model)
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - URL сервера Ollama - url
|
||||
// Модель - Строка - Имя модели - model
|
||||
// Период - Число - Время удержания модели в памяти в секундах - keep
|
||||
// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ЗагрузитьМодельВПамять(Знач URL, Знач Модель, Знач Период = 300, Знач ДопЗаголовки = "") Экспорт
|
||||
|
||||
ДополнитьURL(URL, "api/generate");
|
||||
|
||||
Параметры = Новый Структура;
|
||||
OPI_Инструменты.ДобавитьПоле("model" , Модель, "Строка", Параметры);
|
||||
OPI_Инструменты.ДобавитьПоле("keep_alive", Период, "Число" , Параметры);
|
||||
|
||||
ОбработатьЗаголовки(ДопЗаголовки);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, ДопЗаголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Выгрузить модель из памяти
|
||||
// Выгружает выбранную модель из памяти
|
||||
//
|
||||
// Примечание:
|
||||
// Метод в документации API: [Unload a model](@github.com/ollama/ollama/blob/main/docs/api.md#unload-a-model)
|
||||
//
|
||||
// Параметры:
|
||||
// URL - Строка - URL сервера Ollama - url
|
||||
// Модель - Строка - Имя модели - model
|
||||
// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп заголовки запроса, если необходимо - headers
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие Из КлючИЗначение - Результат обработки
|
||||
Функция ВыгрузитьМодельИзПамяти(Знач URL, Знач Модель, Знач ДопЗаголовки = "") Экспорт
|
||||
|
||||
ДополнитьURL(URL, "api/generate");
|
||||
|
||||
Параметры = Новый Структура;
|
||||
Параметры.Вставить("keep_alive", 0);
|
||||
|
||||
OPI_Инструменты.ДобавитьПоле("model", Модель, "Строка", Параметры);
|
||||
|
||||
ОбработатьЗаголовки(ДопЗаголовки);
|
||||
|
||||
Ответ = OPI_Инструменты.Post(URL, Параметры, ДопЗаголовки);
|
||||
|
||||
Возврат Ответ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ДополнитьURL(URL, Знач Путь)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(URL);
|
||||
@@ -238,4 +306,5 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -2330,6 +2330,19 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_OllamaЗагрузкаВыгрузка(Знач Результат, Знач Выгрузка) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["model"]).Заполнено();
|
||||
ОжидаетЧто(Результат["done"]).Равно(Истина);
|
||||
|
||||
Если Выгрузка Тогда
|
||||
ОжидаетЧто(Результат["done_reason"]).Равно("unload");
|
||||
Иначе
|
||||
ОжидаетЧто(Результат["done_reason"]).Равно("load");
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_OllamaСообщение(Знач Результат, Знач Завершен = Истина) Экспорт
|
||||
|
||||
ОжидаетЧто(Результат["model"]).Заполнено();
|
||||
|
@@ -2576,6 +2576,8 @@
|
||||
|
||||
Ollama_ПолучитьОтвет(ПараметрыТеста);
|
||||
Ollama_ПолучитьОтветВКонтексте(ПараметрыТеста);
|
||||
Ollama_ЗагрузитьМодельВПамять(ПараметрыТеста);
|
||||
Ollama_ВыгрузитьМодельИзПамяти(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -20523,6 +20525,45 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Ollama_ЗагрузитьМодельВПамять(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["Ollama_URL"];
|
||||
Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama
|
||||
|
||||
Модель = "tinyllama";
|
||||
Период = 500;
|
||||
|
||||
ДопЗаголовки = Новый Соответствие;
|
||||
ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен));
|
||||
|
||||
Результат = OPI_Ollama.ЗагрузитьМодельВПамять(URL, Модель, Период, ДопЗаголовки);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ЗагрузитьМодельВПамять", "Ollama");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_OllamaЗагрузкаВыгрузка(Результат, Ложь);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Ollama_ВыгрузитьМодельИзПамяти(ПараметрыФункции)
|
||||
|
||||
URL = ПараметрыФункции["Ollama_URL"];
|
||||
Токен = ПараметрыФункции["Ollama_Token"]; // Авторизация - не часть API Ollama
|
||||
|
||||
Модель = "tinyllama";
|
||||
|
||||
ДопЗаголовки = Новый Соответствие;
|
||||
ДопЗаголовки.Вставить("Authorization", СтрШаблон("Bearer %1", Токен));
|
||||
|
||||
Результат = OPI_Ollama.ВыгрузитьМодельИзПамяти(URL, Модель, ДопЗаголовки);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ВыгрузитьМодельИзПамяти", "Ollama");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_OllamaЗагрузкаВыгрузка(Результат, Истина);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
Reference in New Issue
Block a user