1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-24 19:49:22 +02:00

OLLAMA: Загрузка выгрузка модели

This commit is contained in:
Anton Titovets
2025-04-09 19:18:37 +03:00
parent 05c5017d87
commit 52ec184f30
7 changed files with 7242 additions and 6986 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -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 @@
КонецПроцедуры
#КонецОбласти

View File

@@ -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ЗагрузкаВыгрузка(Результат, Истина);
КонецПроцедуры
#КонецОбласти
#КонецОбласти

View File

@@ -2330,6 +2330,19 @@
КонецПроцедуры
Процедура Проверка_OllamaЗагрузкаВыгрузка(Знач Результат, Знач Выгрузка) Экспорт
ОжидаетЧто(Результат["model"]).Заполнено();
ОжидаетЧто(Результат["done"]).Равно(Истина);
Если Выгрузка Тогда
ОжидаетЧто(Результат["done_reason"]).Равно("unload");
Иначе
ОжидаетЧто(Результат["done_reason"]).Равно("load");
КонецЕсли;
КонецПроцедуры
Процедура Проверка_OllamaСообщение(Знач Результат, Знач Завершен = Истина) Экспорт
ОжидаетЧто(Результат["model"]).Заполнено();
@@ -2374,9 +2387,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@@ -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 @@
КонецПроцедуры
#КонецОбласти

View File

@@ -2330,6 +2330,19 @@
КонецПроцедуры
Процедура Проверка_OllamaЗагрузкаВыгрузка(Знач Результат, Знач Выгрузка) Экспорт
ОжидаетЧто(Результат["model"]).Заполнено();
ОжидаетЧто(Результат["done"]).Равно(Истина);
Если Выгрузка Тогда
ОжидаетЧто(Результат["done_reason"]).Равно("unload");
Иначе
ОжидаетЧто(Результат["done_reason"]).Равно("load");
КонецЕсли;
КонецПроцедуры
Процедура Проверка_OllamaСообщение(Знач Результат, Знач Завершен = Истина) Экспорт
ОжидаетЧто(Результат["model"]).Заполнено();

View File

@@ -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ЗагрузкаВыгрузка(Результат, Истина);
КонецПроцедуры
#КонецОбласти
#КонецОбласти