.NET用のDALL・E統合ライブラリ
注:ライブラリの現在のバージョンには、DALL·E 3 リソースが必要です。 DALL・E 2を使用する場合は、このバージョンを参照してください。
ライブラリは NuGet で入手できます。パッケージ マネージャー GUIで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 は、さまざまな解像度で画像を生成できます。
GenerateImageAsyncメソッドまたはGetImageStreamAsyncメソッドで明示的な値を渡さない限り、 DefaultSizeプロパティを使用すると、デフォルトの画像サイズを指定できます。デフォルトの解像度は 1024x1024 です。
DALL・E 3 は、標準または HD 品質の画像を生成できます。つまり、細部がより細かく、画像全体の一貫性が向上します。 GenerateImageAsyncメソッドまたはGetImageStreamAsyncメソッドで明示的な値を渡さない限り、 DefaultQualityプロパティを使用すると、デフォルトの品質を指定できます。デフォルトの品質は「標準」です。
DALL・E 3 は、鮮やかで自然なスタイルを使用して画像を生成できます。
GenerateImageAsyncメソッドまたはGetImageStreamAsyncメソッドで明示的な値を渡さない限り、 DefaultStyleプロパティを使用すると、デフォルトのスタイルを指定できます。デフォルトのスタイルはVividです。
DALL・E 3 は、Base64 エンコーディングで生成された画像の URL を返すことができます。 GenerateImageAsyncメソッドまたはGetImageStreamAsyncメソッドで明示的な値を渡さない限り、 DefaultResponseFormatプロパティを使用すると、デフォルトの品質を指定できます。デフォルトの品質はURLです。
構成は、たとえばappsettings.jsonファイルのDallEセクションを使用して、IConfiguration から自動的に読み取ることができます。
"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 ) ;
} ) ;
より複雑なシナリオでは、コードと IConfiguration の両方を使用してDallENet を構成できます。これは、多数の共通プロパティを設定したい場合に便利ですが、同時にいくつかの構成ロジックが必要です。例えば:
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 6.0 以降で構築された任意の .NET アプリケーションで使用できます。たとえば、次の方法で最小限の 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 時間後に自動的に削除されます。
さまざまな実装の詳細については、Samples フォルダーを確認してください。
完全な技術文書はここから入手できます。
プロジェクトは常に進化しています。貢献は大歓迎です。リポジトリに問題やプル リクエストを気軽に提出していただければ、可能な限り対応させていただきます。
警告: masterブランチを直接使用しないで、 developブランチで作業することを忘れないでください。 Development を対象としたプル リクエストを作成します。