.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는 다양한 해상도의 이미지를 생성할 수 있습니다.
DefaultSize 속성을 사용하면 generateImageAsync 또는 GetImageStreamAsync 메서드에 명시적인 값을 전달하지 않는 한 기본 이미지 크기를 지정할 수 있습니다. 기본 해상도는 1024x1024입니다.
DALL·E 3는 표준 또는 HD 품질, 즉 이미지 전체에 걸쳐 더 세밀하고 일관성이 뛰어난 이미지를 생성할 수 있습니다. DefaultQuality 속성을 사용하면 generateImageAsync 또는 GetImageStreamAsync 메서드에 명시적인 값을 전달하지 않는 한 기본 품질을 지정할 수 있습니다. 기본 품질은 표준 입니다.
DALL·E 3는 생생하고 자연스러운 스타일을 사용하여 이미지를 생성할 수 있습니다.
DefaultStyle 속성을 사용하면 generateImageAsync 또는 GetImageStreamAsync 메서드에 명시적 값을 전달하지 않는 한 기본 스타일을 지정할 수 있습니다. 기본 스타일은 Vivid 입니다.
DALL·E 3은 Base64 인코딩으로 생성된 이미지의 URL을 반환할 수 있습니다. DefaultResponseFormat 속성을 사용하면 generateImageAsync 또는 GetImageStreamAsync 메서드에 명시적인 값을 전달하지 않는 한 기본 품질을 지정할 수 있습니다. 기본 품질은 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를 인수로 받아들이는 오버로드도 있습니다. 예를 들어 웹 API에 있고 모든 사용자가 종속성 주입을 통해 데이터베이스에 액세스하여 검색할 수 있는 다른 API 키를 갖는 시나리오를 지원해야 하는 경우에 사용할 수 있습니다.
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 애플리케이션에서 사용할 수 있습니다. 예를 들어 다음과 같은 방법으로 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시간 후에 자동으로 삭제됩니다.
다양한 구현에 대한 자세한 내용은 샘플 폴더를 확인하세요.
전체 기술 문서는 여기에서 확인할 수 있습니다.
프로젝트는 끊임없이 발전하고 있습니다. 기여를 환영합니다. 리포지토리에 자유롭게 문제를 제출하고 요청을 가져오면 가능한 한 해결해 드리겠습니다.
경고 개발 브랜치에서 작업하는 것을 잊지 마세요. 마스터 브랜치를 직접 사용하지 마세요. 개발을 대상으로 하는 끌어오기 요청을 생성합니다.