Skip to content

Commit a4045c5

Browse files
committed
unified route for azure image edits
1 parent 5e05fba commit a4045c5

File tree

2 files changed

+87
-0
lines changed

2 files changed

+87
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import { AZURE_OPEN_AI } from '../../globals';
2+
import { OpenAIErrorResponseTransform } from '../openai/utils';
3+
import { ErrorResponse, ImageGenerateResponse, ProviderConfig } from '../types';
4+
5+
export const AzureOpenAIImageEditConfig: ProviderConfig = {
6+
image: {
7+
param: 'image',
8+
required: true,
9+
},
10+
prompt: {
11+
param: 'prompt',
12+
required: true,
13+
},
14+
background: {
15+
param: 'background',
16+
},
17+
input_fidelity: {
18+
param: 'input_fidelity',
19+
},
20+
mask: {
21+
param: 'mask',
22+
},
23+
model: {
24+
param: 'model',
25+
default: 'dall-e-2',
26+
},
27+
n: {
28+
param: 'n',
29+
min: 1,
30+
max: 10,
31+
},
32+
output_compression: {
33+
param: 'output_compression',
34+
min: 0,
35+
max: 100,
36+
},
37+
output_format: {
38+
param: 'output_format',
39+
},
40+
partial_images: {
41+
param: 'partial_images',
42+
min: 0,
43+
max: 3,
44+
},
45+
quality: {
46+
param: 'quality',
47+
},
48+
response_format: {
49+
param: 'response_format',
50+
},
51+
size: {
52+
param: 'size',
53+
},
54+
stream: {
55+
param: 'stream',
56+
},
57+
user: {
58+
param: 'user',
59+
},
60+
};
61+
62+
interface AzureOpenAIImageObject {
63+
b64_json?: string; // The base64-encoded JSON of the generated image, if response_format is b64_json.
64+
url?: string; // The URL of the generated image, if response_format is url (default).
65+
revised_prompt?: string; // The prompt that was used to generate the image, if there was any revision to the prompt.
66+
}
67+
68+
interface AzureOpenAIImageGenerateResponse extends ImageGenerateResponse {
69+
data: AzureOpenAIImageObject[];
70+
}
71+
72+
export const AzureOpenAIImageEditResponseTransform: (
73+
response: AzureOpenAIImageGenerateResponse | ErrorResponse,
74+
responseStatus: number
75+
) => ImageGenerateResponse | ErrorResponse = (response, responseStatus) => {
76+
if (responseStatus !== 200 && 'error' in response) {
77+
return OpenAIErrorResponseTransform(response, AZURE_OPEN_AI);
78+
}
79+
80+
return response;
81+
};

src/providers/azure-openai/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,17 @@ import {
3636
OpenAIListInputItemsResponseTransformer,
3737
} from '../open-ai-base';
3838
import { AZURE_OPEN_AI } from '../../globals';
39+
import {
40+
AzureOpenAIImageEditConfig,
41+
AzureOpenAIImageEditResponseTransform,
42+
} from './imageEdits';
3943

4044
const AzureOpenAIConfig: ProviderConfigs = {
4145
complete: AzureOpenAICompleteConfig,
4246
embed: AzureOpenAIEmbedConfig,
4347
api: AzureOpenAIAPIConfig,
4448
imageGenerate: AzureOpenAIImageGenerateConfig,
49+
imageEdit: AzureOpenAIImageEditConfig,
4550
chatComplete: AzureOpenAIChatCompleteConfig,
4651
createSpeech: AzureOpenAICreateSpeechConfig,
4752
createFinetune: OpenAICreateFinetuneConfig,
@@ -63,6 +68,7 @@ const AzureOpenAIConfig: ProviderConfigs = {
6368
chatComplete: AzureOpenAIResponseTransform,
6469
embed: AzureOpenAIEmbedResponseTransform,
6570
imageGenerate: AzureOpenAIImageGenerateResponseTransform,
71+
imageEdit: AzureOpenAIImageEditResponseTransform,
6672
createSpeech: AzureOpenAICreateSpeechResponseTransform,
6773
createTranscription: AzureOpenAICreateTranscriptionResponseTransform,
6874
createTranslation: AzureOpenAICreateTranslationResponseTransform,

0 commit comments

Comments
 (0)