Una biblioteca de integración DALL·E para .NET
Nota La versión actual de la biblioteca requiere un recurso DALL·E 3. Si desea utilizar DALL·E 2, consulte esta versión.
La biblioteca está disponible en NuGet. Simplemente busque DallENet en la GUI del Administrador de paquetes o ejecute el siguiente comando en la CLI de .NET :
dotnet add package DallENet
Registre el servicio DALL·E al iniciar la aplicación:
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
} ) ;
Actualmente, DallENet solo admite el servicio Azure OpenAI. Se agregará compatibilidad con OpenAI en una versión futura. Los parámetros de configuración requeridos son los siguientes:
DALL·E 3 es capaz de generar imágenes a diferentes resoluciones:
Usando la propiedad DefaultSize , es posible especificar el tamaño de imagen predeterminado, a menos que pase un valor explícito en los métodos GenerateImageAsync o GetImageStreamAsync . La resolución predeterminada es 1024x1024.
DALL·E 3 es capaz de generar imágenes en calidad estándar o HD, es decir, con detalles más finos y mayor consistencia en toda la imagen. Con la propiedad DefaultQuality , es posible especificar la calidad predeterminada, a menos que pase un valor explícito en los métodos GenerateImageAsync o GetImageStreamAsync . La calidad predeterminada es Estándar .
DALL·E 3 es capaz de generar imágenes utilizando un estilo vívido y natural:
Usando la propiedad DefaultStyle , es posible especificar el estilo predeterminado, a menos que pase un valor explícito en los métodos GenerateImageAsync o GetImageStreamAsync . El estilo predeterminado es Vívido .
DALL·E 3 es capaz de devolver la URL de la imagen generada de su codificación Base64. Con la propiedad DefaultResponseFormat , es posible especificar la calidad predeterminada, a menos que pase un valor explícito en los métodos GenerateImageAsync o GetImageStreamAsync . La calidad predeterminada es Url .
La configuración se puede leer automáticamente desde IConfiguration, usando, por ejemplo, una sección DallE en el archivo 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
}
Y luego use la sobrecarga correspondiente del método AddDallE :
// Adds DALL·E service using settings from IConfiguration.
builder . Services . AddDallE ( builder . Configuration ) ;
El método AddDallE también tiene una sobrecarga que acepta un IServiceProvider como argumento. Se puede usar, por ejemplo, si estamos en una API web y necesitamos admitir escenarios en los que cada usuario tiene una clave API diferente que se puede recuperar accediendo a una base de datos mediante inyección de dependencia:
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 ) ;
} ) ;
En escenarios más complejos, es posible configurar DallENet utilizando tanto código como IConfiguration. Esto puede resultar útil si queremos establecer un montón de propiedades comunes, pero al mismo tiempo necesitamos cierta lógica de configuración. Por ejemplo:
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 ) ;
} ) ;
La biblioteca se puede utilizar en cualquier aplicación .NET creada con .NET 6.0 o posterior. Por ejemplo, podemos crear una API mínima de esta manera:
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 ) ;
En particular, la respuesta contiene la URL de la imagen generada. Si solo queremos recuperar la URL de la primera imagen generada, podemos llamar al método GetImageUrl :
var imageUrl = response . GetImageUrl ( ) ;
Nota Las imágenes generadas se eliminan automáticamente después de 24 horas.
Consulte la carpeta Ejemplos para obtener más información sobre las diferentes implementaciones.
La documentación técnica completa está disponible aquí.
El proyecto está en constante evolución. Las contribuciones son bienvenidas. No dude en presentar problemas y solicitudes de extracción en el repositorio y los abordaremos lo mejor que podamos.
Advertencia Recuerde trabajar en la rama de desarrollo , no use la rama maestra directamente. Crear solicitudes de extracción dirigidas al desarrollo .