diff --git a/src/volces/image.ts b/src/volces/image.ts index 4a4d838..58d802c 100644 --- a/src/volces/image.ts +++ b/src/volces/image.ts @@ -1,3 +1,11 @@ +export const models = [ + 'doubao-seedream-4-0-250828', + 'doubao-seedream-3-0-t2i-250415', + 'doubao-seededit-3-0-i2i-250628' +] as const; + +export type VolcesImageModel = (typeof models)[number]; + export class VolcesImage { apiUrl = 'https://ark.cn-beijing.volces.com/api/v3/images/generations'; apiKey: string; @@ -7,6 +15,27 @@ export class VolcesImage { } async generateImage(data: VolcesImageRequest): Promise { + if (!data.model) { + data.model = models[0]; // 默认模型 + } + if (data.stream === undefined) { + data.stream = false; // 默认不使用流式返回 + } + if (data.response_format === undefined) { + data.response_format = 'url'; // 默认返回图片URL + } + if (data.size === undefined) { + data.size = '2K'; // 默认生成2K图片 + } + if (data.watermark === undefined) { + data.watermark = false; // 默认不添加水印 + } + if (data.sequential_image_generation === undefined) { + data.sequential_image_generation = 'auto'; // 默认自动处理连续图像生成 + } + if (data.sequential_image_generation === 'auto' && !data.sequential_image_generation_options) { + data.sequential_image_generation_options = { max_images: 1 }; // 默认最多生成1张连续图像 + } const res = await fetch(this.apiUrl, { method: 'POST', headers: { @@ -27,6 +56,7 @@ export type VolcesImageRequest = { sequential_image_generation_options?: { max_images?: number; }; + guidance_scale?: number; // 0-10,模型输出结果与prompt的一致程度,即生成图像的自由度;值越大,模型自由度越小,与用户输入的提示词相关性越强 response_format?: 'url' | 'base64'; size?: string; // 如 "2K" stream?: boolean; @@ -42,4 +72,39 @@ export type VolcesImageResponse = { status: string; message?: string; [key: string]: any; -}; \ No newline at end of file +}; + +export const size = [ + { + name: '1:1', + value: '2048x2048' + }, + { + name: '4:3', + value: '2304x1728' + }, + { + name: '3:4', + value: '1728x2304' + }, + { + name: '16:9', + value: '2560x1440' + }, + { + name: '9:16', + value: '1440x2560' + }, + { + name: '3:2', + value: '2496x1664' + }, + { + name: '2:3', + value: '1664x2496' + }, + { + name: '21:9', + value: '3024x1296' + } +];