1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2026-05-06 21:04:14 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot)
2025-06-13 08:51:43 +03:00
parent 9440fd291f
commit 76f430c217
33 changed files with 9138 additions and 8299 deletions
+4
View File
@@ -1959,6 +1959,10 @@ def test_openai(){
powershell encoding: 'UTF-8', script:'./oint.exe openai CreateTranscription --url "test" --token "test" --model "test" --audio "test" --type "test" --options "test" --headers "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe openai GetModelList --url "test" --token "test" --headers "test" --debug --test '
}
}
+4
View File
@@ -1959,6 +1959,10 @@ def test_openai(){
powershell encoding: 'UTF-8', script:'./oint.exe openai СоздатьТранскрипцию --url "test" --token "test" --model "test" --audio "test" --type "test" --options "test" --headers "test" --debug --test '
}
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
powershell encoding: 'UTF-8', script:'./oint.exe openai ПолучитьСписокМоделей --url "test" --token "test" --headers "test" --debug --test '
}
}
+4
View File
@@ -0,0 +1,4 @@
{
"URL": "https://api.athenaeum.digital:1122/",
"Token": "sk-or-vv-c5884ebe9f13fb143194bb07ecb..."
}
+4
View File
@@ -0,0 +1,4 @@
URL = "https://api.athenaeum.digital:1122/";
Token = "sk-or-vv-c5884ebe9f13fb143194bb07ecb...";
Result = OPI_OpenAI.GetModelList(URL, Token);
+3 -2
View File
@@ -1,8 +1,9 @@
URL = "https://api.athenaeum.digital:1122/";
Token = "sk-or-vv-c5884ebe9f13fb143194bb07ecb...";
File = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Path or Binary Data
FileName = "picture4.png";
File = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Path or Binary Data
FileName = StrTemplate("%1.png", String(New UUID()));
Destination = "assistants";
Result = OPI_OpenAI.UploadFile(URL, Token, FileName, File, Destination);
+3 -2
View File
@@ -41,8 +41,9 @@ Parameters with Binary data type can also accept file paths on disk and URLs
URL = "https://api.athenaeum.digital:1122/";
Token = "sk-or-vv-c5884ebe9f13fb143194bb07ecb...";
File = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Path or Binary Data
FileName = "picture4.png";
File = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Path or Binary Data
FileName = StrTemplate("%1.png", String(New UUID()));
Destination = "assistants";
Result = OPI_OpenAI.UploadFile(URL, Token, FileName, File, Destination);
+45
View File
@@ -0,0 +1,45 @@
---
sidebar_position: 1
description: Get model list and other functions to work with OpenAI in the Open Integration Package, a free open-source integration library for 1C:Enterprise 8, OneScript and CLI
keywords: [1C, 1С, 1С:Enterprise, 1С:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, OpenAI]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get model list
Receives a list of available models
`Function GetModelList(Val URL, Val Token, Val AdditionalHeaders = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| URL | --url | String | ✔ | OpenAI server URL |
| Token | --token | String | ✔ | OpenAI authorization token |
| AdditionalHeaders | --headers | Map Of KeyAndValue | ✖ | Additional request headers, if necessary |
Returns: Map Of KeyAndValue - Processing result
<br/>
:::tip
Method at API documentation: [List models](https://platform.openai.com/docs/api-reference/models/list)
:::
<br/>
```bsl title="1C:Enterprise/OneScript code example"
URL = "https://api.athenaeum.digital:1122/";
Token = "sk-or-vv-c5884ebe9f13fb143194bb07ecb...";
Result = OPI_OpenAI.GetModelList(URL, Token);
```
+4
View File
@@ -0,0 +1,4 @@
{
"label": "Models management",
"position": "6"
}
@@ -0,0 +1,4 @@
{
"URL": "https://api.athenaeum.digital:1122/",
"Токен": "sk-or-vv-c5884ebe9f13fb143194bb07ecb..."
}
+3 -2
View File
@@ -1,8 +1,9 @@
URL = "https://api.athenaeum.digital:1122/";
Токен = "sk-or-vv-c5884ebe9f13fb143194bb07ecb...";
Файл = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Путь или Двоичные данные
ИмяФайла = "picture4.png";
Файл = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Путь или Двоичные данные
ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор()));
Назначение = "assistants";
Результат = OPI_OpenAI.ЗагрузитьФайл(URL, Токен, ИмяФайла, Файл, Назначение);
@@ -0,0 +1,4 @@
URL = "https://api.athenaeum.digital:1122/";
Токен = "sk-or-vv-c5884ebe9f13fb143194bb07ecb...";
Результат = OPI_OpenAI.ПолучитьСписокМоделей(URL, Токен);
+3 -2
View File
@@ -41,8 +41,9 @@ import TabItem from '@theme/TabItem';
URL = "https://api.athenaeum.digital:1122/";
Токен = "sk-or-vv-c5884ebe9f13fb143194bb07ecb...";
Файл = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Путь или Двоичные данные
ИмяФайла = "picture4.png";
Файл = "https://api.athenaeum.digital/test_data/picture.jpg"; // URL, Путь или Двоичные данные
ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор()));
Назначение = "assistants";
Результат = OPI_OpenAI.ЗагрузитьФайл(URL, Токен, ИмяФайла, Файл, Назначение);
+45
View File
@@ -0,0 +1,45 @@
---
sidebar_position: 1
description: Получить список моделей и другие функции для работы с OpenAI в Открытом пакете интеграций - бесплатной open-source библиотеке интеграций для 1С:Предприятие 8, OneScript и CLI
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, OpenAI]
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить список моделей
Получает список доступных моделей
`Функция ПолучитьСписокМоделей(Знач URL, Знач Токен, Знач ДопЗаголовки = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| URL | --url | Строка | &#x2714; | URL сервера OpenAI |
| Токен | --token | Строка | &#x2714; | Токен авторизации OpenAI |
| ДопЗаголовки | --headers | Соответствие Из КлючИЗначение | &#x2716; | Доп. заголовки запроса, если необходимо |
Возвращаемое значение: Соответствие Из КлючИЗначение - Результат обработки
<br/>
:::tip
Метод в документации API: [List models](https://platform.openai.com/docs/api-reference/models/list)
:::
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
URL = "https://api.athenaeum.digital:1122/";
Токен = "sk-or-vv-c5884ebe9f13fb143194bb07ecb...";
Результат = OPI_OpenAI.ПолучитьСписокМоделей(URL, Токен);
```
+4
View File
@@ -0,0 +1,4 @@
{
"label": "Работа с моделями",
"position": "6"
}
+11 -1
View File
@@ -46,4 +46,14 @@ import TabItem from '@theme/TabItem';
```json title="Результат"
{
"created": 1749756865,
"data": [
{
"revised_prompt": "Imagine a sunny meadow with lush green grass. In the heart of this vibrant landscape, stands a yellow alpaca with its woolly fur, shining brightly under the sunlight. Its features are comically endearing with a long neck, a small rounded head, and large, expressive eyes. It is peacefully grazing, unperturbed by the world around it, epitomizing the tranquility of the idyllic meadow. The gentle breeze flutters its fur, adding an element of charisma to this adorable creature. The picture is a beautiful blend of vibrant colors, and a sense of calmness.",
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-Dy8ARyqBtu507OGoMBxfUU0S/user-n4L5wc2dF1fH9APAG2dE3Rw9/img-oEeMH1QJWSvtVlmG3yc1KOqx.png?st=2025-06-12T18%3A34%3A25Z&se=2025-06-12T20%3A34%3A25Z&sp=r&sv=2024-08-04&sr=b&rscd=inline&rsct=image/png&skoid=475fd488-6c59-44a5-9aa9-31c4db451bea&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2025-06-12T11%3A41%3A33Z&ske=2025-06-13T11%3A41%3A33Z&sks=b&skv=2024-08-04&sig=%2BjegkXiCFSi3l80vNiH1IOij4nQ%2BD%2Bd%2BNitOmxISJ1c%3D"
}
]
}
```
+8258 -8258
View File
File diff suppressed because it is too large Load Diff
+32
View File
@@ -629,6 +629,34 @@ EndFunction
#EndRegion
#Region ModelsManagement
// Get model list
// Receives a list of available models
//
// Note
// Method at API documentation: [List models](@platform.openai.com/docs/api-reference/models/list)
//
// Parameters:
// URL - String - OpenAI server URL - url
// Token - String - OpenAI authorization token - token
// AdditionalHeaders - Map Of KeyAndValue - Additional request headers, if necessary - headers
//
// Returns:
// Map Of KeyAndValue - Processing result
Function GetModelList(Val URL, Val Token, Val AdditionalHeaders = "") Export
CompleteURL(URL, "v1/models");
HeadersProcessing(AdditionalHeaders, Token);
Response = OPI_HTTPRequests.Get(URL, , AdditionalHeaders);
Return ConvertKeysToLowerCase(Response);
EndFunction
#EndRegion
#EndRegion
#Region Private
@@ -763,4 +791,8 @@ Function СоздатьТранскрипцию(Val URL, Val Токен, Val М
Return CreateTranscription(URL, Токен, Модель, Аудио, MIME, ДопПараметры, ДопЗаголовки);
EndFunction
Function ПолучитьСписокМоделей(Val URL, Val Токен, Val ДопЗаголовки = "") Export
Return GetModelList(URL, Токен, ДопЗаголовки);
EndFunction
#EndRegion
+27 -2
View File
@@ -2800,6 +2800,16 @@ Procedure OAI_AudioProcessing() Export
EndProcedure
Procedure OAI_ModelsManagement() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters);
OpenAI_GetModelList(TestParameters);
EndProcedure
#EndRegion
#EndRegion
@@ -23542,8 +23552,9 @@ Procedure OpenAI_UploadFile(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
File = FunctionParameters["Picture"]; // URL, Path or Binary Data
FileName = "picture4.png";
File = FunctionParameters["Picture"]; // URL, Path or Binary Data
FileName = StrTemplate("%1.png", String(New UUID()));
Destination = "assistants";
Result = OPI_OpenAI.UploadFile(URL, Token, FileName, File, Destination);
@@ -23717,6 +23728,20 @@ Procedure OpenAI_GetImages(FunctionParameters)
EndProcedure
Procedure OpenAI_GetModelList(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Result = OPI_OpenAI.GetModelList(URL, Token);
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetModelList", "OpenAI");
OPI_TestDataRetrieval.Check_OpenAIList(Result);
EndProcedure
#EndRegion
#EndRegion
+157
View File
@@ -2628,6 +2628,9 @@ Procedure CLI_OAI_RequestsProcessing() Export
CLI_OpenAI_GetResponse(TestParameters);
CLI_OpenAI_GetEmbeddings(TestParameters);
CLI_OpenAI_GetMessageStructure(TestParameters);
CLI_OpenAI_GetImageMessageStructure(TestParameters);
CLI_OpenAI_GetImages(TestParameters);
EndProcedure
@@ -2659,6 +2662,27 @@ Procedure CLI_OAI_FileManagement() Export
EndProcedure
Procedure CLI_OAI_AudioProcessing() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters);
CLI_OpenAI_GenerateSpeech(TestParameters);
CLI_OpenAI_CreateTranscription(TestParameters);
EndProcedure
Procedure CLI_OAI_ModelsManagement() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters);
CLI_OpenAI_GetModelList(TestParameters);
EndProcedure
#EndRegion
#EndRegion
@@ -24840,6 +24864,139 @@ Procedure CLI_OpenAI_DownloadFile(FunctionParameters)
EndProcedure
Procedure CLI_OpenAI_GetMessageStructure(FunctionParameters)
Options = New Structure;
Options.Insert("role", "user");
Options.Insert("text", "What is 1C:Enterprise?");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetMessageStructure", "OpenAI");
OPI_TestDataRetrieval.Check_Map(Result);
EndProcedure
Procedure CLI_OpenAI_GetImageMessageStructure(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Image = FunctionParameters["OpenAI_File"];
Options = New Structure;
Options.Insert("role" , "user");
Options.Insert("file" , Image);
Options.Insert("prompt", "What is in this image?");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageMessageStructure", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetImageMessageStructure", "OpenAI");
OPI_TestDataRetrieval.Check_Map(Result);
EndProcedure
Procedure CLI_OpenAI_GenerateSpeech(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Text = "Attack ships on fire off the shoulder of Orion bright as magnesium";
Model = "tts-1";
AdditionalParameters = New Structure("response_format", "wav");
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("token" , Token);
Options.Insert("model" , Model);
Options.Insert("input" , Text);
Options.Insert("options", AdditionalParameters);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GenerateSpeech", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "GenerateSpeech", "OpenAI");
OPI_TestDataRetrieval.Check_BinaryData(Result, 137516);
//@skip-check missing-temporary-file-deletion
TFN = GetTempFileName("wav");
Result.Write(TFN);
OPI_TestDataRetrieval.WriteParameter("OpenAI_Speech", TFN);
OPI_Tools.AddField("OpenAI_Speech", TFN, "String", FunctionParameters);
EndProcedure
Procedure CLI_OpenAI_CreateTranscription(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Audio = FunctionParameters["OpenAI_Speech"];
Model = "whisper-1";
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("token" , Token);
Options.Insert("model" , Model);
Options.Insert("audio" , Audio);
Options.Insert("type" , "audio/wav");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "CreateTranscription", Options);
Try
DeleteFiles(Audio);
Except
Message("Error deleting file after test");
EndTry;
OPI_TestDataRetrieval.WriteLogCLI(Result, "CreateTranscription", "OpenAI");
OPI_TestDataRetrieval.Check_String(Lower(Result["text"]), "attack ships on fire off the shoulder of orion bright as magnesium.");
EndProcedure
Procedure CLI_OpenAI_GetImages(FunctionParameters)
URL = FunctionParameters["OpenAI_URL2"];
Token = FunctionParameters["OpenAI_Token2"];
Model = "dall-e-3";
Options = New Structure;
Options.Insert("prompt", "Yellow alpaca");
Options.Insert("amount", 1);
Options.Insert("size" , "1024x1024");
Description = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageDescriptionStructure", Options);
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("token" , Token);
Options.Insert("model" , Model);
Options.Insert("descr" , Description);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImages", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetImages", "OpenAI");
OPI_TestDataRetrieval.Check_OpenAIImage(Result);
EndProcedure
Procedure CLI_OpenAI_GetModelList(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("token" , Token);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetModelList", Options);
OPI_TestDataRetrieval.WriteLog(Result, "GetModelList", "OpenAI");
OPI_TestDataRetrieval.Check_OpenAIList(Result);
EndProcedure
#EndRegion
#EndRegion
+1
View File
@@ -317,6 +317,7 @@ Function GetTestTable() Export
NewTest(TestTable, "OAI_Assistants" , "Assistants" , OpenAI);
NewTest(TestTable, "OAI_FileManagement" , "Files management" , OpenAI);
NewTest(TestTable, "OAI_AudioProcessing" , "Audio processing" , OpenAI);
NewTest(TestTable, "OAI_ModelsManagement" , "Models management" , OpenAI);
Return TestTable;
+28
View File
@@ -629,6 +629,34 @@ EndFunction
#EndRegion
#Region ModelsManagement
// Get model list
// Receives a list of available models
//
// Note
// Method at API documentation: [List models](@platform.openai.com/docs/api-reference/models/list)
//
// Parameters:
// URL - String - OpenAI server URL - url
// Token - String - OpenAI authorization token - token
// AdditionalHeaders - Map Of KeyAndValue - Additional request headers, if necessary - headers
//
// Returns:
// Map Of KeyAndValue - Processing result
Function GetModelList(Val URL, Val Token, Val AdditionalHeaders = "") Export
CompleteURL(URL, "v1/models");
HeadersProcessing(AdditionalHeaders, Token);
Response = OPI_HTTPRequests.Get(URL, , AdditionalHeaders);
Return ConvertKeysToLowerCase(Response);
EndFunction
#EndRegion
#EndRegion
#Region Private
@@ -317,6 +317,7 @@ Function GetTestTable() Export
NewTest(TestTable, "OAI_Assistants" , "Assistants" , OpenAI);
NewTest(TestTable, "OAI_FileManagement" , "Files management" , OpenAI);
NewTest(TestTable, "OAI_AudioProcessing" , "Audio processing" , OpenAI);
NewTest(TestTable, "OAI_ModelsManagement" , "Models management" , OpenAI);
Return TestTable;
+27 -2
View File
@@ -2800,6 +2800,16 @@ Procedure OAI_AudioProcessing() Export
EndProcedure
Procedure OAI_ModelsManagement() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters);
OpenAI_GetModelList(TestParameters);
EndProcedure
#EndRegion
#EndRegion
@@ -23542,8 +23552,9 @@ Procedure OpenAI_UploadFile(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
File = FunctionParameters["Picture"]; // URL, Path or Binary Data
FileName = "picture4.png";
File = FunctionParameters["Picture"]; // URL, Path or Binary Data
FileName = StrTemplate("%1.png", String(New UUID()));
Destination = "assistants";
Result = OPI_OpenAI.UploadFile(URL, Token, FileName, File, Destination);
@@ -23717,6 +23728,20 @@ Procedure OpenAI_GetImages(FunctionParameters)
EndProcedure
Procedure OpenAI_GetModelList(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Result = OPI_OpenAI.GetModelList(URL, Token);
// END
OPI_TestDataRetrieval.WriteLog(Result, "GetModelList", "OpenAI");
OPI_TestDataRetrieval.Check_OpenAIList(Result);
EndProcedure
#EndRegion
#EndRegion
+157
View File
@@ -2628,6 +2628,9 @@ Procedure CLI_OAI_RequestsProcessing() Export
CLI_OpenAI_GetResponse(TestParameters);
CLI_OpenAI_GetEmbeddings(TestParameters);
CLI_OpenAI_GetMessageStructure(TestParameters);
CLI_OpenAI_GetImageMessageStructure(TestParameters);
CLI_OpenAI_GetImages(TestParameters);
EndProcedure
@@ -2659,6 +2662,27 @@ Procedure CLI_OAI_FileManagement() Export
EndProcedure
Procedure CLI_OAI_AudioProcessing() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters);
CLI_OpenAI_GenerateSpeech(TestParameters);
CLI_OpenAI_CreateTranscription(TestParameters);
EndProcedure
Procedure CLI_OAI_ModelsManagement() Export
TestParameters = New Structure;
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_Token" , TestParameters);
OPI_TestDataRetrieval.ParameterToCollection("OpenAI_URL" , TestParameters);
CLI_OpenAI_GetModelList(TestParameters);
EndProcedure
#EndRegion
#EndRegion
@@ -24840,6 +24864,139 @@ Procedure CLI_OpenAI_DownloadFile(FunctionParameters)
EndProcedure
Procedure CLI_OpenAI_GetMessageStructure(FunctionParameters)
Options = New Structure;
Options.Insert("role", "user");
Options.Insert("text", "What is 1C:Enterprise?");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetMessageStructure", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetMessageStructure", "OpenAI");
OPI_TestDataRetrieval.Check_Map(Result);
EndProcedure
Procedure CLI_OpenAI_GetImageMessageStructure(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Image = FunctionParameters["OpenAI_File"];
Options = New Structure;
Options.Insert("role" , "user");
Options.Insert("file" , Image);
Options.Insert("prompt", "What is in this image?");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageMessageStructure", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetImageMessageStructure", "OpenAI");
OPI_TestDataRetrieval.Check_Map(Result);
EndProcedure
Procedure CLI_OpenAI_GenerateSpeech(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Text = "Attack ships on fire off the shoulder of Orion bright as magnesium";
Model = "tts-1";
AdditionalParameters = New Structure("response_format", "wav");
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("token" , Token);
Options.Insert("model" , Model);
Options.Insert("input" , Text);
Options.Insert("options", AdditionalParameters);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GenerateSpeech", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "GenerateSpeech", "OpenAI");
OPI_TestDataRetrieval.Check_BinaryData(Result, 137516);
//@skip-check missing-temporary-file-deletion
TFN = GetTempFileName("wav");
Result.Write(TFN);
OPI_TestDataRetrieval.WriteParameter("OpenAI_Speech", TFN);
OPI_Tools.AddField("OpenAI_Speech", TFN, "String", FunctionParameters);
EndProcedure
Procedure CLI_OpenAI_CreateTranscription(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Audio = FunctionParameters["OpenAI_Speech"];
Model = "whisper-1";
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("token" , Token);
Options.Insert("model" , Model);
Options.Insert("audio" , Audio);
Options.Insert("type" , "audio/wav");
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "CreateTranscription", Options);
Try
DeleteFiles(Audio);
Except
Message("Error deleting file after test");
EndTry;
OPI_TestDataRetrieval.WriteLogCLI(Result, "CreateTranscription", "OpenAI");
OPI_TestDataRetrieval.Check_String(Lower(Result["text"]), "attack ships on fire off the shoulder of orion bright as magnesium.");
EndProcedure
Procedure CLI_OpenAI_GetImages(FunctionParameters)
URL = FunctionParameters["OpenAI_URL2"];
Token = FunctionParameters["OpenAI_Token2"];
Model = "dall-e-3";
Options = New Structure;
Options.Insert("prompt", "Yellow alpaca");
Options.Insert("amount", 1);
Options.Insert("size" , "1024x1024");
Description = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImageDescriptionStructure", Options);
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("token" , Token);
Options.Insert("model" , Model);
Options.Insert("descr" , Description);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetImages", Options);
OPI_TestDataRetrieval.WriteLogCLI(Result, "GetImages", "OpenAI");
OPI_TestDataRetrieval.Check_OpenAIImage(Result);
EndProcedure
Procedure CLI_OpenAI_GetModelList(FunctionParameters)
URL = FunctionParameters["OpenAI_URL"];
Token = FunctionParameters["OpenAI_Token"];
Options = New Structure;
Options.Insert("url" , URL);
Options.Insert("token" , Token);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("openai", "GetModelList", Options);
OPI_TestDataRetrieval.WriteLog(Result, "GetModelList", "OpenAI");
OPI_TestDataRetrieval.Check_OpenAIList(Result);
EndProcedure
#EndRegion
#EndRegion
+31
View File
@@ -876,6 +876,37 @@
NewLine.Description = "Additional request headers, if necessary (optional, def. val. - Empty value)";
NewLine.Region = "Audio processing";
NewLine = CompositionTable.Add();
NewLine.Library = "openai";
NewLine.Module = "OPI_OpenAI";
NewLine.Method = "GetModelList";
NewLine.SearchMethod = "GETMODELLIST";
NewLine.Parameter = "--url";
NewLine.Description = "OpenAI server URL";
NewLine.Region = "Models management";
NewLine.MethodDescription = "Receives a list of available models";
NewLine = CompositionTable.Add();
NewLine.Library = "openai";
NewLine.Module = "OPI_OpenAI";
NewLine.Method = "GetModelList";
NewLine.SearchMethod = "GETMODELLIST";
NewLine.Parameter = "--token";
NewLine.Description = "OpenAI authorization token";
NewLine.Region = "Models management";
NewLine = CompositionTable.Add();
NewLine.Library = "openai";
NewLine.Module = "OPI_OpenAI";
NewLine.Method = "GetModelList";
NewLine.SearchMethod = "GETMODELLIST";
NewLine.Parameter = "--headers";
NewLine.Description = "Additional request headers, if necessary (optional, def. val. - Empty value)";
NewLine.Region = "Models management";
Return CompositionTable;
EndFunction
+32
View File
@@ -629,6 +629,34 @@
#КонецОбласти
#Область РаботаСМоделями
// Получить список моделей
// Получает список доступных моделей
//
// Примечание:
// Метод в документации API: [List models](@platform.openai.com/docs/api-reference/models/list)
//
// Параметры:
// URL - Строка - URL сервера OpenAI - url
// Токен - Строка - Токен авторизации OpenAI - token
// ДопЗаголовки - Соответствие Из КлючИЗначение - Доп. заголовки запроса, если необходимо - headers
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат обработки
Функция ПолучитьСписокМоделей(Знач URL, Знач Токен, Знач ДопЗаголовки = "") Экспорт
ДополнитьURL(URL, "v1/models");
ОбработатьЗаголовки(ДопЗаголовки, Токен);
Ответ = OPI_ЗапросыHTTP.Get(URL, , ДопЗаголовки);
Возврат ПривестиКлючиКНижнемуРегистру(Ответ);
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -763,4 +791,8 @@ Function CreateTranscription(Val URL, Val Token, Val Model, Val Audio, Val MIME
Return СоздатьТранскрипцию(URL, Token, Model, Audio, MIME, AdditionalParameters, AdditionalHeaders);
EndFunction
Function GetModelList(Val URL, Val Token, Val AdditionalHeaders = "") Export
Return ПолучитьСписокМоделей(URL, Token, AdditionalHeaders);
EndFunction
#EndRegion
+27 -2
View File
@@ -2800,6 +2800,16 @@
КонецПроцедуры
Процедура OAI_РаботаСМоделями() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста);
OpenAI_ПолучитьСписокМоделей(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -23542,8 +23552,9 @@
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные
ИмяФайла = "picture4.png";
Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные
ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор()));
Назначение = "assistants";
Результат = OPI_OpenAI.ЗагрузитьФайл(URL, Токен, ИмяФайла, Файл, Назначение);
@@ -23717,6 +23728,20 @@
КонецПроцедуры
Процедура OpenAI_ПолучитьСписокМоделей(ПараметрыФункции)
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Результат = OPI_OpenAI.ПолучитьСписокМоделей(URL, Токен);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокМоделей", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_OpenAIСписок(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
+157
View File
@@ -2628,6 +2628,9 @@
CLI_OpenAI_ПолучитьОтвет(ПараметрыТеста);
CLI_OpenAI_ПолучитьПредставления(ПараметрыТеста);
CLI_OpenAI_ПолучитьСтруктуруСообщения(ПараметрыТеста);
CLI_OpenAI_ПолучитьСтруктуруСообщенияКартинки(ПараметрыТеста);
CLI_OpenAI_ПолучитьКартинки(ПараметрыТеста);
КонецПроцедуры
@@ -2659,6 +2662,27 @@
КонецПроцедуры
Процедура CLI_OAI_РаботаСАудио() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста);
CLI_OpenAI_СгенерироватьРечь(ПараметрыТеста);
CLI_OpenAI_СоздатьТранскрипцию(ПараметрыТеста);
КонецПроцедуры
Процедура CLI_OAI_РаботаСМоделями() Экспорт
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста);
CLI_OpenAI_ПолучитьСписокМоделей(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -24840,6 +24864,139 @@
КонецПроцедуры
Процедура CLI_OpenAI_ПолучитьСтруктуруСообщения(ПараметрыФункции)
Опции = Новый Структура;
Опции.Вставить("role", "user");
Опции.Вставить("text", "What is 1C:Enterprise?");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСообщения", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
КонецПроцедуры
Процедура CLI_OpenAI_ПолучитьСтруктуруСообщенияКартинки(ПараметрыФункции)
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Картинка = ПараметрыФункции["OpenAI_File"];
Опции = Новый Структура;
Опции.Вставить("role" , "user");
Опции.Вставить("file" , Картинка);
Опции.Вставить("prompt", "What is in this image?");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщенияКартинки", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСообщенияКартинки", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
КонецПроцедуры
Процедура CLI_OpenAI_СгенерироватьРечь(ПараметрыФункции)
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Текст = "Attack ships on fire off the shoulder of Orion bright as magnesium";
Модель = "tts-1";
ДопПараметры = Новый Структура("response_format", "wav");
Опции = Новый Структура;
Опции.Вставить("url" , URL);
Опции.Вставить("token" , Токен);
Опции.Вставить("model" , Модель);
Опции.Вставить("input" , Текст);
Опции.Вставить("options", ДопПараметры);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СгенерироватьРечь", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СгенерироватьРечь", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 137516);
//@skip-check missing-temporary-file-deletion
ИВФ = ПолучитьИмяВременногоФайла("wav");
Результат.Записать(ИВФ);
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("OpenAI_Speech", ИВФ);
OPI_Инструменты.ДобавитьПоле("OpenAI_Speech", ИВФ, "Строка", ПараметрыФункции);
КонецПроцедуры
Процедура CLI_OpenAI_СоздатьТранскрипцию(ПараметрыФункции)
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Аудио = ПараметрыФункции["OpenAI_Speech"];
Модель = "whisper-1";
Опции = Новый Структура;
Опции.Вставить("url" , URL);
Опции.Вставить("token" , Токен);
Опции.Вставить("model" , Модель);
Опции.Вставить("audio" , Аудио);
Опции.Вставить("type" , "audio/wav");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СоздатьТранскрипцию", Опции);
Попытка
УдалитьФайлы(Аудио);
Исключение
Сообщить("Ошибка удаления файла после теста");
КонецПопытки;
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьТранскрипцию", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_Строка(нРег(Результат["text"]), "attack ships on fire off the shoulder of orion bright as magnesium.");
КонецПроцедуры
Процедура CLI_OpenAI_ПолучитьКартинки(ПараметрыФункции)
URL = ПараметрыФункции["OpenAI_URL2"];
Токен = ПараметрыФункции["OpenAI_Token2"];
Модель = "dall-e-3";
Опции = Новый Структура;
Опции.Вставить("prompt", "Yellow alpaca");
Опции.Вставить("amount", 1);
Опции.Вставить("size" , "1024x1024");
Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруОписанияКартинок", Опции);
Опции = Новый Структура;
Опции.Вставить("url" , URL);
Опции.Вставить("token" , Токен);
Опции.Вставить("model" , Модель);
Опции.Вставить("descr" , Описание);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьКартинки", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКартинки", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_OpenAIКартинка(Результат);
КонецПроцедуры
Процедура CLI_OpenAI_ПолучитьСписокМоделей(ПараметрыФункции)
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Опции = Новый Структура;
Опции.Вставить("url" , URL);
Опции.Вставить("token" , Токен);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокМоделей", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокМоделей", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_OpenAIСписок(Результат);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
@@ -317,6 +317,7 @@
НовыйТест(ТаблицаТестов, "OAI_Ассистенты" , "Ассистенты" , OpenAI);
НовыйТест(ТаблицаТестов, "OAI_РаботаСФайлами" , "Работа с файлами" , OpenAI);
НовыйТест(ТаблицаТестов, "OAI_РаботаСАудио" , "Работа с аудио" , OpenAI);
НовыйТест(ТаблицаТестов, "OAI_РаботаСМоделями" , "Работа с моделями" , OpenAI);
Возврат ТаблицаТестов;
@@ -633,7 +633,7 @@
// Получить список моделей
// Получает список доступных моделей
//
//
// Примечание:
// Метод в документации API: [List models](@platform.openai.com/docs/api-reference/models/list)
//
@@ -652,7 +652,7 @@
Ответ = OPI_ЗапросыHTTP.Get(URL, , ДопЗаголовки);
Возврат ПривестиКлючиКНижнемуРегистру(Ответ);
КонецФункции
#КонецОбласти
+9 -9
View File
@@ -2805,9 +2805,9 @@
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста);
OpenAI_ПолучитьСписокМоделей(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
@@ -23552,8 +23552,8 @@
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные
Файл = ПараметрыФункции["Picture"]; // URL, Путь или Двоичные данные
ИмяФайла = СтрШаблон("%1.png", Строка(Новый УникальныйИдентификатор()));
Назначение = "assistants";
@@ -23732,14 +23732,14 @@
URL = ПараметрыФункции["OpenAI_URL"];
Токен = ПараметрыФункции["OpenAI_Token"];
Результат = OPI_OpenAI.ПолучитьСписокМоделей(URL, Токен);
// END
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокМоделей", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_OpenAIСписок(Результат);
КонецПроцедуры
#КонецОбласти
+15 -15
View File
@@ -2678,9 +2678,9 @@
ПараметрыТеста = Новый Структура;
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_Token" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("OpenAI_URL" , ПараметрыТеста);
CLI_OpenAI_ПолучитьСписокМоделей(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
@@ -24869,7 +24869,7 @@
Опции = Новый Структура;
Опции.Вставить("role", "user");
Опции.Вставить("text", "What is 1C:Enterprise?");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщения", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСообщения", "OpenAI");
@@ -24887,7 +24887,7 @@
Опции.Вставить("role" , "user");
Опции.Вставить("file" , Картинка);
Опции.Вставить("prompt", "What is in this image?");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруСообщенияКартинки", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьСтруктуруСообщенияКартинки", "OpenAI");
@@ -24911,9 +24911,9 @@
Опции.Вставить("model" , Модель);
Опции.Вставить("input" , Текст);
Опции.Вставить("options", ДопПараметры);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СгенерироватьРечь", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СгенерироватьРечь", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_ДвоичныеДанные(Результат, 137516);
@@ -24940,7 +24940,7 @@
Опции.Вставить("model" , Модель);
Опции.Вставить("audio" , Аудио);
Опции.Вставить("type" , "audio/wav");
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "СоздатьТранскрипцию", Опции);
Попытка
@@ -24959,13 +24959,13 @@
URL = ПараметрыФункции["OpenAI_URL2"];
Токен = ПараметрыФункции["OpenAI_Token2"];
Модель = "dall-e-3";
Модель = "dall-e-3";
Опции = Новый Структура;
Опции.Вставить("prompt", "Yellow alpaca");
Опции.Вставить("amount", 1);
Опции.Вставить("size" , "1024x1024");
Описание = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСтруктуруОписанияКартинок", Опции);
Опции = Новый Структура;
@@ -24973,7 +24973,7 @@
Опции.Вставить("token" , Токен);
Опции.Вставить("model" , Модель);
Опции.Вставить("descr" , Описание);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьКартинки", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьКартинки", "OpenAI");
@@ -24989,12 +24989,12 @@
Опции = Новый Структура;
Опции.Вставить("url" , URL);
Опции.Вставить("token" , Токен);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокМоделей", Опции);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("openai", "ПолучитьСписокМоделей", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСписокМоделей", "OpenAI");
OPI_ПолучениеДанныхТестов.Проверка_OpenAIСписок(Результат);
КонецПроцедуры
#КонецОбласти
+31
View File
@@ -884,6 +884,37 @@
НоваяСтрока.Описание = "Доп. заголовки запроса, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Работа с аудио";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "openai";
НоваяСтрока.Модуль = "OPI_OpenAI";
НоваяСтрока.Метод = "ПолучитьСписокМоделей";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОКМОДЕЛЕЙ";
НоваяСтрока.Параметр = "--url";
НоваяСтрока.Описание = "URL сервера OpenAI";
НоваяСтрока.Область = "Работа с моделями";
НоваяСтрока.ОписаниеМетода = "Получает список доступных моделей";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "openai";
НоваяСтрока.Модуль = "OPI_OpenAI";
НоваяСтрока.Метод = "ПолучитьСписокМоделей";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОКМОДЕЛЕЙ";
НоваяСтрока.Параметр = "--token";
НоваяСтрока.Описание = "Токен авторизации OpenAI";
НоваяСтрока.Область = "Работа с моделями";
НоваяСтрока = ТаблицаСостава.Добавить();
НоваяСтрока.Библиотека = "openai";
НоваяСтрока.Модуль = "OPI_OpenAI";
НоваяСтрока.Метод = "ПолучитьСписокМоделей";
НоваяСтрока.МетодПоиска = "ПОЛУЧИТЬСПИСОКМОДЕЛЕЙ";
НоваяСтрока.Параметр = "--headers";
НоваяСтрока.Описание = "Доп. заголовки запроса, если необходимо (необяз. по ум. - Пустое значение)";
НоваяСтрока.Область = "Работа с моделями";
Возврат ТаблицаСостава;
КонецФункции