@aigne/openai 1.74.0-beta.2 → 1.74.0-beta.4
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/README.md +4 -4
- package/dist/openai-chat-model.cjs +18 -18
- package/dist/openai-chat-model.d.cts +23 -23
- package/dist/openai-chat-model.d.cts.map +1 -1
- package/dist/openai-chat-model.d.mts +23 -23
- package/dist/openai-chat-model.d.mts.map +1 -1
- package/dist/openai-chat-model.mjs +7 -7
- package/dist/openai-chat-model.mjs.map +1 -1
- package/dist/openai-image-model.cjs +7 -7
- package/dist/openai-image-model.d.cts +23 -23
- package/dist/openai-image-model.d.cts.map +1 -1
- package/dist/openai-image-model.d.mts +23 -23
- package/dist/openai-image-model.d.mts.map +1 -1
- package/dist/openai-image-model.mjs +3 -3
- package/dist/openai-image-model.mjs.map +1 -1
- package/dist/openai-video-model.cjs +9 -9
- package/dist/openai-video-model.d.cts +42 -42
- package/dist/openai-video-model.d.cts.map +1 -1
- package/dist/openai-video-model.d.mts +42 -42
- package/dist/openai-video-model.d.mts.map +1 -1
- package/dist/openai-video-model.mjs +3 -3
- package/dist/openai-video-model.mjs.map +1 -1
- package/package.json +3 -6
- package/LICENSE.md +0 -93
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ImageModel, ImageModelInput, ImageModelOptions, ImageModelOutput, ModelInvokeOptions } from "@aigne/model-base";
|
|
2
2
|
import OpenAI, { ClientOptions } from "openai";
|
|
3
|
-
import { Camelize } from "@aigne/
|
|
3
|
+
import { Camelize } from "@aigne/model-base/utils/camelize";
|
|
4
4
|
|
|
5
5
|
//#region src/openai-image-model.d.ts
|
|
6
6
|
interface OpenAIImageModelInput extends ImageModelInput, Camelize<Omit<OpenAI.ImageGenerateParams | OpenAI.ImageEditParams, "prompt" | "model" | "n" | "response_format">> {}
|
|
7
7
|
interface OpenAIImageModelOutput extends ImageModelOutput {}
|
|
8
8
|
interface OpenAIImageModelOptions extends ImageModelOptions<OpenAIImageModelInput, OpenAIImageModelOutput> {
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
* API key for OpenAI API
|
|
11
|
+
*
|
|
12
|
+
* If not provided, will look for OPENAI_API_KEY in environment variables
|
|
13
|
+
*/
|
|
14
14
|
apiKey?: string;
|
|
15
15
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
* Base URL for OpenAI API
|
|
17
|
+
*
|
|
18
|
+
* Useful for proxies or alternate endpoints
|
|
19
|
+
*/
|
|
20
20
|
baseURL?: string;
|
|
21
21
|
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
* OpenAI model to use
|
|
23
|
+
*
|
|
24
|
+
* Defaults to 'dall-e-2'
|
|
25
|
+
*/
|
|
26
26
|
model?: string;
|
|
27
27
|
/**
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
* Additional model options to control behavior
|
|
29
|
+
*/
|
|
30
30
|
modelOptions?: Omit<Partial<OpenAIImageModelInput>, "model">;
|
|
31
31
|
/**
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
* Client options for OpenAI API
|
|
33
|
+
*/
|
|
34
34
|
clientOptions?: Partial<ClientOptions>;
|
|
35
35
|
}
|
|
36
36
|
declare class OpenAIImageModel extends ImageModel<OpenAIImageModelInput, OpenAIImageModelOutput> {
|
|
@@ -46,11 +46,11 @@ declare class OpenAIImageModel extends ImageModel<OpenAIImageModelInput, OpenAII
|
|
|
46
46
|
};
|
|
47
47
|
get modelOptions(): Omit<Partial<OpenAIImageModelInput>, "model"> | undefined;
|
|
48
48
|
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
process(input: OpenAIImageModelInput, _options:
|
|
49
|
+
* Process the input and generate a response
|
|
50
|
+
* @param input The input to process
|
|
51
|
+
* @returns The generated response
|
|
52
|
+
*/
|
|
53
|
+
process(input: OpenAIImageModelInput, _options: ModelInvokeOptions): Promise<OpenAIImageModelOutput>;
|
|
54
54
|
}
|
|
55
55
|
//#endregion
|
|
56
56
|
export { OpenAIImageModel, OpenAIImageModelInput, OpenAIImageModelOptions, OpenAIImageModelOutput };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-image-model.d.mts","names":[],"sources":["../src/openai-image-model.ts"],"mappings":";;;;;UAqCiB,qBAAA,SACP,eAAA,EACN,QAAA,CACE,IAAA,CACE,MAAA,CAAO,mBAAA,GAAsB,MAAA,CAAO,eAAA;AAAA,UAK3B,sBAAA,SAA+B,gBAAA;AAAA,UAE/B,uBAAA,SACP,iBAAA,CAAkB,qBAAA,EAAuB,sBAAA;
|
|
1
|
+
{"version":3,"file":"openai-image-model.d.mts","names":[],"sources":["../src/openai-image-model.ts"],"mappings":";;;;;UAqCiB,qBAAA,SACP,eAAA,EACN,QAAA,CACE,IAAA,CACE,MAAA,CAAO,mBAAA,GAAsB,MAAA,CAAO,eAAA;AAAA,UAK3B,sBAAA,SAA+B,gBAAA;AAAA,UAE/B,uBAAA,SACP,iBAAA,CAAkB,qBAAA,EAAuB,sBAAA;EARd;;;;;EAcnC,MAAA;EAjBQ;;;;;EAwBR,OAAA;EArB0C;;;AAK5C;;EAuBE,KAAA;EAvB8C;;AAEhD;EA0BE,YAAA,GAAe,IAAA,CAAK,OAAA,CAAQ,qBAAA;;;;EAK5B,aAAA,GAAgB,OAAA,CAAQ,aAAA;AAAA;AAAA,cAeb,gBAAA,SAAyB,UAAA,CAAW,qBAAA,EAAuB,sBAAA;EAC1C,OAAA,GAAU,uBAAA;cAAV,OAAA,GAAU,uBAAA;EAAA,UAS5B,OAAA,GAAU,MAAA;EAAA,UAEV,aAAA;EAAA,IAEN,MAAA,CAAA,GAAM,MAAA;EAAA,IAmBG,UAAA,CAAA;;;;;MAQT,YAAA,CAAA,GAAY,IAAA,CAAA,OAAA,CAAA,qBAAA;EA7DhB;;;;;EAsEe,OAAA,CACb,KAAA,EAAO,qBAAA,EACP,QAAA,EAAU,kBAAA,GACT,OAAA,CAAQ,sBAAA;AAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CustomOpenAI } from "./openai.mjs";
|
|
2
|
-
import { ImageModel, imageModelInputSchema } from "@aigne/
|
|
3
|
-
import { checkArguments, pick } from "@aigne/
|
|
2
|
+
import { ImageModel, imageModelInputSchema } from "@aigne/model-base";
|
|
3
|
+
import { checkArguments, pick } from "@aigne/model-base/utils/type-utils";
|
|
4
4
|
import { z } from "zod";
|
|
5
|
-
import { snakelize } from "@aigne/
|
|
5
|
+
import { snakelize } from "@aigne/model-base/utils/camelize";
|
|
6
6
|
|
|
7
7
|
//#region src/openai-image-model.ts
|
|
8
8
|
const DEFAULT_MODEL = "dall-e-2";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-image-model.mjs","names":[],"sources":["../src/openai-image-model.ts"],"sourcesContent":["import {\n type
|
|
1
|
+
{"version":3,"file":"openai-image-model.mjs","names":[],"sources":["../src/openai-image-model.ts"],"sourcesContent":["import {\n type FileUnionContent,\n ImageModel,\n type ImageModelInput,\n type ImageModelOptions,\n type ImageModelOutput,\n imageModelInputSchema,\n type ModelInvokeOptions,\n} from \"@aigne/model-base\";\nimport { type Camelize, snakelize } from \"@aigne/model-base/utils/camelize\";\nimport { checkArguments, pick } from \"@aigne/model-base/utils/type-utils\";\nimport type OpenAI from \"openai\";\nimport type { ClientOptions } from \"openai\";\nimport { type ZodType, z } from \"zod\";\nimport { CustomOpenAI } from \"./openai.js\";\n\nconst DEFAULT_MODEL = \"dall-e-2\";\nconst OUTPUT_MIME_TYPE = \"image/png\";\n\nconst SUPPORTED_PARAMS: { [key: string]: any[] } = {\n \"dall-e-2\": [\"prompt\", \"size\", \"n\"],\n \"dall-e-3\": [\"prompt\", \"size\", \"n\", \"quality\", \"style\", \"user\"],\n \"gpt-image-1\": [\n \"prompt\",\n \"size\",\n \"background\",\n \"moderation\",\n \"outputCompression\",\n \"outputFormat\",\n \"quality\",\n \"user\",\n \"stream\",\n ],\n};\n\nconst SUPPORT_EDIT_MODELS = [\"gpt-image-1\"];\n\nexport interface OpenAIImageModelInput\n extends ImageModelInput,\n Camelize<\n Omit<\n OpenAI.ImageGenerateParams | OpenAI.ImageEditParams,\n \"prompt\" | \"model\" | \"n\" | \"response_format\"\n >\n > {}\n\nexport interface OpenAIImageModelOutput extends ImageModelOutput {}\n\nexport interface OpenAIImageModelOptions\n extends ImageModelOptions<OpenAIImageModelInput, OpenAIImageModelOutput> {\n /**\n * API key for OpenAI API\n *\n * If not provided, will look for OPENAI_API_KEY in environment variables\n */\n apiKey?: string;\n\n /**\n * Base URL for OpenAI API\n *\n * Useful for proxies or alternate endpoints\n */\n baseURL?: string;\n\n /**\n * OpenAI model to use\n *\n * Defaults to 'dall-e-2'\n */\n model?: string;\n\n /**\n * Additional model options to control behavior\n */\n modelOptions?: Omit<Partial<OpenAIImageModelInput>, \"model\">;\n\n /**\n * Client options for OpenAI API\n */\n clientOptions?: Partial<ClientOptions>;\n}\n\nconst openAIImageModelInputSchema: ZodType<OpenAIImageModelInput> = imageModelInputSchema.extend(\n {},\n);\n\nconst openAIImageModelOptionsSchema = z.object({\n apiKey: z.string().optional(),\n baseURL: z.string().optional(),\n model: z.string().optional(),\n modelOptions: z.object({}).optional(),\n clientOptions: z.object({}).optional(),\n});\n\nexport class OpenAIImageModel extends ImageModel<OpenAIImageModelInput, OpenAIImageModelOutput> {\n constructor(public override options?: OpenAIImageModelOptions) {\n super({\n ...options,\n inputSchema: openAIImageModelInputSchema,\n description: options?.description ?? \"Draw or edit image by OpenAI image models\",\n });\n if (options) checkArguments(this.name, openAIImageModelOptionsSchema, options);\n }\n\n protected _client?: OpenAI;\n\n protected apiKeyEnvName = \"OPENAI_API_KEY\";\n\n get client() {\n if (this._client) return this._client;\n\n const { apiKey, url } = this.credential;\n\n if (!apiKey)\n throw new Error(\n `${this.name} requires an API key. Please provide it via \\`options.apiKey\\`, or set the \\`${this.apiKeyEnvName}\\` environment variable`,\n );\n\n this._client ??= new CustomOpenAI({\n baseURL: url,\n apiKey,\n ...this.options?.clientOptions,\n });\n\n return this._client;\n }\n\n override get credential() {\n return {\n url: this.options?.baseURL || process.env.OPENAI_BASE_URL,\n apiKey: this.options?.apiKey || process.env[this.apiKeyEnvName],\n model: this.options?.model || DEFAULT_MODEL,\n };\n }\n\n get modelOptions() {\n return this.options?.modelOptions;\n }\n\n /**\n * Process the input and generate a response\n * @param input The input to process\n * @returns The generated response\n */\n override async process(\n input: OpenAIImageModelInput,\n _options: ModelInvokeOptions,\n ): Promise<OpenAIImageModelOutput> {\n const model = input.modelOptions?.model || this.credential.model;\n\n if (input.image?.length && !SUPPORT_EDIT_MODELS.includes(model)) {\n throw new Error(`Model ${model} does not support image editing`);\n }\n\n const body: OpenAI.ImageGenerateParams | OpenAI.ImageEditParams = {\n ...snakelize(\n pick(\n { ...this.modelOptions, ...input.modelOptions, ...input },\n SUPPORTED_PARAMS[model] || SUPPORTED_PARAMS[DEFAULT_MODEL],\n ),\n ),\n model,\n };\n\n const response = input.image?.length\n ? ((await this.client.images.edit(\n {\n ...(body as OpenAI.ImageEditParams),\n image: await Promise.all(\n input.image.map((image) =>\n this.transformFileType(\"file\", image).then(\n (file) =>\n new File([Buffer.from(file.data, \"base64\")], file.filename || \"image.png\", {\n type: file.mimeType,\n }),\n ),\n ),\n ),\n },\n { stream: false },\n )) as OpenAI.ImagesResponse)\n : ((await this.client.images.generate(\n { ...body },\n { stream: false },\n )) as OpenAI.ImagesResponse);\n\n return {\n images: (response.data ?? []).map<FileUnionContent>((image) => {\n if (image.url) return { type: \"url\", url: image.url, mimeType: OUTPUT_MIME_TYPE };\n if (image.b64_json)\n return { type: \"file\", data: image.b64_json, mimeType: OUTPUT_MIME_TYPE };\n throw new Error(\"Image response does not contain a valid URL or base64 data\");\n }),\n usage: {\n inputTokens: response.usage?.input_tokens || 0,\n outputTokens: response.usage?.output_tokens || 0,\n },\n model,\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_openai = require('./openai.cjs');
|
|
3
|
-
let
|
|
4
|
-
let
|
|
5
|
-
let
|
|
3
|
+
let _aigne_model_base = require("@aigne/model-base");
|
|
4
|
+
let _aigne_model_base_utils_logger = require("@aigne/model-base/utils/logger");
|
|
5
|
+
let _aigne_model_base_utils_type_utils = require("@aigne/model-base/utils/type-utils");
|
|
6
6
|
let zod = require("zod");
|
|
7
7
|
|
|
8
8
|
//#region src/openai-video-model.ts
|
|
9
9
|
const DEFAULT_MODEL = "sora-2";
|
|
10
10
|
const DEFAULT_SECONDS = 4;
|
|
11
|
-
const openAIVideoModelInputSchema =
|
|
11
|
+
const openAIVideoModelInputSchema = _aigne_model_base.videoModelInputSchema.extend({
|
|
12
12
|
model: zod.z.enum(["sora-2", "sora-2-pro"]).optional(),
|
|
13
13
|
seconds: zod.z.enum([
|
|
14
14
|
"4",
|
|
@@ -30,7 +30,7 @@ const openAIVideoModelOptionsSchema = zod.z.object({
|
|
|
30
30
|
clientOptions: zod.z.object({}).optional(),
|
|
31
31
|
pollingInterval: zod.z.number().optional()
|
|
32
32
|
});
|
|
33
|
-
var OpenAIVideoModel = class extends
|
|
33
|
+
var OpenAIVideoModel = class extends _aigne_model_base.VideoModel {
|
|
34
34
|
constructor(options) {
|
|
35
35
|
super({
|
|
36
36
|
...options,
|
|
@@ -38,7 +38,7 @@ var OpenAIVideoModel = class extends _aigne_core.VideoModel {
|
|
|
38
38
|
inputSchema: openAIVideoModelInputSchema
|
|
39
39
|
});
|
|
40
40
|
this.options = options;
|
|
41
|
-
if (options) (0,
|
|
41
|
+
if (options) (0, _aigne_model_base_utils_type_utils.checkArguments)(this.name, openAIVideoModelOptionsSchema, options);
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
44
|
* @hidden
|
|
@@ -66,7 +66,7 @@ var OpenAIVideoModel = class extends _aigne_core.VideoModel {
|
|
|
66
66
|
return this.options?.modelOptions;
|
|
67
67
|
}
|
|
68
68
|
async downloadToFile(videoId) {
|
|
69
|
-
|
|
69
|
+
_aigne_model_base_utils_logger.logger.debug("Downloading video content...");
|
|
70
70
|
const arrayBuffer = await (await this.client.videos.downloadContent(videoId)).arrayBuffer();
|
|
71
71
|
return Buffer.from(arrayBuffer).toString("base64");
|
|
72
72
|
}
|
|
@@ -80,14 +80,14 @@ var OpenAIVideoModel = class extends _aigne_core.VideoModel {
|
|
|
80
80
|
if (input.size) createParams.size = input.size;
|
|
81
81
|
if (input.image) createParams.input_reference = await this.transformFileType("file", input.image).then((file) => new File([Buffer.from(file.data, "base64")], file.filename || "image.png", { type: file.mimeType }));
|
|
82
82
|
let video = await this.client.videos.create(createParams);
|
|
83
|
-
|
|
83
|
+
_aigne_model_base_utils_logger.logger.debug(`Video generation started: ${video.id}`);
|
|
84
84
|
const pollingInterval = this.options?.pollingInterval ?? 2e3;
|
|
85
85
|
while (video.status === "in_progress" || video.status === "queued") {
|
|
86
86
|
await new Promise((resolve) => setTimeout(resolve, pollingInterval));
|
|
87
87
|
video = await this.client.videos.retrieve(video.id);
|
|
88
88
|
const progress = video.progress ?? 0;
|
|
89
89
|
const statusText = video.status === "queued" ? "Queued" : "Processing";
|
|
90
|
-
|
|
90
|
+
_aigne_model_base_utils_logger.logger.debug(`${statusText}: ${progress.toFixed(1)}%`);
|
|
91
91
|
}
|
|
92
92
|
if (video.status === "failed") throw new Error(`Video generation failed: ${video.error?.message || "Unknown error"}`);
|
|
93
93
|
if (video.status !== "completed") throw new Error(`Unexpected video status: ${video.status}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ModelInvokeOptions, VideoModel, VideoModelInput, VideoModelOptions, VideoModelOutput } from "@aigne/model-base";
|
|
2
2
|
import OpenAI, { ClientOptions } from "openai";
|
|
3
3
|
|
|
4
4
|
//#region src/openai-video-model.d.ts
|
|
@@ -7,28 +7,28 @@ import OpenAI, { ClientOptions } from "openai";
|
|
|
7
7
|
*/
|
|
8
8
|
interface OpenAIVideoModelInput extends VideoModelInput {
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
* Sora model to use for video generation
|
|
11
|
+
*
|
|
12
|
+
* - `sora-2`: Standard version, lower cost
|
|
13
|
+
* - `sora-2-pro`: Pro version, higher quality
|
|
14
|
+
*
|
|
15
|
+
* @default "sora-2"
|
|
16
|
+
*/
|
|
17
17
|
model?: "sora-2" | "sora-2-pro";
|
|
18
18
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
* Video resolution (width x height)
|
|
20
|
+
*
|
|
21
|
+
* - `720x1280`: Vertical video (9:16)
|
|
22
|
+
* - `1280x720`: Horizontal video (16:9)
|
|
23
|
+
* - `1024x1792`: Vertical video (9:16, higher resolution)
|
|
24
|
+
* - `1792x1024`: Horizontal video (16:9, higher resolution)
|
|
25
|
+
*/
|
|
26
26
|
size?: "720x1280" | "1280x720" | "1024x1792" | "1792x1024";
|
|
27
27
|
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
* Video duration in seconds
|
|
29
|
+
*
|
|
30
|
+
* @default "4"
|
|
31
|
+
*/
|
|
32
32
|
seconds?: "4" | "8" | "12";
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
@@ -40,44 +40,44 @@ interface OpenAIVideoModelOutput extends VideoModelOutput {}
|
|
|
40
40
|
*/
|
|
41
41
|
interface OpenAIVideoModelOptions extends VideoModelOptions<OpenAIVideoModelInput, OpenAIVideoModelOutput> {
|
|
42
42
|
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
* API key for OpenAI API
|
|
44
|
+
*
|
|
45
|
+
* If not provided, will look for OPENAI_API_KEY in environment variables
|
|
46
|
+
*/
|
|
47
47
|
apiKey?: string;
|
|
48
48
|
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
* Base URL for OpenAI API
|
|
50
|
+
*
|
|
51
|
+
* Useful for proxies or alternate endpoints
|
|
52
|
+
*/
|
|
53
53
|
baseURL?: string;
|
|
54
54
|
/**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
* OpenAI model to use
|
|
56
|
+
*
|
|
57
|
+
* Defaults to 'sora-2'
|
|
58
|
+
*/
|
|
59
59
|
model?: string;
|
|
60
60
|
/**
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
* Additional model options to control behavior
|
|
62
|
+
*/
|
|
63
63
|
modelOptions?: Omit<Partial<OpenAIVideoModelInput>, "model">;
|
|
64
64
|
/**
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
* Client options for OpenAI API
|
|
66
|
+
*/
|
|
67
67
|
clientOptions?: Partial<ClientOptions>;
|
|
68
68
|
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
* Polling interval in milliseconds for checking video generation status
|
|
70
|
+
*
|
|
71
|
+
* Defaults to 2000ms (2 seconds)
|
|
72
|
+
*/
|
|
73
73
|
pollingInterval?: number;
|
|
74
74
|
}
|
|
75
75
|
declare class OpenAIVideoModel extends VideoModel<OpenAIVideoModelInput, OpenAIVideoModelOutput> {
|
|
76
76
|
options?: OpenAIVideoModelOptions | undefined;
|
|
77
77
|
constructor(options?: OpenAIVideoModelOptions | undefined);
|
|
78
78
|
/**
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
* @hidden
|
|
80
|
+
*/
|
|
81
81
|
protected _client?: OpenAI;
|
|
82
82
|
protected apiKeyEnvName: string;
|
|
83
83
|
get client(): OpenAI;
|
|
@@ -88,7 +88,7 @@ declare class OpenAIVideoModel extends VideoModel<OpenAIVideoModelInput, OpenAIV
|
|
|
88
88
|
};
|
|
89
89
|
get modelOptions(): Omit<Partial<OpenAIVideoModelInput>, "model"> | undefined;
|
|
90
90
|
downloadToFile(videoId: string): Promise<string>;
|
|
91
|
-
process(input: OpenAIVideoModelInput, _options:
|
|
91
|
+
process(input: OpenAIVideoModelInput, _options: ModelInvokeOptions): Promise<OpenAIVideoModelOutput>;
|
|
92
92
|
}
|
|
93
93
|
//#endregion
|
|
94
94
|
export { OpenAIVideoModel, OpenAIVideoModelInput, OpenAIVideoModelOptions, OpenAIVideoModelOutput };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-video-model.d.cts","names":[],"sources":["../src/openai-video-model.ts"],"mappings":";;;;;AAqBA
|
|
1
|
+
{"version":3,"file":"openai-video-model.d.cts","names":[],"sources":["../src/openai-video-model.ts"],"mappings":";;;;;AAqBA;;UAAiB,qBAAA,SAA8B,eAAA;EAAe;;;;;;;AAgC9D;EAvBE,KAAA;;;;AA4BF;;;;;EAlBE,IAAA;EA4CoB;;;;;EArCpB,OAAA;AAAA;;;;UAMe,sBAAA,SAA+B,gBAAA;;;;UAK/B,uBAAA,SACP,iBAAA,CAAkB,qBAAA,EAAuB,sBAAA;EAyBrB;;;;;EAnB5B,MAAA;EA+Be;AAkBjB;;;;EA1CE,OAAA;EA2CsC;;;;;EApCtC,KAAA;EA2EgB;;;EAtEhB,YAAA,GAAe,IAAA,CAAK,OAAA,CAAQ,qBAAA;EAqFjB;;;EAhFX,aAAA,GAAgB,OAAA,CAAQ,aAAA;EAyBsB;;;;;EAlB9C,eAAA;AAAA;AAAA,cAkBW,gBAAA,SAAyB,UAAA,CAAW,qBAAA,EAAuB,sBAAA;EAC1C,OAAA,GAAU,uBAAA;cAAV,OAAA,GAAU,uBAAA;EAYlB;;;EAAA,UAAV,OAAA,GAAU,MAAA;EAAA,UAEV,aAAA;EAAA,IAEN,MAAA,CAAA,GAAM,MAAA;EAAA,IAeG,UAAA,CAAA;;;;;MAQT,YAAA,CAAA,GAAY,IAAA,CAAA,OAAA,CAAA,qBAAA;EAIV,cAAA,CAAe,OAAA,WAAkB,OAAA;EAQxB,OAAA,CACb,KAAA,EAAO,qBAAA,EACP,QAAA,EAAU,kBAAA,GACT,OAAA,CAAQ,sBAAA;AAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ModelInvokeOptions, VideoModel, VideoModelInput, VideoModelOptions, VideoModelOutput } from "@aigne/model-base";
|
|
2
2
|
import OpenAI, { ClientOptions } from "openai";
|
|
3
3
|
|
|
4
4
|
//#region src/openai-video-model.d.ts
|
|
@@ -7,28 +7,28 @@ import OpenAI, { ClientOptions } from "openai";
|
|
|
7
7
|
*/
|
|
8
8
|
interface OpenAIVideoModelInput extends VideoModelInput {
|
|
9
9
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
* Sora model to use for video generation
|
|
11
|
+
*
|
|
12
|
+
* - `sora-2`: Standard version, lower cost
|
|
13
|
+
* - `sora-2-pro`: Pro version, higher quality
|
|
14
|
+
*
|
|
15
|
+
* @default "sora-2"
|
|
16
|
+
*/
|
|
17
17
|
model?: "sora-2" | "sora-2-pro";
|
|
18
18
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
* Video resolution (width x height)
|
|
20
|
+
*
|
|
21
|
+
* - `720x1280`: Vertical video (9:16)
|
|
22
|
+
* - `1280x720`: Horizontal video (16:9)
|
|
23
|
+
* - `1024x1792`: Vertical video (9:16, higher resolution)
|
|
24
|
+
* - `1792x1024`: Horizontal video (16:9, higher resolution)
|
|
25
|
+
*/
|
|
26
26
|
size?: "720x1280" | "1280x720" | "1024x1792" | "1792x1024";
|
|
27
27
|
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
* Video duration in seconds
|
|
29
|
+
*
|
|
30
|
+
* @default "4"
|
|
31
|
+
*/
|
|
32
32
|
seconds?: "4" | "8" | "12";
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
@@ -40,44 +40,44 @@ interface OpenAIVideoModelOutput extends VideoModelOutput {}
|
|
|
40
40
|
*/
|
|
41
41
|
interface OpenAIVideoModelOptions extends VideoModelOptions<OpenAIVideoModelInput, OpenAIVideoModelOutput> {
|
|
42
42
|
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
* API key for OpenAI API
|
|
44
|
+
*
|
|
45
|
+
* If not provided, will look for OPENAI_API_KEY in environment variables
|
|
46
|
+
*/
|
|
47
47
|
apiKey?: string;
|
|
48
48
|
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
* Base URL for OpenAI API
|
|
50
|
+
*
|
|
51
|
+
* Useful for proxies or alternate endpoints
|
|
52
|
+
*/
|
|
53
53
|
baseURL?: string;
|
|
54
54
|
/**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
* OpenAI model to use
|
|
56
|
+
*
|
|
57
|
+
* Defaults to 'sora-2'
|
|
58
|
+
*/
|
|
59
59
|
model?: string;
|
|
60
60
|
/**
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
* Additional model options to control behavior
|
|
62
|
+
*/
|
|
63
63
|
modelOptions?: Omit<Partial<OpenAIVideoModelInput>, "model">;
|
|
64
64
|
/**
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
* Client options for OpenAI API
|
|
66
|
+
*/
|
|
67
67
|
clientOptions?: Partial<ClientOptions>;
|
|
68
68
|
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
* Polling interval in milliseconds for checking video generation status
|
|
70
|
+
*
|
|
71
|
+
* Defaults to 2000ms (2 seconds)
|
|
72
|
+
*/
|
|
73
73
|
pollingInterval?: number;
|
|
74
74
|
}
|
|
75
75
|
declare class OpenAIVideoModel extends VideoModel<OpenAIVideoModelInput, OpenAIVideoModelOutput> {
|
|
76
76
|
options?: OpenAIVideoModelOptions | undefined;
|
|
77
77
|
constructor(options?: OpenAIVideoModelOptions | undefined);
|
|
78
78
|
/**
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
* @hidden
|
|
80
|
+
*/
|
|
81
81
|
protected _client?: OpenAI;
|
|
82
82
|
protected apiKeyEnvName: string;
|
|
83
83
|
get client(): OpenAI;
|
|
@@ -88,7 +88,7 @@ declare class OpenAIVideoModel extends VideoModel<OpenAIVideoModelInput, OpenAIV
|
|
|
88
88
|
};
|
|
89
89
|
get modelOptions(): Omit<Partial<OpenAIVideoModelInput>, "model"> | undefined;
|
|
90
90
|
downloadToFile(videoId: string): Promise<string>;
|
|
91
|
-
process(input: OpenAIVideoModelInput, _options:
|
|
91
|
+
process(input: OpenAIVideoModelInput, _options: ModelInvokeOptions): Promise<OpenAIVideoModelOutput>;
|
|
92
92
|
}
|
|
93
93
|
//#endregion
|
|
94
94
|
export { OpenAIVideoModel, OpenAIVideoModelInput, OpenAIVideoModelOptions, OpenAIVideoModelOutput };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-video-model.d.mts","names":[],"sources":["../src/openai-video-model.ts"],"mappings":";;;;;AAqBA
|
|
1
|
+
{"version":3,"file":"openai-video-model.d.mts","names":[],"sources":["../src/openai-video-model.ts"],"mappings":";;;;;AAqBA;;UAAiB,qBAAA,SAA8B,eAAA;EAAe;;;;;;;AAgC9D;EAvBE,KAAA;;;;AA4BF;;;;;EAlBE,IAAA;EA4CoB;;;;;EArCpB,OAAA;AAAA;;;;UAMe,sBAAA,SAA+B,gBAAA;;;;UAK/B,uBAAA,SACP,iBAAA,CAAkB,qBAAA,EAAuB,sBAAA;EAyBrB;;;;;EAnB5B,MAAA;EA+Be;AAkBjB;;;;EA1CE,OAAA;EA2CsC;;;;;EApCtC,KAAA;EA2EgB;;;EAtEhB,YAAA,GAAe,IAAA,CAAK,OAAA,CAAQ,qBAAA;EAqFjB;;;EAhFX,aAAA,GAAgB,OAAA,CAAQ,aAAA;EAyBsB;;;;;EAlB9C,eAAA;AAAA;AAAA,cAkBW,gBAAA,SAAyB,UAAA,CAAW,qBAAA,EAAuB,sBAAA;EAC1C,OAAA,GAAU,uBAAA;cAAV,OAAA,GAAU,uBAAA;EAYlB;;;EAAA,UAAV,OAAA,GAAU,MAAA;EAAA,UAEV,aAAA;EAAA,IAEN,MAAA,CAAA,GAAM,MAAA;EAAA,IAeG,UAAA,CAAA;;;;;MAQT,YAAA,CAAA,GAAY,IAAA,CAAA,OAAA,CAAA,qBAAA;EAIV,cAAA,CAAe,OAAA,WAAkB,OAAA;EAQxB,OAAA,CACb,KAAA,EAAO,qBAAA,EACP,QAAA,EAAU,kBAAA,GACT,OAAA,CAAQ,sBAAA;AAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CustomOpenAI } from "./openai.mjs";
|
|
2
|
-
import { VideoModel, videoModelInputSchema } from "@aigne/
|
|
3
|
-
import { logger } from "@aigne/
|
|
4
|
-
import { checkArguments } from "@aigne/
|
|
2
|
+
import { VideoModel, videoModelInputSchema } from "@aigne/model-base";
|
|
3
|
+
import { logger } from "@aigne/model-base/utils/logger";
|
|
4
|
+
import { checkArguments } from "@aigne/model-base/utils/type-utils";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
|
|
7
7
|
//#region src/openai-video-model.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-video-model.mjs","names":[],"sources":["../src/openai-video-model.ts"],"sourcesContent":["import {\n type
|
|
1
|
+
{"version":3,"file":"openai-video-model.mjs","names":[],"sources":["../src/openai-video-model.ts"],"sourcesContent":["import {\n type ModelInvokeOptions,\n VideoModel,\n type VideoModelInput,\n type VideoModelOptions,\n type VideoModelOutput,\n videoModelInputSchema,\n} from \"@aigne/model-base\";\nimport { logger } from \"@aigne/model-base/utils/logger\";\nimport { checkArguments } from \"@aigne/model-base/utils/type-utils\";\nimport type OpenAI from \"openai\";\nimport type { ClientOptions } from \"openai\";\nimport { type ZodType, z } from \"zod\";\nimport { CustomOpenAI } from \"./openai.js\";\n\nconst DEFAULT_MODEL = \"sora-2\";\nconst DEFAULT_SECONDS = 4;\n\n/**\n * Input options for OpenAI Video Model\n */\nexport interface OpenAIVideoModelInput extends VideoModelInput {\n /**\n * Sora model to use for video generation\n *\n * - `sora-2`: Standard version, lower cost\n * - `sora-2-pro`: Pro version, higher quality\n *\n * @default \"sora-2\"\n */\n model?: \"sora-2\" | \"sora-2-pro\";\n\n /**\n * Video resolution (width x height)\n *\n * - `720x1280`: Vertical video (9:16)\n * - `1280x720`: Horizontal video (16:9)\n * - `1024x1792`: Vertical video (9:16, higher resolution)\n * - `1792x1024`: Horizontal video (16:9, higher resolution)\n */\n size?: \"720x1280\" | \"1280x720\" | \"1024x1792\" | \"1792x1024\";\n\n /**\n * Video duration in seconds\n *\n * @default \"4\"\n */\n seconds?: \"4\" | \"8\" | \"12\";\n}\n\n/**\n * Output from OpenAI Video Model\n */\nexport interface OpenAIVideoModelOutput extends VideoModelOutput {}\n\n/**\n * Configuration options for OpenAI Video Model\n */\nexport interface OpenAIVideoModelOptions\n extends VideoModelOptions<OpenAIVideoModelInput, OpenAIVideoModelOutput> {\n /**\n * API key for OpenAI API\n *\n * If not provided, will look for OPENAI_API_KEY in environment variables\n */\n apiKey?: string;\n\n /**\n * Base URL for OpenAI API\n *\n * Useful for proxies or alternate endpoints\n */\n baseURL?: string;\n\n /**\n * OpenAI model to use\n *\n * Defaults to 'sora-2'\n */\n model?: string;\n\n /**\n * Additional model options to control behavior\n */\n modelOptions?: Omit<Partial<OpenAIVideoModelInput>, \"model\">;\n\n /**\n * Client options for OpenAI API\n */\n clientOptions?: Partial<ClientOptions>;\n\n /**\n * Polling interval in milliseconds for checking video generation status\n *\n * Defaults to 2000ms (2 seconds)\n */\n pollingInterval?: number;\n}\n\nconst openAIVideoModelInputSchema: ZodType<OpenAIVideoModelInput> = videoModelInputSchema.extend({\n model: z.enum([\"sora-2\", \"sora-2-pro\"]).optional(),\n seconds: z.enum([\"4\", \"8\", \"12\"]).optional(),\n size: z.enum([\"720x1280\", \"1280x720\", \"1024x1792\", \"1792x1024\"]).optional(),\n});\n\nconst openAIVideoModelOptionsSchema = z.object({\n apiKey: z.string().optional(),\n baseURL: z.string().optional(),\n model: z.string().optional(),\n modelOptions: z.object({}).optional(),\n clientOptions: z.object({}).optional(),\n pollingInterval: z.number().optional(),\n});\n\nexport class OpenAIVideoModel extends VideoModel<OpenAIVideoModelInput, OpenAIVideoModelOutput> {\n constructor(public override options?: OpenAIVideoModelOptions) {\n super({\n ...options,\n description: options?.description ?? \"Generate videos using OpenAI Sora models\",\n inputSchema: openAIVideoModelInputSchema,\n });\n if (options) checkArguments(this.name, openAIVideoModelOptionsSchema, options);\n }\n\n /**\n * @hidden\n */\n protected _client?: OpenAI;\n\n protected apiKeyEnvName = \"OPENAI_API_KEY\";\n\n get client() {\n const { apiKey, url } = this.credential;\n if (!apiKey)\n throw new Error(\n `${this.name} requires an API key. Please provide it via \\`options.apiKey\\`, or set the \\`${this.apiKeyEnvName}\\` environment variable`,\n );\n\n this._client ??= new CustomOpenAI({\n baseURL: url,\n apiKey,\n ...this.options?.clientOptions,\n });\n return this._client;\n }\n\n override get credential() {\n return {\n url: this.options?.baseURL || process.env.OPENAI_BASE_URL,\n apiKey: this.options?.apiKey || process.env[this.apiKeyEnvName],\n model: this.options?.model || DEFAULT_MODEL,\n };\n }\n\n get modelOptions() {\n return this.options?.modelOptions;\n }\n\n async downloadToFile(videoId: string): Promise<string> {\n logger.debug(\"Downloading video content...\");\n const content = await this.client.videos.downloadContent(videoId);\n const arrayBuffer = await content.arrayBuffer();\n const buffer = Buffer.from(arrayBuffer);\n return buffer.toString(\"base64\");\n }\n\n override async process(\n input: OpenAIVideoModelInput,\n _options: ModelInvokeOptions,\n ): Promise<OpenAIVideoModelOutput> {\n const model = input.model ?? input.modelOptions?.model ?? this.credential.model;\n\n const createParams: OpenAI.Videos.VideoCreateParams = {\n model: model as OpenAI.Videos.VideoModel,\n prompt: input.prompt,\n };\n\n if (input.seconds) createParams.seconds = input.seconds;\n if (input.size) createParams.size = input.size;\n if (input.image) {\n createParams.input_reference = await this.transformFileType(\"file\", input.image).then(\n (file) =>\n new File([Buffer.from(file.data, \"base64\")], file.filename || \"image.png\", {\n type: file.mimeType,\n }),\n );\n }\n\n let video = await this.client.videos.create(createParams);\n logger.debug(`Video generation started: ${video.id}`);\n\n const pollingInterval = this.options?.pollingInterval ?? 2000;\n while (video.status === \"in_progress\" || video.status === \"queued\") {\n await new Promise((resolve) => setTimeout(resolve, pollingInterval));\n video = await this.client.videos.retrieve(video.id);\n\n const progress = video.progress ?? 0;\n const statusText = video.status === \"queued\" ? \"Queued\" : \"Processing\";\n logger.debug(`${statusText}: ${progress.toFixed(1)}%`);\n }\n\n if (video.status === \"failed\") {\n throw new Error(`Video generation failed: ${video.error?.message || \"Unknown error\"}`);\n }\n\n if (video.status !== \"completed\") {\n throw new Error(`Unexpected video status: ${video.status}`);\n }\n\n return {\n videos: [\n {\n type: \"file\",\n data: await this.downloadToFile(video.id),\n mimeType: \"video/mp4\",\n filename: `${video.id}.mp4`,\n },\n ],\n usage: {\n inputTokens: 0,\n outputTokens: 0,\n },\n model,\n seconds: input.seconds ? parseInt(input.seconds, 10) : DEFAULT_SECONDS,\n };\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aigne/openai",
|
|
3
|
-
"version": "1.74.0-beta.
|
|
3
|
+
"version": "1.74.0-beta.4",
|
|
4
4
|
"description": "AIGNE OpenAI SDK for integrating with OpenAI's GPT models and API services",
|
|
5
5
|
"license": "Elastic-2.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -36,8 +36,7 @@
|
|
|
36
36
|
"@aigne/uuid": "^13.0.1",
|
|
37
37
|
"openai": "^6.14.0",
|
|
38
38
|
"zod": "^3.25.67",
|
|
39
|
-
"@aigne/
|
|
40
|
-
"@aigne/utils": "^1.74.0-beta.2"
|
|
39
|
+
"@aigne/model-base": "^1.74.0-beta.4"
|
|
41
40
|
},
|
|
42
41
|
"devDependencies": {
|
|
43
42
|
"@types/bun": "^1.3.6",
|
|
@@ -45,9 +44,7 @@
|
|
|
45
44
|
"rimraf": "^6.1.2",
|
|
46
45
|
"tsdown": "0.20.0-beta.3",
|
|
47
46
|
"typescript": "5.9.2",
|
|
48
|
-
"@aigne/typescript-config": "0.0.0"
|
|
49
|
-
"@aigne/utils": "1.74.0-beta.2",
|
|
50
|
-
"@aigne/scripts": "0.0.0"
|
|
47
|
+
"@aigne/typescript-config": "0.0.0"
|
|
51
48
|
},
|
|
52
49
|
"scripts": {
|
|
53
50
|
"build": "tsdown",
|