Библиотека интеграции DALL·E для .NET.
Примечание. Для текущей версии библиотеки требуется ресурс DALL·E 3. Если вы хотите использовать DALL·E 2, обратитесь к этой версии.
Библиотека доступна на NuGet. Просто найдите DallENet в графическом интерфейсе диспетчера пакетов или выполните следующую команду в .NET CLI :
dotnet add package DallENet
Зарегистрируйте службу DALL·E при запуске приложения:
builder . Services . AddDallE ( options =>
{
// Azure OpenAI Service.
options . UseAzure ( resourceName : "" , apiKey : "" , authenticationType : AzureAuthenticationType . ApiKey ) ;
options . DefaultSize = DallEImageSizes . _1792x1024 ; // Default: 1024x1024
options . DefaultQuality = DallEImageQualities . HD ; // Default: Standard
options . DefaultStyle = DallEImageStyles . Natural ; // Default: Vivid
options . DefaultResponseFormat = DallEImageResponseFormats . Url ; // Default: Url
} ) ;
В настоящее время DallENet поддерживает только службу Azure OpenAI. Поддержка OpenAI будет добавлена в будущей версии. Обязательные параметры конфигурации следующие:
DALL·E 3 способен генерировать изображения с различным разрешением:
Используя свойство DefaultSize , можно указать размер изображения по умолчанию, если только вы не передадите явное значение в методах GenerateImageAsync или GetImageStreamAsync . Разрешение по умолчанию — 1024x1024.
DALL·E 3 способен создавать изображения стандартного качества или качества HD, то есть с более мелкими деталями и большей согласованностью изображения. Используя свойство DefaultQuality , можно указать качество по умолчанию, если только вы не передадите явное значение в методах GenerateImageAsync или GetImageStreamAsync . Качество по умолчанию — «Стандартное» .
DALL·E 3 способен создавать изображения в ярком и естественном стиле:
Используя свойство DefaultStyle , можно указать стиль по умолчанию, если только вы не передадите явное значение в методах GenerateImageAsync или GetImageStreamAsync . Стиль по умолчанию — Яркий .
DALL·E 3 может возвращать URL-адрес сгенерированного изображения в кодировке Base64. Используя свойство DefaultResponseFormat , можно указать качество по умолчанию, если только вы не передадите явное значение в методах GenerateImageAsync или GetImageStreamAsync . Качество по умолчанию — Url .
Конфигурацию можно автоматически прочитать из IConfiguration, используя, например, раздел DallE в файле appsettings.json :
"DallE" : {
"Provider" : "Azure" , // Optional. Currently only Azure is supported
"ApiKey" : "" , // Required
"ResourceName" : "" , // Required
"ApiVersion" : "2023-12-01-preview" , // Optional, used only by Azure OpenAI Service. Allowed values: 2023-12-01-preview (default)
"AuthenticationType" : "ApiKey" , // Optional, Allowed values: ApiKey (default) or ActiveDirectory
"DefaultModel" : "dall-e-3" , // Required
"DefaultSize" : "1792x1024" , // Optional, Allowed values: 1024x1024 (default), 1792x1024 or 1024x1792
"DefaultQuality" : "standard" , // Optional, Allowed values: standard (default) or hd
"DefaultResponseFormat" : "url" , // Optional, Allowed values: url (default) or b64_json
"DefaultStyle" : "vivid" , // Optional, Allowed values: natural (default), or vivid
"ThrowExceptionOnError" : true
//"User": "UserName" // Optional
}
А затем используйте соответствующую перегрузку метода AddDallE :
// Adds DALL·E service using settings from IConfiguration.
builder . Services . AddDallE ( builder . Configuration ) ;
Метод AddDallE также имеет перегрузку, которая принимает IServiceProvider в качестве аргумента. Его можно использовать, например, если мы работаем с веб-API и нам необходимо поддерживать сценарии, в которых каждый пользователь имеет другой ключ API, который можно получить при доступе к базе данных через внедрение зависимостей:
builder . Services . AddDallE ( ( services , options ) =>
{
var accountService = services . GetRequiredService < IAccountService > ( ) ;
// Dynamically gets the Resource name and the API Key from the service.
var resourceName = "..." ;
var apiKey = "..."
options . UseAzure ( resourceName , apiKey ) ;
} ) ;
В более сложных сценариях можно настроить DallENet, используя как код, так и IConfiguration. Это может быть полезно, если мы хотим установить несколько общих свойств, но в то же время нам нужна некоторая логика настройки. Например:
builder . Services . AddDallE ( ( services , options ) =>
{
// Configure common properties (default size, default style, ecc.) using IConfiguration.
options . UseConfiguration ( builder . Configuration ) ;
var accountService = services . GetRequiredService < IAccountService > ( ) ;
// Dynamically gets the Resource name and the API Key from the service.
var resourceName = "..." ;
var apiKey = "..."
options . UseAzure ( resourceName , apiKey ) ;
} ) ;
Библиотеку можно использовать в любом приложении .NET, созданном с помощью .NET 6.0 или более поздней версии. Например, мы можем создать минимальный API следующим образом:
app . MapPost ( "/api/image" , async ( Request request , IDallEClient dallEClient ) =>
{
var response = await dallEClient . GenerateImagesAsync ( request . Prompt ) ;
return TypedResults . Ok ( response ) ;
} )
. WithOpenApi ( ) ;
public record class Request ( string Prompt ) ;
В частности, ответ содержит URL-адрес сгенерированного изображения. Если мы просто хотим получить URL-адрес первого сгенерированного изображения, мы можем вызвать метод GetImageUrl :
var imageUrl = response . GetImageUrl ( ) ;
Примечание. Созданные изображения автоматически удаляются через 24 часа.
Проверьте папку «Образцы» для получения дополнительной информации о различных реализациях.
Полная техническая документация доступна здесь.
Проект постоянно развивается. Взносы приветствуются. Не стесняйтесь сообщать о проблемах и отправлять запросы на включение в репозиторий, и мы решим их, насколько сможем.
Предупреждение. Не забывайте работать с веткой разработки , не используйте напрямую ветку master . Создание запросов на включение с таргетингом на разработку .