Pustaka integrasi DALL·E untuk .NET
Catatan Versi perpustakaan saat ini memerlukan sumber daya DALL·E 3. Jika Anda ingin menggunakan DALL·E 2, silakan lihat versi ini.
Perpustakaan tersedia di NuGet. Cukup cari DallENet di GUI Package Manager atau jalankan perintah berikut di .NET CLI :
dotnet add package DallENet
Daftarkan layanan DALL·E saat startup aplikasi:
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
} ) ;
Saat ini, DallENet hanya mendukung Layanan Azure OpenAI. Dukungan untuk OpenAI akan ditambahkan di versi mendatang. Parameter konfigurasi yang diperlukan adalah sebagai berikut:
DALL·E 3 mampu menghasilkan gambar dengan resolusi berbeda:
Dengan menggunakan properti DefaultSize , dimungkinkan untuk menentukan ukuran gambar default, kecuali Anda meneruskan nilai eksplisit dalam metode GenerateImageAsync atau GetImageStreamAsync . Resolusi defaultnya adalah 1024x1024.
DALL·E 3 mampu menghasilkan gambar dalam kualitas standar atau HD, yaitu dengan detail lebih halus dan konsistensi lebih besar di seluruh gambar. Dengan menggunakan properti DefaultQuality , dimungkinkan untuk menentukan kualitas default, kecuali Anda meneruskan nilai eksplisit dalam metode GenerateImageAsync atau GetImageStreamAsync . Kualitas defaultnya adalah Standar .
DALL·E 3 mampu menghasilkan gambar menggunakan gaya alami yang hidup:
Dengan menggunakan properti DefaultStyle , dimungkinkan untuk menentukan gaya default, kecuali Anda meneruskan nilai eksplisit dalam metode GenerateImageAsync atau GetImageStreamAsync . Gaya defaultnya adalah Vivid .
DALL·E 3 dapat mengembalikan URL gambar yang dihasilkan dari pengkodean Base64-nya. Dengan menggunakan properti DefaultResponseFormat , dimungkinkan untuk menentukan kualitas default, kecuali Anda meneruskan nilai eksplisit dalam metode GenerateImageAsync atau GetImageStreamAsync . Kualitas defaultnya adalah Url .
Konfigurasi dapat dibaca secara otomatis dari IConfiguration, misalnya menggunakan bagian DallE di file 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
}
Dan kemudian gunakan kelebihan metode che AddDallE yang sesuai:
// Adds DALL·E service using settings from IConfiguration.
builder . Services . AddDallE ( builder . Configuration ) ;
Metode AddDallE juga memiliki kelebihan yang menerima IServiceProvider sebagai argumen. Ini dapat digunakan, misalnya, jika kita menggunakan API Web dan kita perlu mendukung skenario di mana setiap pengguna memiliki Kunci API berbeda yang dapat diambil dengan mengakses database melalui Injeksi Ketergantungan:
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 ) ;
} ) ;
Dalam skenario yang lebih kompleks, DallEnet dapat dikonfigurasi menggunakan kode dan IConfiguration. Ini dapat berguna jika kita ingin mengatur sekumpulan properti umum, namun pada saat yang sama kita memerlukan beberapa logika konfigurasi. Misalnya:
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 ) ;
} ) ;
Pustaka dapat digunakan di aplikasi .NET apa pun yang dibuat dengan .NET 6.0 atau lebih baru. Misalnya, kita dapat membuat Minimal API dengan cara ini:
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 ) ;
Secara khusus, responsnya berisi URL gambar yang dihasilkan. Jika kita hanya ingin mengambil URL gambar pertama yang dihasilkan, kita dapat memanggil metode GetImageUrl :
var imageUrl = response . GetImageUrl ( ) ;
Catatan Gambar yang dihasilkan secara otomatis dihapus setelah 24 jam.
Periksa folder Sampel untuk informasi lebih lanjut tentang penerapan yang berbeda.
Dokumentasi teknis lengkap tersedia di sini.
Proyek ini terus berkembang. Kontribusi dipersilakan. Jangan ragu untuk mengajukan masalah dan menarik permintaan pada repo dan kami akan mengatasinya semampu kami.
Peringatan Ingatlah untuk bekerja di cabang pengembangan , jangan gunakan cabang master secara langsung. Buat Penargetan Permintaan Tarik kembangkan .