@cloudbase/ai 2.24.7 → 2.24.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/ai",
3
- "version": "2.24.7",
3
+ "version": "2.24.8",
4
4
  "description": "cloudbase js sdk ai module",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -30,8 +30,8 @@
30
30
  "author": "",
31
31
  "license": "Apache-2.0",
32
32
  "dependencies": {
33
- "@cloudbase/types": "2.24.7",
34
- "@cloudbase/utilities": "2.24.7",
33
+ "@cloudbase/types": "2.24.8",
34
+ "@cloudbase/utilities": "2.24.8",
35
35
  "@mattiasbuelens/web-streams-adapter": "^0.1.0",
36
36
  "text-encoding-shim": "^1.0.5",
37
37
  "web-streams-polyfill": "^4.0.0"
@@ -39,5 +39,5 @@
39
39
  "devDependencies": {
40
40
  "@cloudbase/adapter-interface": "^0.7.1"
41
41
  },
42
- "gitHead": "d3df65b07405f0e29866486dc0e804fa30070414"
42
+ "gitHead": "f8deb2e86298c7729687df544d833cacdfe4bdad"
43
43
  }
@@ -1,74 +1,59 @@
1
1
  import type {
2
2
  ModelReq,
3
- ImageGenerateInput,
4
3
  // ImageEditInput,
5
4
  HunyuanGenerateImageInput,
6
5
  HunyuanGenerateImageOutput,
6
+ HunyuanARGenerateImageInput,
7
+ HunyuanARGenerateImageOutput,
7
8
  // HunyuanEditImageInput,
8
9
  // HunyuanEditImageOutput,
9
10
  } from '../type'
10
11
 
11
- // mock NoInfer
12
- type NoInfer<T> = [T][T extends any ? 0 : never]
12
+ interface HunyuanImageGenerateFn {
13
+ (input: HunyuanARGenerateImageInput): Promise<HunyuanARGenerateImageOutput>
14
+ (input: HunyuanGenerateImageInput): Promise<HunyuanGenerateImageOutput>
15
+ }
13
16
 
14
- type GenerateImageInput<TProvider extends string, TInput = unknown> = unknown extends TInput
15
- ? TProvider extends 'hunyuan-image'
16
- ? HunyuanGenerateImageInput
17
- : ImageGenerateInput
18
- : TInput
17
+ type GenerateImageFn<TProvider> = TProvider extends 'hunyuan-image'
18
+ ? HunyuanImageGenerateFn
19
+ : (input: unknown) => Promise<unknown>
19
20
 
