ไลบรารีการรวม DALL·E สำหรับ .NET
หมายเหตุ เวอร์ชันปัจจุบันของไลบรารีต้องใช้ทรัพยากร DALL·E 3 หากคุณต้องการใช้ DALL·E 2 โปรดดูเวอร์ชันนี้
ห้องสมุดมีอยู่ใน NuGet เพียงค้นหา DallENet ใน Package Manager GUI หรือรันคำสั่งต่อไปนี้ใน .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
}
จากนั้นใช้วิธี che AddDallE โอเวอร์โหลดที่สอดคล้องกัน:
// Adds DALL·E service using settings from IConfiguration.
builder . Services . AddDallE ( builder . Configuration ) ;
เมธอด AddDallE ยังมีการโอเวอร์โหลดที่ยอมรับ IServiceProvider เป็นอาร์กิวเมนต์ ตัวอย่างเช่น สามารถใช้ถ้าเราอยู่ใน Web API และเราจำเป็นต้องสนับสนุนสถานการณ์ที่ผู้ใช้ทุกคนมีคีย์ API ที่แตกต่างกันซึ่งสามารถดึงข้อมูลการเข้าถึงฐานข้อมูลผ่านทาง Dependency Injection:
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 หรือใหม่กว่า ตัวอย่างเช่น เราสามารถสร้าง Minimal 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 ชั่วโมง
ตรวจสอบโฟลเดอร์ตัวอย่างเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานต่างๆ
มีเอกสารทางเทคนิคฉบับเต็มอยู่ที่นี่
โครงการมีการพัฒนาอย่างต่อเนื่อง ยินดีบริจาค คุณสามารถยื่นปัญหาและดึงคำขอใน repo ได้ตามใจชอบ แล้วเราจะจัดการปัญหาเหล่านั้นให้ดีที่สุด
คำเตือน อย่าลืมทำงานในสาขา ที่พัฒนา อย่าใช้สาขา หลัก โดยตรง สร้างการกำหนดเป้าหมาย Pull Requests พัฒนา