مكتبة تكامل 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 قادر على إنشاء صور بجودة قياسية أو عالية الدقة، أي بتفاصيل أدق واتساق أكبر عبر الصورة. باستخدام خاصية DefaultQuality ، من الممكن تحديد الجودة الافتراضية، إلا إذا قمت بتمرير قيمة صريحة في أساليب GenerateImageAsync أو GetImageStreamAsync . الجودة الافتراضية هي القياسية .
DALL·E 3 قادر على إنشاء صور باستخدام نمط حيوي من الطبيعة:
باستخدام خاصية DefaultStyle ، من الممكن تحديد النمط الافتراضي، إلا إذا قمت بتمرير قيمة صريحة في أساليب GenerateImageAsync أو GetImageStreamAsync . النمط الافتراضي هو Vivid .
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 كوسيطة. يمكن استخدامه، على سبيل المثال، إذا كنا في واجهة برمجة تطبيقات الويب ونحتاج إلى دعم السيناريوهات التي يكون فيها لكل مستخدم مفتاح واجهة برمجة تطبيقات مختلف يمكن استرجاعه للوصول إلى قاعدة البيانات عبر حقن التبعية:
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 ساعة.
تحقق من مجلد العينات للحصول على مزيد من المعلومات حول التطبيقات المختلفة.
الوثائق الفنية الكاملة متاحة هنا.
المشروع يتطور باستمرار. المساهمات هي موضع ترحيب. لا تتردد في تقديم المشكلات وسحب الطلبات على الريبو وسنقوم بمعالجتها قدر الإمكان.
تحذير: تذكر أن تعمل على فرع التطوير ، ولا تستخدم الفرع الرئيسي مباشرة. إنشاء طلبات سحب تستهدف تطوير .