20
- type GenerateImageOutput<TProvider extends string, TOutput = unknown> = unknown extends TOutput
21
- ? TProvider extends 'hunyuan-image'
22
- ? HunyuanGenerateImageOutput
23
- : unknown
24
- : TOutput
21
+ export class DefaultImageModel<TProvider extends string> {
22
+ public defaultGenerateImageSubUrl = 'images/generations'
25
23
 
26
- // type EditImageInput<T extends string, TInput = unknown> = unknown extends TInput
27
- // ? T extends 'hunyuan-image'
28
- // ? HunyuanEditImageInput
29
- // : ImageEditInput
30
- // : TInput
24
+ public generateImageSubUrlConfig: Record<string, Record<string, string>> = {
25
+ 'hunyuan-image': {
26
+ 'hunyuan-image-v3.0-v1.0.4': 'images/ar/generations',
27
+ 'hunyuan-image-v3.0-v1.0.1': 'images/ar/generations',
28
+ },
29
+ }
31
30
 
32
- // type EditImageOutput<T extends string, TOutput = unknown> = unknown extends TOutput
33
- // ? T extends 'hunyuan-image'
34
- // ? HunyuanEditImageOutput
35
- // : unknown
36
- // : TOutput
31
+ /** 生成图片 */
32
+ public generateImage: GenerateImageFn<TProvider>
37
33
 
38
- export class DefaultImageModel<TProvider extends string> {
39
- public generateImageSubUrl = 'images/generations'
40
- // public editImageSubUrl = 'images/edits'
34
+ constructor(private req: ModelReq, public baseUrl: string, public provider: TProvider) {
35
+ this.generateImage = this.generateImageImpl.bind(this) as GenerateImageFn<TProvider>
36
+ }
37
+
38
+ /** generateImage 的实际实现 */
39
+ private async generateImageImpl(input: HunyuanARGenerateImageInput | HunyuanGenerateImageInput,): Promise<HunyuanARGenerateImageOutput | HunyuanGenerateImageOutput> {
40
+ let subUrl = this.defaultGenerateImageSubUrl
41
41
 
42
- constructor(
43
- private req: ModelReq,
44
- public baseUrl: string,
45
- public provider: TProvider,
46
- ) {}
42
+ if (typeof input === 'object' && input && 'model' in input && typeof input.model === 'string') {
43
+ const newSubUrl = this.generateImageSubUrlConfig[this.provider]?.[input.model]
44
+ if (newSubUrl) subUrl = newSubUrl
45
+ }
47
46
 
48
- public async generateImage<TInput = unknown, TOutput = unknown>(input: NoInfer<GenerateImageInput<TProvider, TInput>>,): Promise<GenerateImageOutput<TProvider, TOutput>> {
49
- const res = await this.req({
50
- url: this.getGenerateUrl(),
47
+ const res = (await this.req({
48
+ url: this.getGenerateUrl(subUrl),
51
49
  data: input,
52
50
  stream: false,
53
- })
51
+ })) as HunyuanARGenerateImageOutput | HunyuanGenerateImageOutput
54
52
 
55
- return res as GenerateImageOutput<TProvider, TOutput>
53
+ return res
56
54
  }
57
55
 
58
- // public async editImage<TInput = unknown, TOutput = unknown>(input: NoInfer<EditImageInput<TProvider, TInput>>,): Promise<EditImageOutput<TProvider, TOutput>> {
59
- // const res = await this.req({
60
- // url: this.getEditUrl(),
61
- // data: input,
62
- // stream: false,
63
- // })
64
- // return res as EditImageOutput<TProvider, TOutput>
65
- // }
66
-
67
- private getGenerateUrl() {
68
- return `${this.baseUrl}/${this.provider}/${this.generateImageSubUrl}`
56
+ private getGenerateUrl(subUrl: string) {
57
+ return `${this.baseUrl}/${this.provider}/${subUrl}`
69
58
  }
70
-
71
- // private getEditUrl() {
72
- // return `${this.baseUrl}/${this.provider}/${this.editImageSubUrl}`
73
- // }
74
59
  }
package/src/type.ts CHANGED
@@ -169,13 +169,8 @@ export interface ImageEditInput {
169
169
  [key: string]: unknown // 允许额外的厂商特定参数
170
170
  }
171
171
 
172
- /**
173
- * 混元图片生成输入参数
174
- * 接口文档:POST /openapi/v1/images/generations
175
- */
176
172
  export interface HunyuanGenerateImageInput {
177
- /** 模型名称,默认为 hunyuan-image */
178
- model: 'hunyuan-image' | (string & {})
173
+ model: 'hunyuan-image'
179
174
  /** 用来生成图像的文本描述 */
180
175
  prompt: string
181
176
  /**
@@ -234,10 +229,41 @@ export interface HunyuanGenerateImageInput {
234
229
  seed?: number
235
230
  }
236
231
 
237
- /**
238
- * 混元图片编辑输入参数
239
- * 接口文档:POST /openapi/v1/images/edits
240
- */
232
+ export interface HunyuanARGenerateImageInput {
233
+ /** 模型名称:hunyuan-image-v3.0-v1.0.4(推荐)或 hunyuan-image-v3.0-v1.0.1 */
234
+ model: 'hunyuan-image-v3.0-v1.0.4' | 'hunyuan-image-v3.0-v1.0.1'
235
+ /** 生成图片使用的文本,不超过 8192 字符 */
236
+ prompt: string
237
+ /**
238
+ * 图片尺寸,格式 "${宽}x${高}",默认 "1024x1024"
239
+ * hunyuan-image-v3.0-v1.0.4:宽高 [512, 2048],面积不超过 1024x1024
240
+ * hunyuan-image-v3.0-v1.0.1:支持固定尺寸列表
241
+ */
242
+ size?: string
243
+ /** 生成种子,仅当生成图片数为 1 时生效,范围 [1, 4294967295] */
244
+ seed?: number
245
+ /** 业务自定义水印内容,限制 16 字符,生成在图片右下角 */
246
+ footnote?: string
247
+ /** 是否对 prompt 改写,默认开启。改写会增加约 30s 耗时 */
248
+ revise?: { value: boolean }
249
+ /** 改写是否开启 thinking 模式,默认开启。开启后效果提升但耗时增加(最大 60s) */
250
+ enable_thinking?: { value: boolean }
251
+ }
252
+
253
+ export interface HunyuanARGenerateImageOutput {
254
+ /** 此次请求的 id */
255
+ id: string
256
+ /** unix 时间戳 */
257
+ created: number
258
+ /** 返回的图片生成内容 */
259
+ data: Array<{
260
+ /** 生成的图片 url,有效期 24 小时 */
261
+ url: string
262
+ /** 改写后的 prompt */
263
+ revised_prompt?: string
264
+ }>
265
+ }
266
+
241
267
  export type HunyuanEditImageInput = {
242
268
  /** 模型名称,本期为 hunyuan-image,即为商品图编辑场景 */
243
269
  model: 'hunyuan-image' | (string & {})