@cloudbase/ai 2.8.31 → 2.8.33

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/dist/cjs/AI.d.ts CHANGED
@@ -4,12 +4,8 @@ import * as models from './models';
4
4
  import * as types from './type';
5
5
  declare const MODELS: {
6
6
  hunyuan: typeof models.HunYuanSimpleModel;
7
- 'hunyuan-beta': typeof models.HunYuanBetaSimpleModel;
8
- ark: typeof models.ArkSimpleModel;
9
- dashscope: typeof models.DSSimpleModel;
10
- '01-ai': typeof models.YiSimpleModel;
11
- moonshot: typeof models.MoonshotSimpleModel;
12
- zhipu: typeof models.ZhiPuSimpleModel;
7
+ 'hunyuan-exp': typeof models.HunYuanExpSimpleModel;
8
+ 'hunyuan-open': typeof models.HunYuanOpenSimpleModel;
13
9
  };
14
10
  declare class AI {
15
11
  private req;
@@ -5,13 +5,9 @@ import { Bot } from './bot';
5
5
  import * as models from './models';
6
6
  import * as utils from './utils';
7
7
  declare const restModels: {
8
- ZhiPuSimpleModel: typeof models.ZhiPuSimpleModel;
9
- HunYuanBetaSimpleModel: typeof models.HunYuanBetaSimpleModel;
10
8
  HunYuanSimpleModel: typeof models.HunYuanSimpleModel;
11
- ArkSimpleModel: typeof models.ArkSimpleModel;
12
- DSSimpleModel: typeof models.DSSimpleModel;
13
- YiSimpleModel: typeof models.YiSimpleModel;
14
- MoonshotSimpleModel: typeof models.MoonshotSimpleModel;
9
+ HunYuanExpSimpleModel: typeof models.HunYuanExpSimpleModel;
10
+ HunYuanOpenSimpleModel: typeof models.HunYuanOpenSimpleModel;
15
11
  ReactModel: typeof models.ReactModel;
16
12
  toolMap: Map<string, CallableFunction>;
17
13
  };
@@ -0,0 +1,10 @@
1
+ import type { ModelReq, BaseChatModelInput, SimpleChatModel, DoStreamOutput, DoGenerateOutput } from '../../type';
2
+ export declare class HunYuanExpSimpleModel implements SimpleChatModel {
3
+ private req;
4
+ baseUrl: string;
5
+ subUrl: string;
6
+ constructor(req: ModelReq, baseUrl: string, subUrl?: string);
7
+ private get url();
8
+ doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput>;
9
+ doStream(data: BaseChatModelInput): Promise<DoStreamOutput>;
10
+ }
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.HunYuanExpSimpleModel = void 0;
51
+ var utils_1 = require("../../utils");
52
+ var util_1 = require("../HunYuan/util");
53
+ var HunYuanExpSimpleModel = (function () {
54
+ function HunYuanExpSimpleModel(req, baseUrl, subUrl) {
55
+ this.req = req;
56
+ this.baseUrl = baseUrl;
57
+ this.subUrl = 'hunyuan-exp/v1/chat/completions';
58
+ if (subUrl != null) {
59
+ this.subUrl = subUrl;
60
+ }
61
+ }
62
+ Object.defineProperty(HunYuanExpSimpleModel.prototype, "url", {
63
+ get: function () {
64
+ return "".concat(this.baseUrl, "/").concat(this.subUrl);
65
+ },
66
+ enumerable: false,
67
+ configurable: true
68
+ });
69
+ HunYuanExpSimpleModel.prototype.doGenerate = function (data) {
70
+ return __awaiter(this, void 0, void 0, function () {
71
+ var res;
72
+ return __generator(this, function (_a) {
73
+ switch (_a.label) {
74
+ case 0: return [4, this.req({
75
+ url: this.url,
76
+ data: __assign(__assign({}, (0, util_1.processInput)(data)), { stream: false }),
77
+ stream: false,
78
+ })];
79
+ case 1:
80
+ res = (_a.sent());
81
+ return [2, __assign(__assign({}, res), { rawResponse: res })];
82
+ }
83
+ });
84
+ });
85
+ };
86
+ HunYuanExpSimpleModel.prototype.doStream = function (data) {
87
+ return __awaiter(this, void 0, void 0, function () {
88
+ var isToolCall, _stream, stream, hunyuanBetaStream, streamWithRaw;
89
+ return __generator(this, function (_a) {
90
+ switch (_a.label) {
91
+ case 0:
92
+ isToolCall = null;
93
+ return [4, this.req({
94
+ url: this.url,
95
+ data: __assign(__assign({}, (0, util_1.processInput)(data)), { stream: true }),
96
+ stream: true,
97
+ })];
98
+ case 1:
99
+ _stream = _a.sent();
100
+ stream = (0, utils_1.toPolyfillReadable)(_stream);
101
+ hunyuanBetaStream = (0, utils_1.intoStandardStream)(stream);
102
+ streamWithRaw = hunyuanBetaStream.pipeThrough(new utils_1.TransformStream({
103
+ transform: function (chunk, controller) {
104
+ var newChoices = chunk.choices.map(function (choice) {
105
+ var message = choice.delta;
106
+ if (isToolCall == null)
107
+ isToolCall = (0, utils_1.isToolCallAssistantMessage)(message);
108
+ if (isToolCall) {
109
+ return __assign(__assign({}, choice), { finish_reason: 'tool_calls', delta: message });
110
+ }
111
+ return choice;
112
+ });
113
+ var newChunk = __assign(__assign({}, chunk), { choices: newChoices });
114
+ controller.enqueue(__assign(__assign({}, newChunk), { rawResponse: chunk }));
115
+ },
116
+ }));
117
+ return [2, (0, utils_1.createAsyncIterable)(streamWithRaw)];
118
+ }
119
+ });
120
+ });
121
+ };
122
+ return HunYuanExpSimpleModel;
123
+ }());
124
+ exports.HunYuanExpSimpleModel = HunYuanExpSimpleModel;
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWxzL0h1bll1YW5FeHAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQ0FNb0I7QUFTcEIsd0NBQThDO0FBRzlDO0lBRUUsK0JBQW9CLEdBQWEsRUFBUyxPQUFlLEVBQUUsTUFBZTtRQUF0RCxRQUFHLEdBQUgsR0FBRyxDQUFVO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQURsRCxXQUFNLEdBQUcsaUNBQWlDLENBQUE7UUFFL0MsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELHNCQUFZLHNDQUFHO2FBQWY7WUFDRSxPQUFPLFVBQUcsSUFBSSxDQUFDLE9BQU8sY0FBSSxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUE7UUFDekMsQ0FBQzs7O09BQUE7SUFFWSwwQ0FBVSxHQUF2QixVQUF3QixJQUF3Qjs7Ozs7NEJBQ2pDLFdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQzs0QkFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHOzRCQUNiLElBQUksd0JBQ0MsSUFBQSxtQkFBWSxFQUFDLElBQUksQ0FBQyxLQUNyQixNQUFNLEVBQUUsS0FBSyxHQUNkOzRCQUNELE1BQU0sRUFBRSxLQUFLO3lCQUNkLENBQUMsRUFBQTs7d0JBUEksR0FBRyxHQUFHLENBQUMsU0FPWCxDQUE4Qjt3QkFDaEMsaUNBQVksR0FBRyxLQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUU7Ozs7S0FDcEM7SUFFWSx3Q0FBUSxHQUFyQixVQUFzQixJQUF3Qjs7Ozs7O3dCQUN4QyxVQUFVLEdBQW1CLElBQUksQ0FBQTt3QkFFckIsV0FBTSxJQUFJLENBQUMsR0FBRyxDQUFDO2dDQUM3QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0NBQ2IsSUFBSSx3QkFDQyxJQUFBLG1CQUFZLEVBQUMsSUFBSSxDQUFDLEtBQ3JCLE1BQU0sRUFBRSxJQUFJLEdBQ2I7Z0NBQ0QsTUFBTSxFQUFFLElBQUk7NkJBQ2IsQ0FBQyxFQUFBOzt3QkFQSSxPQUFPLEdBQUcsU0FPZDt3QkFDSSxNQUFNLEdBQUcsSUFBQSwwQkFBa0IsRUFBQyxPQUFPLENBQW1CLENBQUE7d0JBRXRELGlCQUFpQixHQUFHLElBQUEsMEJBQWtCLEVBQTBCLE1BQU0sQ0FBQyxDQUFBO3dCQUN2RSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksdUJBQWUsQ0FBMkU7NEJBQ2hKLFNBQVMsWUFBQyxLQUFLLEVBQUUsVUFBVTtnQ0FDekIsSUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBQyxNQUFNO29DQUMxQyxJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFBO29DQUM1QixJQUFJLFVBQVUsSUFBSSxJQUFJO3dDQUFFLFVBQVUsR0FBRyxJQUFBLGtDQUEwQixFQUFDLE9BQU8sQ0FBQyxDQUFBO29DQUN4RSxJQUFJLFVBQVUsRUFBRTt3Q0FDZCw2QkFDSyxNQUFNLEtBQ1QsYUFBYSxFQUFFLFlBQVksRUFDM0IsS0FBSyxFQUFFLE9BQU8sSUFDZjtxQ0FDRjtvQ0FDRCxPQUFPLE1BQU0sQ0FBQTtnQ0FDZixDQUFDLENBQUMsQ0FBQTtnQ0FDRixJQUFNLFFBQVEseUJBQVEsS0FBSyxLQUFFLE9BQU8sRUFBRSxVQUFVLEdBQUUsQ0FBQTtnQ0FDbEQsVUFBVSxDQUFDLE9BQU8sdUJBQU0sUUFBUSxLQUFFLFdBQVcsRUFBRSxLQUFLLElBQUcsQ0FBQTs0QkFDekQsQ0FBQzt5QkFDRixDQUFDLENBQUUsQ0FBQTt3QkFFSixXQUFPLElBQUEsMkJBQW1CLEVBQUMsYUFBYSxDQUFDLEVBQUE7Ozs7S0FDMUM7SUFDSCw0QkFBQztBQUFELENBQUMsQUEzREQsSUEyREM7QUEzRFksc0RBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlQXN5bmNJdGVyYWJsZSxcbiAgVHJhbnNmb3JtU3RyZWFtLFxuICB0b1BvbHlmaWxsUmVhZGFibGUsXG4gIGludG9TdGFuZGFyZFN0cmVhbSxcbiAgaXNUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHR5cGUge1xuICBNb2RlbFJlcSxcbiAgQmFzZUNoYXRNb2RlbElucHV0LFxuICBTaW1wbGVDaGF0TW9kZWwsXG4gIERvU3RyZWFtT3V0cHV0LFxuICBCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayxcbiAgRG9HZW5lcmF0ZU91dHB1dCxcbn0gZnJvbSAnLi4vLi4vdHlwZSdcbmltcG9ydCB7IHByb2Nlc3NJbnB1dCB9IGZyb20gJy4uL0h1bll1YW4vdXRpbCdcbmltcG9ydCB7IEh1bll1YW5HZW5lcmF0ZVRleHRPdXRwdXQsIEh1bll1YW5TdHJlYW1UZXh0T3V0cHV0IH0gZnJvbSAnLi4vSHVuWXVhbi90eXBlJ1xuXG5leHBvcnQgY2xhc3MgSHVuWXVhbkV4cFNpbXBsZU1vZGVsIGltcGxlbWVudHMgU2ltcGxlQ2hhdE1vZGVsIHtcbiAgcHVibGljIHN1YlVybCA9ICdodW55dWFuLWV4cC92MS9jaGF0L2NvbXBsZXRpb25zJ1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcTogTW9kZWxSZXEsIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcsIHN1YlVybD86IHN0cmluZykge1xuICAgIGlmIChzdWJVcmwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5zdWJVcmwgPSBzdWJVcmxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYmFzZVVybH0vJHt0aGlzLnN1YlVybH1gXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZG9HZW5lcmF0ZShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQpOiBQcm9taXNlPERvR2VuZXJhdGVPdXRwdXQ+IHtcbiAgICBjb25zdCByZXMgPSAoYXdhaXQgdGhpcy5yZXEoe1xuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4ucHJvY2Vzc0lucHV0KGRhdGEpLFxuICAgICAgICBzdHJlYW06IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHN0cmVhbTogZmFsc2UsXG4gICAgfSkpIGFzIEh1bll1YW5HZW5lcmF0ZVRleHRPdXRwdXRcbiAgICByZXR1cm4geyAuLi5yZXMsIHJhd1Jlc3BvbnNlOiByZXMgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvU3RyZWFtKGRhdGE6IEJhc2VDaGF0TW9kZWxJbnB1dCk6IFByb21pc2U8RG9TdHJlYW1PdXRwdXQ+IHtcbiAgICBsZXQgaXNUb29sQ2FsbDogbnVsbCB8IGJvb2xlYW4gPSBudWxsXG5cbiAgICBjb25zdCBfc3RyZWFtID0gYXdhaXQgdGhpcy5yZXEoe1xuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4ucHJvY2Vzc0lucHV0KGRhdGEpLFxuICAgICAgICBzdHJlYW06IHRydWUsXG4gICAgICB9LFxuICAgICAgc3RyZWFtOiB0cnVlLFxuICAgIH0pXG4gICAgY29uc3Qgc3RyZWFtID0gdG9Qb2x5ZmlsbFJlYWRhYmxlKF9zdHJlYW0pIGFzIHR5cGVvZiBfc3RyZWFtXG5cbiAgICBjb25zdCBodW55dWFuQmV0YVN0cmVhbSA9IGludG9TdGFuZGFyZFN0cmVhbTxIdW5ZdWFuU3RyZWFtVGV4dE91dHB1dD4oc3RyZWFtKVxuICAgIGNvbnN0IHN0cmVhbVdpdGhSYXcgPSBodW55dWFuQmV0YVN0cmVhbS5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtPEh1bll1YW5TdHJlYW1UZXh0T3V0cHV0LCBCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayAmIHsgcmF3UmVzcG9uc2U/OiBhbnkgfT4oe1xuICAgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgIGNvbnN0IG5ld0Nob2ljZXMgPSBjaHVuay5jaG9pY2VzLm1hcCgoY2hvaWNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGNob2ljZS5kZWx0YVxuICAgICAgICAgIGlmIChpc1Rvb2xDYWxsID09IG51bGwpIGlzVG9vbENhbGwgPSBpc1Rvb2xDYWxsQXNzaXN0YW50TWVzc2FnZShtZXNzYWdlKVxuICAgICAgICAgIGlmIChpc1Rvb2xDYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jaG9pY2UsXG4gICAgICAgICAgICAgIGZpbmlzaF9yZWFzb246ICd0b29sX2NhbGxzJyxcbiAgICAgICAgICAgICAgZGVsdGE6IG1lc3NhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjaG9pY2VcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgbmV3Q2h1bmsgPSB7IC4uLmNodW5rLCBjaG9pY2VzOiBuZXdDaG9pY2VzIH1cbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHsgLi4ubmV3Q2h1bmssIHJhd1Jlc3BvbnNlOiBjaHVuayB9KVxuICAgICAgfSxcbiAgICB9KSwpXG5cbiAgICByZXR1cm4gY3JlYXRlQXN5bmNJdGVyYWJsZShzdHJlYW1XaXRoUmF3KVxuICB9XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import type { ModelReq, BaseChatModelInput, SimpleChatModel, DoStreamOutput, DoGenerateOutput } from '../../type';
2
+ export declare class HunYuanOpenSimpleModel implements SimpleChatModel {
3
+ private req;
4
+ baseUrl: string;
5
+ subUrl: string;
6
+ constructor(req: ModelReq, baseUrl: string, subUrl?: string);
7
+ private get url();
8
+ doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput>;
9
+ doStream(data: BaseChatModelInput): Promise<DoStreamOutput>;
10
+ }
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.HunYuanOpenSimpleModel = void 0;
51
+ var utils_1 = require("../../utils");
52
+ var util_1 = require("../HunYuan/util");
53
+ var HunYuanOpenSimpleModel = (function () {
54
+ function HunYuanOpenSimpleModel(req, baseUrl, subUrl) {
55
+ this.req = req;
56
+ this.baseUrl = baseUrl;
57
+ this.subUrl = 'hunyuan-open/v1/chat/completions';
58
+ if (subUrl != null) {
59
+ this.subUrl = subUrl;
60
+ }
61
+ }
62
+ Object.defineProperty(HunYuanOpenSimpleModel.prototype, "url", {
63
+ get: function () {
64
+ return "".concat(this.baseUrl, "/").concat(this.subUrl);
65
+ },
66
+ enumerable: false,
67
+ configurable: true
68
+ });
69
+ HunYuanOpenSimpleModel.prototype.doGenerate = function (data) {
70
+ return __awaiter(this, void 0, void 0, function () {
71
+ var res;
72
+ return __generator(this, function (_a) {
73
+ switch (_a.label) {
74
+ case 0: return [4, this.req({
75
+ url: this.url,
76
+ data: __assign(__assign({}, (0, util_1.processInput)(data)), { stream: false }),
77
+ stream: false,
78
+ })];
79
+ case 1:
80
+ res = (_a.sent());
81
+ return [2, __assign(__assign({}, res), { rawResponse: res })];
82
+ }
83
+ });
84
+ });
85
+ };
86
+ HunYuanOpenSimpleModel.prototype.doStream = function (data) {
87
+ return __awaiter(this, void 0, void 0, function () {
88
+ var isToolCall, _stream, stream, hunyuanBetaStream, streamWithRaw;
89
+ return __generator(this, function (_a) {
90
+ switch (_a.label) {
91
+ case 0:
92
+ isToolCall = null;
93
+ return [4, this.req({
94
+ url: this.url,
95
+ data: __assign(__assign({}, (0, util_1.processInput)(data)), { stream: true }),
96
+ stream: true,
97
+ })];
98
+ case 1:
99
+ _stream = _a.sent();
100
+ stream = (0, utils_1.toPolyfillReadable)(_stream);
101
+ hunyuanBetaStream = (0, utils_1.intoStandardStream)(stream);
102
+ streamWithRaw = hunyuanBetaStream.pipeThrough(new utils_1.TransformStream({
103
+ transform: function (chunk, controller) {
104
+ var newChoices = chunk.choices.map(function (choice) {
105
+ var message = choice.delta;
106
+ if (isToolCall == null)
107
+ isToolCall = (0, utils_1.isToolCallAssistantMessage)(message);
108
+ if (isToolCall) {
109
+ return __assign(__assign({}, choice), { finish_reason: 'tool_calls', delta: message });
110
+ }
111
+ return choice;
112
+ });
113
+ var newChunk = __assign(__assign({}, chunk), { choices: newChoices });
114
+ controller.enqueue(__assign(__assign({}, newChunk), { rawResponse: chunk }));
115
+ },
116
+ }));
117
+ return [2, (0, utils_1.createAsyncIterable)(streamWithRaw)];
118
+ }
119
+ });
120
+ });
121
+ };
122
+ return HunYuanOpenSimpleModel;
123
+ }());
124
+ exports.HunYuanOpenSimpleModel = HunYuanOpenSimpleModel;
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWxzL0h1bll1YW5PcGVuL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUNBTW9CO0FBU3BCLHdDQUE4QztBQUc5QztJQUVFLGdDQUFvQixHQUFhLEVBQVMsT0FBZSxFQUFFLE1BQWU7UUFBdEQsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFEbEQsV0FBTSxHQUFHLGtDQUFrQyxDQUFBO1FBRWhELElBQUksTUFBTSxJQUFJLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtTQUNyQjtJQUNILENBQUM7SUFFRCxzQkFBWSx1Q0FBRzthQUFmO1lBQ0UsT0FBTyxVQUFHLElBQUksQ0FBQyxPQUFPLGNBQUksSUFBSSxDQUFDLE1BQU0sQ0FBRSxDQUFBO1FBQ3pDLENBQUM7OztPQUFBO0lBRVksMkNBQVUsR0FBdkIsVUFBd0IsSUFBd0I7Ozs7OzRCQUNqQyxXQUFNLElBQUksQ0FBQyxHQUFHLENBQUM7NEJBQzFCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRzs0QkFDYixJQUFJLHdCQUNDLElBQUEsbUJBQVksRUFBQyxJQUFJLENBQUMsS0FDckIsTUFBTSxFQUFFLEtBQUssR0FDZDs0QkFDRCxNQUFNLEVBQUUsS0FBSzt5QkFDZCxDQUFDLEVBQUE7O3dCQVBJLEdBQUcsR0FBRyxDQUFDLFNBT1gsQ0FBOEI7d0JBQ2hDLGlDQUFZLEdBQUcsS0FBRSxXQUFXLEVBQUUsR0FBRyxLQUFFOzs7O0tBQ3BDO0lBRVkseUNBQVEsR0FBckIsVUFBc0IsSUFBd0I7Ozs7Ozt3QkFDeEMsVUFBVSxHQUFtQixJQUFJLENBQUE7d0JBRXJCLFdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQztnQ0FDN0IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dDQUNiLElBQUksd0JBQ0MsSUFBQSxtQkFBWSxFQUFDLElBQUksQ0FBQyxLQUNyQixNQUFNLEVBQUUsSUFBSSxHQUNiO2dDQUNELE1BQU0sRUFBRSxJQUFJOzZCQUNiLENBQUMsRUFBQTs7d0JBUEksT0FBTyxHQUFHLFNBT2Q7d0JBQ0ksTUFBTSxHQUFHLElBQUEsMEJBQWtCLEVBQUMsT0FBTyxDQUFtQixDQUFBO3dCQUV0RCxpQkFBaUIsR0FBRyxJQUFBLDBCQUFrQixFQUEwQixNQUFNLENBQUMsQ0FBQTt3QkFDdkUsYUFBYSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLHVCQUFlLENBQTJFOzRCQUNoSixTQUFTLFlBQUMsS0FBSyxFQUFFLFVBQVU7Z0NBQ3pCLElBQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQUMsTUFBTTtvQ0FDMUMsSUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQTtvQ0FDNUIsSUFBSSxVQUFVLElBQUksSUFBSTt3Q0FBRSxVQUFVLEdBQUcsSUFBQSxrQ0FBMEIsRUFBQyxPQUFPLENBQUMsQ0FBQTtvQ0FDeEUsSUFBSSxVQUFVLEVBQUU7d0NBQ2QsNkJBQ0ssTUFBTSxLQUNULGFBQWEsRUFBRSxZQUFZLEVBQzNCLEtBQUssRUFBRSxPQUFPLElBQ2Y7cUNBQ0Y7b0NBQ0QsT0FBTyxNQUFNLENBQUE7Z0NBQ2YsQ0FBQyxDQUFDLENBQUE7Z0NBQ0YsSUFBTSxRQUFRLHlCQUFRLEtBQUssS0FBRSxPQUFPLEVBQUUsVUFBVSxHQUFFLENBQUE7Z0NBQ2xELFVBQVUsQ0FBQyxPQUFPLHVCQUFNLFFBQVEsS0FBRSxXQUFXLEVBQUUsS0FBSyxJQUFHLENBQUE7NEJBQ3pELENBQUM7eUJBQ0YsQ0FBQyxDQUFFLENBQUE7d0JBRUosV0FBTyxJQUFBLDJCQUFtQixFQUFDLGFBQWEsQ0FBQyxFQUFBOzs7O0tBQzFDO0lBQ0gsNkJBQUM7QUFBRCxDQUFDLEFBM0RELElBMkRDO0FBM0RZLHdEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUFzeW5jSXRlcmFibGUsXG4gIFRyYW5zZm9ybVN0cmVhbSxcbiAgdG9Qb2x5ZmlsbFJlYWRhYmxlLFxuICBpbnRvU3RhbmRhcmRTdHJlYW0sXG4gIGlzVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB0eXBlIHtcbiAgTW9kZWxSZXEsXG4gIEJhc2VDaGF0TW9kZWxJbnB1dCxcbiAgU2ltcGxlQ2hhdE1vZGVsLFxuICBEb1N0cmVhbU91dHB1dCxcbiAgQmFzZURvU3RyZWFtT3V0cHV0Q2h1bmssXG4gIERvR2VuZXJhdGVPdXRwdXQsXG59IGZyb20gJy4uLy4uL3R5cGUnXG5pbXBvcnQgeyBwcm9jZXNzSW5wdXQgfSBmcm9tICcuLi9IdW5ZdWFuL3V0aWwnXG5pbXBvcnQgeyBIdW5ZdWFuR2VuZXJhdGVUZXh0T3V0cHV0LCBIdW5ZdWFuU3RyZWFtVGV4dE91dHB1dCB9IGZyb20gJy4uL0h1bll1YW4vdHlwZSdcblxuZXhwb3J0IGNsYXNzIEh1bll1YW5PcGVuU2ltcGxlTW9kZWwgaW1wbGVtZW50cyBTaW1wbGVDaGF0TW9kZWwge1xuICBwdWJsaWMgc3ViVXJsID0gJ2h1bnl1YW4tb3Blbi92MS9jaGF0L2NvbXBsZXRpb25zJ1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcTogTW9kZWxSZXEsIHB1YmxpYyBiYXNlVXJsOiBzdHJpbmcsIHN1YlVybD86IHN0cmluZykge1xuICAgIGlmIChzdWJVcmwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5zdWJVcmwgPSBzdWJVcmxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuYmFzZVVybH0vJHt0aGlzLnN1YlVybH1gXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZG9HZW5lcmF0ZShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQpOiBQcm9taXNlPERvR2VuZXJhdGVPdXRwdXQ+IHtcbiAgICBjb25zdCByZXMgPSAoYXdhaXQgdGhpcy5yZXEoe1xuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4ucHJvY2Vzc0lucHV0KGRhdGEpLFxuICAgICAgICBzdHJlYW06IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHN0cmVhbTogZmFsc2UsXG4gICAgfSkpIGFzIEh1bll1YW5HZW5lcmF0ZVRleHRPdXRwdXRcbiAgICByZXR1cm4geyAuLi5yZXMsIHJhd1Jlc3BvbnNlOiByZXMgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvU3RyZWFtKGRhdGE6IEJhc2VDaGF0TW9kZWxJbnB1dCk6IFByb21pc2U8RG9TdHJlYW1PdXRwdXQ+IHtcbiAgICBsZXQgaXNUb29sQ2FsbDogbnVsbCB8IGJvb2xlYW4gPSBudWxsXG5cbiAgICBjb25zdCBfc3RyZWFtID0gYXdhaXQgdGhpcy5yZXEoe1xuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgLi4ucHJvY2Vzc0lucHV0KGRhdGEpLFxuICAgICAgICBzdHJlYW06IHRydWUsXG4gICAgICB9LFxuICAgICAgc3RyZWFtOiB0cnVlLFxuICAgIH0pXG4gICAgY29uc3Qgc3RyZWFtID0gdG9Qb2x5ZmlsbFJlYWRhYmxlKF9zdHJlYW0pIGFzIHR5cGVvZiBfc3RyZWFtXG5cbiAgICBjb25zdCBodW55dWFuQmV0YVN0cmVhbSA9IGludG9TdGFuZGFyZFN0cmVhbTxIdW5ZdWFuU3RyZWFtVGV4dE91dHB1dD4oc3RyZWFtKVxuICAgIGNvbnN0IHN0cmVhbVdpdGhSYXcgPSBodW55dWFuQmV0YVN0cmVhbS5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtPEh1bll1YW5TdHJlYW1UZXh0T3V0cHV0LCBCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayAmIHsgcmF3UmVzcG9uc2U/OiBhbnkgfT4oe1xuICAgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgIGNvbnN0IG5ld0Nob2ljZXMgPSBjaHVuay5jaG9pY2VzLm1hcCgoY2hvaWNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGNob2ljZS5kZWx0YVxuICAgICAgICAgIGlmIChpc1Rvb2xDYWxsID09IG51bGwpIGlzVG9vbENhbGwgPSBpc1Rvb2xDYWxsQXNzaXN0YW50TWVzc2FnZShtZXNzYWdlKVxuICAgICAgICAgIGlmIChpc1Rvb2xDYWxsKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jaG9pY2UsXG4gICAgICAgICAgICAgIGZpbmlzaF9yZWFzb246ICd0b29sX2NhbGxzJyxcbiAgICAgICAgICAgICAgZGVsdGE6IG1lc3NhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjaG9pY2VcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgbmV3Q2h1bmsgPSB7IC4uLmNodW5rLCBjaG9pY2VzOiBuZXdDaG9pY2VzIH1cbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHsgLi4ubmV3Q2h1bmssIHJhd1Jlc3BvbnNlOiBjaHVuayB9KVxuICAgICAgfSxcbiAgICB9KSwpXG5cbiAgICByZXR1cm4gY3JlYXRlQXN5bmNJdGVyYWJsZShzdHJlYW1XaXRoUmF3KVxuICB9XG59XG4iXX0=
@@ -1,18 +1,10 @@
1
- import { ZhiPuSimpleModel } from './ZhiPu/index';
2
- import { HunYuanBetaSimpleModel } from './HunYuanBeta/index';
3
1
  import { HunYuanSimpleModel } from './HunYuan/index';
4
- import { ArkSimpleModel } from './Ark/index';
5
- import { DSSimpleModel } from './DashScope/index';
6
- import { YiSimpleModel } from './Yi/index';
7
- import { MoonshotSimpleModel } from './Moonshot/index';
2
+ import { HunYuanExpSimpleModel } from './HunYuanExp/index';
3
+ import { HunYuanOpenSimpleModel } from './HunYuanOpen/index';
8
4
  export declare const MODELS: {
9
5
  hunyuan: typeof HunYuanSimpleModel;
10
- 'hunyuan-beta': typeof HunYuanBetaSimpleModel;
11
- ark: typeof ArkSimpleModel;
12
- dashscope: typeof DSSimpleModel;
13
- '01-ai': typeof YiSimpleModel;
14
- moonshot: typeof MoonshotSimpleModel;
15
- zhipu: typeof ZhiPuSimpleModel;
6
+ 'hunyuan-exp': typeof HunYuanExpSimpleModel;
7
+ 'hunyuan-open': typeof HunYuanOpenSimpleModel;
16
8
  };
17
- export { ZhiPuSimpleModel, HunYuanBetaSimpleModel, HunYuanSimpleModel, ArkSimpleModel, DSSimpleModel, YiSimpleModel, MoonshotSimpleModel, };
9
+ export { HunYuanSimpleModel, HunYuanExpSimpleModel, HunYuanOpenSimpleModel, };
18
10
  export { ReactModel, toolMap } from './model';
@@ -1,30 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toolMap = exports.ReactModel = exports.MoonshotSimpleModel = exports.YiSimpleModel = exports.DSSimpleModel = exports.ArkSimpleModel = exports.HunYuanSimpleModel = exports.HunYuanBetaSimpleModel = exports.ZhiPuSimpleModel = exports.MODELS = void 0;
4
- var index_1 = require("./ZhiPu/index");
5
- Object.defineProperty(exports, "ZhiPuSimpleModel", { enumerable: true, get: function () { return index_1.ZhiPuSimpleModel; } });
6
- var index_2 = require("./HunYuanBeta/index");
7
- Object.defineProperty(exports, "HunYuanBetaSimpleModel", { enumerable: true, get: function () { return index_2.HunYuanBetaSimpleModel; } });
8
- var index_3 = require("./HunYuan/index");
9
- Object.defineProperty(exports, "HunYuanSimpleModel", { enumerable: true, get: function () { return index_3.HunYuanSimpleModel; } });
10
- var index_4 = require("./Ark/index");
11
- Object.defineProperty(exports, "ArkSimpleModel", { enumerable: true, get: function () { return index_4.ArkSimpleModel; } });
12
- var index_5 = require("./DashScope/index");
13
- Object.defineProperty(exports, "DSSimpleModel", { enumerable: true, get: function () { return index_5.DSSimpleModel; } });
14
- var index_6 = require("./Yi/index");
15
- Object.defineProperty(exports, "YiSimpleModel", { enumerable: true, get: function () { return index_6.YiSimpleModel; } });
16
- var index_7 = require("./Moonshot/index");
17
- Object.defineProperty(exports, "MoonshotSimpleModel", { enumerable: true, get: function () { return index_7.MoonshotSimpleModel; } });
3
+ exports.toolMap = exports.ReactModel = exports.HunYuanOpenSimpleModel = exports.HunYuanExpSimpleModel = exports.HunYuanSimpleModel = exports.MODELS = void 0;
4
+ var index_1 = require("./HunYuan/index");
5
+ Object.defineProperty(exports, "HunYuanSimpleModel", { enumerable: true, get: function () { return index_1.HunYuanSimpleModel; } });
6
+ var index_2 = require("./HunYuanExp/index");
7
+ Object.defineProperty(exports, "HunYuanExpSimpleModel", { enumerable: true, get: function () { return index_2.HunYuanExpSimpleModel; } });
8
+ var index_3 = require("./HunYuanOpen/index");
9
+ Object.defineProperty(exports, "HunYuanOpenSimpleModel", { enumerable: true, get: function () { return index_3.HunYuanOpenSimpleModel; } });
18
10
  exports.MODELS = {
19
- hunyuan: index_3.HunYuanSimpleModel,
20
- 'hunyuan-beta': index_2.HunYuanBetaSimpleModel,
21
- ark: index_4.ArkSimpleModel,
22
- dashscope: index_5.DSSimpleModel,
23
- '01-ai': index_6.YiSimpleModel,
24
- moonshot: index_7.MoonshotSimpleModel,
25
- zhipu: index_1.ZhiPuSimpleModel,
11
+ hunyuan: index_1.HunYuanSimpleModel,
12
+ 'hunyuan-exp': index_2.HunYuanExpSimpleModel,
13
+ 'hunyuan-open': index_3.HunYuanOpenSimpleModel,
26
14
  };
27
15
  var model_1 = require("./model");
28
16
  Object.defineProperty(exports, "ReactModel", { enumerable: true, get: function () { return model_1.ReactModel; } });
29
17
  Object.defineProperty(exports, "toolMap", { enumerable: true, get: function () { return model_1.toolMap; } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUFnRDtBQW1COUMsaUdBbkJPLHdCQUFnQixPQW1CUDtBQWxCbEIsNkNBQTREO0FBbUIxRCx1R0FuQk8sOEJBQXNCLE9BbUJQO0FBbEJ4Qix5Q0FBb0Q7QUFtQmxELG1HQW5CTywwQkFBa0IsT0FtQlA7QUFsQnBCLHFDQUE0QztBQW1CMUMsK0ZBbkJPLHNCQUFjLE9BbUJQO0FBbEJoQiwyQ0FBaUQ7QUFtQi9DLDhGQW5CTyxxQkFBYSxPQW1CUDtBQWxCZixvQ0FBMEM7QUFtQnhDLDhGQW5CTyxxQkFBYSxPQW1CUDtBQWxCZiwwQ0FBc0Q7QUFtQnBELG9HQW5CTywyQkFBbUIsT0FtQlA7QUFqQlIsUUFBQSxNQUFNLEdBQUc7SUFDcEIsT0FBTyxFQUFFLDBCQUFrQjtJQUMzQixjQUFjLEVBQUUsOEJBQXNCO0lBQ3RDLEdBQUcsRUFBRSxzQkFBYztJQUNuQixTQUFTLEVBQUUscUJBQWE7SUFDeEIsT0FBTyxFQUFFLHFCQUFhO0lBQ3RCLFFBQVEsRUFBRSwyQkFBbUI7SUFDN0IsS0FBSyxFQUFFLHdCQUFnQjtDQUN4QixDQUFBO0FBWUQsaUNBQTZDO0FBQXBDLG1HQUFBLFVBQVUsT0FBQTtBQUFFLGdHQUFBLE9BQU8sT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFpoaVB1U2ltcGxlTW9kZWwgfSBmcm9tICcuL1poaVB1L2luZGV4J1xuaW1wb3J0IHsgSHVuWXVhbkJldGFTaW1wbGVNb2RlbCB9IGZyb20gJy4vSHVuWXVhbkJldGEvaW5kZXgnXG5pbXBvcnQgeyBIdW5ZdWFuU2ltcGxlTW9kZWwgfSBmcm9tICcuL0h1bll1YW4vaW5kZXgnXG5pbXBvcnQgeyBBcmtTaW1wbGVNb2RlbCB9IGZyb20gJy4vQXJrL2luZGV4J1xuaW1wb3J0IHsgRFNTaW1wbGVNb2RlbCB9IGZyb20gJy4vRGFzaFNjb3BlL2luZGV4J1xuaW1wb3J0IHsgWWlTaW1wbGVNb2RlbCB9IGZyb20gJy4vWWkvaW5kZXgnXG5pbXBvcnQgeyBNb29uc2hvdFNpbXBsZU1vZGVsIH0gZnJvbSAnLi9Nb29uc2hvdC9pbmRleCdcblxuZXhwb3J0IGNvbnN0IE1PREVMUyA9IHtcbiAgaHVueXVhbjogSHVuWXVhblNpbXBsZU1vZGVsLFxuICAnaHVueXVhbi1iZXRhJzogSHVuWXVhbkJldGFTaW1wbGVNb2RlbCxcbiAgYXJrOiBBcmtTaW1wbGVNb2RlbCxcbiAgZGFzaHNjb3BlOiBEU1NpbXBsZU1vZGVsLFxuICAnMDEtYWknOiBZaVNpbXBsZU1vZGVsLFxuICBtb29uc2hvdDogTW9vbnNob3RTaW1wbGVNb2RlbCxcbiAgemhpcHU6IFpoaVB1U2ltcGxlTW9kZWwsXG59XG5cbmV4cG9ydCB7XG4gIFpoaVB1U2ltcGxlTW9kZWwsXG4gIEh1bll1YW5CZXRhU2ltcGxlTW9kZWwsXG4gIEh1bll1YW5TaW1wbGVNb2RlbCxcbiAgQXJrU2ltcGxlTW9kZWwsXG4gIERTU2ltcGxlTW9kZWwsXG4gIFlpU2ltcGxlTW9kZWwsXG4gIE1vb25zaG90U2ltcGxlTW9kZWwsXG59XG5cbmV4cG9ydCB7IFJlYWN0TW9kZWwsIHRvb2xNYXAgfSBmcm9tICcuL21vZGVsJ1xuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHlDQUFvRDtBQXVCbEQsbUdBdkJPLDBCQUFrQixPQXVCUDtBQWxCcEIsNENBQTBEO0FBdUJ4RCxzR0F2Qk8sNkJBQXFCLE9BdUJQO0FBdEJ2Qiw2Q0FBNEQ7QUF1QjFELHVHQXZCTyw4QkFBc0IsT0F1QlA7QUFyQlgsUUFBQSxNQUFNLEdBQUc7SUFDcEIsT0FBTyxFQUFFLDBCQUFrQjtJQU8zQixhQUFhLEVBQUUsNkJBQXFCO0lBQ3BDLGNBQWMsRUFBRSw4QkFBc0I7Q0FDdkMsQ0FBQTtBQWNELGlDQUE2QztBQUFwQyxtR0FBQSxVQUFVLE9BQUE7QUFBRSxnR0FBQSxPQUFPLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBaaGlQdVNpbXBsZU1vZGVsIH0gZnJvbSAnLi9aaGlQdS9pbmRleCdcbi8vIGltcG9ydCB7IEh1bll1YW5CZXRhU2ltcGxlTW9kZWwgfSBmcm9tICcuL0h1bll1YW5CZXRhL2luZGV4J1xuaW1wb3J0IHsgSHVuWXVhblNpbXBsZU1vZGVsIH0gZnJvbSAnLi9IdW5ZdWFuL2luZGV4J1xuLy8gaW1wb3J0IHsgQXJrU2ltcGxlTW9kZWwgfSBmcm9tICcuL0Fyay9pbmRleCdcbi8vIGltcG9ydCB7IERTU2ltcGxlTW9kZWwgfSBmcm9tICcuL0Rhc2hTY29wZS9pbmRleCdcbi8vIGltcG9ydCB7IFlpU2ltcGxlTW9kZWwgfSBmcm9tICcuL1lpL2luZGV4J1xuLy8gaW1wb3J0IHsgTW9vbnNob3RTaW1wbGVNb2RlbCB9IGZyb20gJy4vTW9vbnNob3QvaW5kZXgnXG5pbXBvcnQgeyBIdW5ZdWFuRXhwU2ltcGxlTW9kZWwgfSBmcm9tICcuL0h1bll1YW5FeHAvaW5kZXgnXG5pbXBvcnQgeyBIdW5ZdWFuT3BlblNpbXBsZU1vZGVsIH0gZnJvbSAnLi9IdW5ZdWFuT3Blbi9pbmRleCdcblxuZXhwb3J0IGNvbnN0IE1PREVMUyA9IHtcbiAgaHVueXVhbjogSHVuWXVhblNpbXBsZU1vZGVsLFxuICAvLyAnaHVueXVhbi1iZXRhJzogSHVuWXVhbkJldGFTaW1wbGVNb2RlbCxcbiAgLy8gYXJrOiBBcmtTaW1wbGVNb2RlbCxcbiAgLy8gZGFzaHNjb3BlOiBEU1NpbXBsZU1vZGVsLFxuICAvLyAnMDEtYWknOiBZaVNpbXBsZU1vZGVsLFxuICAvLyBtb29uc2hvdDogTW9vbnNob3RTaW1wbGVNb2RlbCxcbiAgLy8gemhpcHU6IFpoaVB1U2ltcGxlTW9kZWwsXG4gICdodW55dWFuLWV4cCc6IEh1bll1YW5FeHBTaW1wbGVNb2RlbCxcbiAgJ2h1bnl1YW4tb3Blbic6IEh1bll1YW5PcGVuU2ltcGxlTW9kZWwsXG59XG5cbmV4cG9ydCB7XG4gIC8vIFpoaVB1U2ltcGxlTW9kZWwsXG4gIC8vIEh1bll1YW5CZXRhU2ltcGxlTW9kZWwsXG4gIEh1bll1YW5TaW1wbGVNb2RlbCxcbiAgLy8gQXJrU2ltcGxlTW9kZWwsXG4gIC8vIERTU2ltcGxlTW9kZWwsXG4gIC8vIFlpU2ltcGxlTW9kZWwsXG4gIC8vIE1vb25zaG90U2ltcGxlTW9kZWwsXG4gIEh1bll1YW5FeHBTaW1wbGVNb2RlbCxcbiAgSHVuWXVhbk9wZW5TaW1wbGVNb2RlbCxcbn1cblxuZXhwb3J0IHsgUmVhY3RNb2RlbCwgdG9vbE1hcCB9IGZyb20gJy4vbW9kZWwnXG4iXX0=
package/dist/esm/AI.d.ts CHANGED
@@ -4,12 +4,8 @@ import * as models from './models';
4
4
  import * as types from './type';
5
5
  declare const MODELS: {
6
6
  hunyuan: typeof models.HunYuanSimpleModel;
7
- 'hunyuan-beta': typeof models.HunYuanBetaSimpleModel;
8
- ark: typeof models.ArkSimpleModel;
9
- dashscope: typeof models.DSSimpleModel;
10
- '01-ai': typeof models.YiSimpleModel;
11
- moonshot: typeof models.MoonshotSimpleModel;
12
- zhipu: typeof models.ZhiPuSimpleModel;
7
+ 'hunyuan-exp': typeof models.HunYuanExpSimpleModel;
8
+ 'hunyuan-open': typeof models.HunYuanOpenSimpleModel;
13
9
  };
14
10
  declare class AI {
15
11
  private req;
@@ -5,13 +5,9 @@ import { Bot } from './bot';
5
5
  import * as models from './models';
6
6
  import * as utils from './utils';
7
7
  declare const restModels: {
8
- ZhiPuSimpleModel: typeof models.ZhiPuSimpleModel;
9
- HunYuanBetaSimpleModel: typeof models.HunYuanBetaSimpleModel;
10
8
  HunYuanSimpleModel: typeof models.HunYuanSimpleModel;
11
- ArkSimpleModel: typeof models.ArkSimpleModel;
12
- DSSimpleModel: typeof models.DSSimpleModel;
13
- YiSimpleModel: typeof models.YiSimpleModel;
14
- MoonshotSimpleModel: typeof models.MoonshotSimpleModel;
9
+ HunYuanExpSimpleModel: typeof models.HunYuanExpSimpleModel;
10
+ HunYuanOpenSimpleModel: typeof models.HunYuanOpenSimpleModel;
15
11
  ReactModel: typeof models.ReactModel;
16
12
  toolMap: Map<string, CallableFunction>;
17
13
  };
@@ -0,0 +1,10 @@
1
+ import type { ModelReq, BaseChatModelInput, SimpleChatModel, DoStreamOutput, DoGenerateOutput } from '../../type';
2
+ export declare class HunYuanExpSimpleModel implements SimpleChatModel {
3
+ private req;
4
+ baseUrl: string;
5
+ subUrl: string;
6
+ constructor(req: ModelReq, baseUrl: string, subUrl?: string);
7
+ private get url();
8
+ doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput>;
9
+ doStream(data: BaseChatModelInput): Promise<DoStreamOutput>;
10
+ }
@@ -0,0 +1,122 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { createAsyncIterable, TransformStream, toPolyfillReadable, intoStandardStream, isToolCallAssistantMessage, } from '../../utils';
49
+ import { processInput } from '../HunYuan/util';
50
+ var HunYuanExpSimpleModel = (function () {
51
+ function HunYuanExpSimpleModel(req, baseUrl, subUrl) {
52
+ this.req = req;
53
+ this.baseUrl = baseUrl;
54
+ this.subUrl = 'hunyuan-exp/v1/chat/completions';
55
+ if (subUrl != null) {
56
+ this.subUrl = subUrl;
57
+ }
58
+ }
59
+ Object.defineProperty(HunYuanExpSimpleModel.prototype, "url", {
60
+ get: function () {
61
+ return "".concat(this.baseUrl, "/").concat(this.subUrl);
62
+ },
63
+ enumerable: false,
64
+ configurable: true
65
+ });
66
+ HunYuanExpSimpleModel.prototype.doGenerate = function (data) {
67
+ return __awaiter(this, void 0, void 0, function () {
68
+ var res;
69
+ return __generator(this, function (_a) {
70
+ switch (_a.label) {
71
+ case 0: return [4, this.req({
72
+ url: this.url,
73
+ data: __assign(__assign({}, processInput(data)), { stream: false }),
74
+ stream: false,
75
+ })];
76
+ case 1:
77
+ res = (_a.sent());
78
+ return [2, __assign(__assign({}, res), { rawResponse: res })];
79
+ }
80
+ });
81
+ });
82
+ };
83
+ HunYuanExpSimpleModel.prototype.doStream = function (data) {
84
+ return __awaiter(this, void 0, void 0, function () {
85
+ var isToolCall, _stream, stream, hunyuanBetaStream, streamWithRaw;
86
+ return __generator(this, function (_a) {
87
+ switch (_a.label) {
88
+ case 0:
89
+ isToolCall = null;
90
+ return [4, this.req({
91
+ url: this.url,
92
+ data: __assign(__assign({}, processInput(data)), { stream: true }),
93
+ stream: true,
94
+ })];
95
+ case 1:
96
+ _stream = _a.sent();
97
+ stream = toPolyfillReadable(_stream);
98
+ hunyuanBetaStream = intoStandardStream(stream);
99
+ streamWithRaw = hunyuanBetaStream.pipeThrough(new TransformStream({
100
+ transform: function (chunk, controller) {
101
+ var newChoices = chunk.choices.map(function (choice) {
102
+ var message = choice.delta;
103
+ if (isToolCall == null)
104
+ isToolCall = isToolCallAssistantMessage(message);
105
+ if (isToolCall) {
106
+ return __assign(__assign({}, choice), { finish_reason: 'tool_calls', delta: message });
107
+ }
108
+ return choice;
109
+ });
110
+ var newChunk = __assign(__assign({}, chunk), { choices: newChoices });
111
+ controller.enqueue(__assign(__assign({}, newChunk), { rawResponse: chunk }));
112
+ },
113
+ }));
114
+ return [2, createAsyncIterable(streamWithRaw)];
115
+ }
116
+ });
117
+ });
118
+ };
119
+ return HunYuanExpSimpleModel;
120
+ }());
121
+ export { HunYuanExpSimpleModel };
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWxzL0h1bll1YW5FeHAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLDBCQUEwQixHQUMzQixNQUFNLGFBQWEsQ0FBQTtBQVNwQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFHOUM7SUFFRSwrQkFBb0IsR0FBYSxFQUFTLE9BQWUsRUFBRSxNQUFlO1FBQXRELFFBQUcsR0FBSCxHQUFHLENBQVU7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBRGxELFdBQU0sR0FBRyxpQ0FBaUMsQ0FBQTtRQUUvQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7U0FDckI7SUFDSCxDQUFDO0lBRUQsc0JBQVksc0NBQUc7YUFBZjtZQUNFLE9BQU8sVUFBRyxJQUFJLENBQUMsT0FBTyxjQUFJLElBQUksQ0FBQyxNQUFNLENBQUUsQ0FBQTtRQUN6QyxDQUFDOzs7T0FBQTtJQUVZLDBDQUFVLEdBQXZCLFVBQXdCLElBQXdCOzs7Ozs0QkFDakMsV0FBTSxJQUFJLENBQUMsR0FBRyxDQUFDOzRCQUMxQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7NEJBQ2IsSUFBSSx3QkFDQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQ3JCLE1BQU0sRUFBRSxLQUFLLEdBQ2Q7NEJBQ0QsTUFBTSxFQUFFLEtBQUs7eUJBQ2QsQ0FBQyxFQUFBOzt3QkFQSSxHQUFHLEdBQUcsQ0FBQyxTQU9YLENBQThCO3dCQUNoQyxpQ0FBWSxHQUFHLEtBQUUsV0FBVyxFQUFFLEdBQUcsS0FBRTs7OztLQUNwQztJQUVZLHdDQUFRLEdBQXJCLFVBQXNCLElBQXdCOzs7Ozs7d0JBQ3hDLFVBQVUsR0FBbUIsSUFBSSxDQUFBO3dCQUVyQixXQUFNLElBQUksQ0FBQyxHQUFHLENBQUM7Z0NBQzdCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQ0FDYixJQUFJLHdCQUNDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FDckIsTUFBTSxFQUFFLElBQUksR0FDYjtnQ0FDRCxNQUFNLEVBQUUsSUFBSTs2QkFDYixDQUFDLEVBQUE7O3dCQVBJLE9BQU8sR0FBRyxTQU9kO3dCQUNJLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQW1CLENBQUE7d0JBRXRELGlCQUFpQixHQUFHLGtCQUFrQixDQUEwQixNQUFNLENBQUMsQ0FBQTt3QkFDdkUsYUFBYSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLGVBQWUsQ0FBMkU7NEJBQ2hKLFNBQVMsWUFBQyxLQUFLLEVBQUUsVUFBVTtnQ0FDekIsSUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBQyxNQUFNO29DQUMxQyxJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFBO29DQUM1QixJQUFJLFVBQVUsSUFBSSxJQUFJO3dDQUFFLFVBQVUsR0FBRywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQ0FDeEUsSUFBSSxVQUFVLEVBQUU7d0NBQ2QsNkJBQ0ssTUFBTSxLQUNULGFBQWEsRUFBRSxZQUFZLEVBQzNCLEtBQUssRUFBRSxPQUFPLElBQ2Y7cUNBQ0Y7b0NBQ0QsT0FBTyxNQUFNLENBQUE7Z0NBQ2YsQ0FBQyxDQUFDLENBQUE7Z0NBQ0YsSUFBTSxRQUFRLHlCQUFRLEtBQUssS0FBRSxPQUFPLEVBQUUsVUFBVSxHQUFFLENBQUE7Z0NBQ2xELFVBQVUsQ0FBQyxPQUFPLHVCQUFNLFFBQVEsS0FBRSxXQUFXLEVBQUUsS0FBSyxJQUFHLENBQUE7NEJBQ3pELENBQUM7eUJBQ0YsQ0FBQyxDQUFFLENBQUE7d0JBRUosV0FBTyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsRUFBQTs7OztLQUMxQztJQUNILDRCQUFDO0FBQUQsQ0FBQyxBQTNERCxJQTJEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNyZWF0ZUFzeW5jSXRlcmFibGUsXG4gIFRyYW5zZm9ybVN0cmVhbSxcbiAgdG9Qb2x5ZmlsbFJlYWRhYmxlLFxuICBpbnRvU3RhbmRhcmRTdHJlYW0sXG4gIGlzVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB0eXBlIHtcbiAgTW9kZWxSZXEsXG4gIEJhc2VDaGF0TW9kZWxJbnB1dCxcbiAgU2ltcGxlQ2hhdE1vZGVsLFxuICBEb1N0cmVhbU91dHB1dCxcbiAgQmFzZURvU3RyZWFtT3V0cHV0Q2h1bmssXG4gIERvR2VuZXJhdGVPdXRwdXQsXG59IGZyb20gJy4uLy4uL3R5cGUnXG5pbXBvcnQgeyBwcm9jZXNzSW5wdXQgfSBmcm9tICcuLi9IdW5ZdWFuL3V0aWwnXG5pbXBvcnQgeyBIdW5ZdWFuR2VuZXJhdGVUZXh0T3V0cHV0LCBIdW5ZdWFuU3RyZWFtVGV4dE91dHB1dCB9IGZyb20gJy4uL0h1bll1YW4vdHlwZSdcblxuZXhwb3J0IGNsYXNzIEh1bll1YW5FeHBTaW1wbGVNb2RlbCBpbXBsZW1lbnRzIFNpbXBsZUNoYXRNb2RlbCB7XG4gIHB1YmxpYyBzdWJVcmwgPSAnaHVueXVhbi1leHAvdjEvY2hhdC9jb21wbGV0aW9ucydcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXE6IE1vZGVsUmVxLCBwdWJsaWMgYmFzZVVybDogc3RyaW5nLCBzdWJVcmw/OiBzdHJpbmcpIHtcbiAgICBpZiAoc3ViVXJsICE9IG51bGwpIHtcbiAgICAgIHRoaXMuc3ViVXJsID0gc3ViVXJsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdXJsKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmJhc2VVcmx9LyR7dGhpcy5zdWJVcmx9YFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvR2VuZXJhdGUoZGF0YTogQmFzZUNoYXRNb2RlbElucHV0KTogUHJvbWlzZTxEb0dlbmVyYXRlT3V0cHV0PiB7XG4gICAgY29uc3QgcmVzID0gKGF3YWl0IHRoaXMucmVxKHtcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC4uLnByb2Nlc3NJbnB1dChkYXRhKSxcbiAgICAgICAgc3RyZWFtOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBzdHJlYW06IGZhbHNlLFxuICAgIH0pKSBhcyBIdW5ZdWFuR2VuZXJhdGVUZXh0T3V0cHV0XG4gICAgcmV0dXJuIHsgLi4ucmVzLCByYXdSZXNwb25zZTogcmVzIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb1N0cmVhbShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQpOiBQcm9taXNlPERvU3RyZWFtT3V0cHV0PiB7XG4gICAgbGV0IGlzVG9vbENhbGw6IG51bGwgfCBib29sZWFuID0gbnVsbFxuXG4gICAgY29uc3QgX3N0cmVhbSA9IGF3YWl0IHRoaXMucmVxKHtcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC4uLnByb2Nlc3NJbnB1dChkYXRhKSxcbiAgICAgICAgc3RyZWFtOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHN0cmVhbTogdHJ1ZSxcbiAgICB9KVxuICAgIGNvbnN0IHN0cmVhbSA9IHRvUG9seWZpbGxSZWFkYWJsZShfc3RyZWFtKSBhcyB0eXBlb2YgX3N0cmVhbVxuXG4gICAgY29uc3QgaHVueXVhbkJldGFTdHJlYW0gPSBpbnRvU3RhbmRhcmRTdHJlYW08SHVuWXVhblN0cmVhbVRleHRPdXRwdXQ+KHN0cmVhbSlcbiAgICBjb25zdCBzdHJlYW1XaXRoUmF3ID0gaHVueXVhbkJldGFTdHJlYW0ucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbTxIdW5ZdWFuU3RyZWFtVGV4dE91dHB1dCwgQmFzZURvU3RyZWFtT3V0cHV0Q2h1bmsgJiB7IHJhd1Jlc3BvbnNlPzogYW55IH0+KHtcbiAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICBjb25zdCBuZXdDaG9pY2VzID0gY2h1bmsuY2hvaWNlcy5tYXAoKGNob2ljZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBjaG9pY2UuZGVsdGFcbiAgICAgICAgICBpZiAoaXNUb29sQ2FsbCA9PSBudWxsKSBpc1Rvb2xDYWxsID0gaXNUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UobWVzc2FnZSlcbiAgICAgICAgICBpZiAoaXNUb29sQ2FsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY2hvaWNlLFxuICAgICAgICAgICAgICBmaW5pc2hfcmVhc29uOiAndG9vbF9jYWxscycsXG4gICAgICAgICAgICAgIGRlbHRhOiBtZXNzYWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY2hvaWNlXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IG5ld0NodW5rID0geyAuLi5jaHVuaywgY2hvaWNlczogbmV3Q2hvaWNlcyB9XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh7IC4uLm5ld0NodW5rLCByYXdSZXNwb25zZTogY2h1bmsgfSlcbiAgICAgIH0sXG4gICAgfSksKVxuXG4gICAgcmV0dXJuIGNyZWF0ZUFzeW5jSXRlcmFibGUoc3RyZWFtV2l0aFJhdylcbiAgfVxufVxuIl19
@@ -0,0 +1,10 @@
1
+ import type { ModelReq, BaseChatModelInput, SimpleChatModel, DoStreamOutput, DoGenerateOutput } from '../../type';
2
+ export declare class HunYuanOpenSimpleModel implements SimpleChatModel {
3
+ private req;
4
+ baseUrl: string;
5
+ subUrl: string;
6
+ constructor(req: ModelReq, baseUrl: string, subUrl?: string);
7
+ private get url();
8
+ doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput>;
9
+ doStream(data: BaseChatModelInput): Promise<DoStreamOutput>;
10
+ }
@@ -0,0 +1,122 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { createAsyncIterable, TransformStream, toPolyfillReadable, intoStandardStream, isToolCallAssistantMessage, } from '../../utils';
49
+ import { processInput } from '../HunYuan/util';
50
+ var HunYuanOpenSimpleModel = (function () {
51
+ function HunYuanOpenSimpleModel(req, baseUrl, subUrl) {
52
+ this.req = req;
53
+ this.baseUrl = baseUrl;
54
+ this.subUrl = 'hunyuan-open/v1/chat/completions';
55
+ if (subUrl != null) {
56
+ this.subUrl = subUrl;
57
+ }
58
+ }
59
+ Object.defineProperty(HunYuanOpenSimpleModel.prototype, "url", {
60
+ get: function () {
61
+ return "".concat(this.baseUrl, "/").concat(this.subUrl);
62
+ },
63
+ enumerable: false,
64
+ configurable: true
65
+ });
66
+ HunYuanOpenSimpleModel.prototype.doGenerate = function (data) {
67
+ return __awaiter(this, void 0, void 0, function () {
68
+ var res;
69
+ return __generator(this, function (_a) {
70
+ switch (_a.label) {
71
+ case 0: return [4, this.req({
72
+ url: this.url,
73
+ data: __assign(__assign({}, processInput(data)), { stream: false }),
74
+ stream: false,
75
+ })];
76
+ case 1:
77
+ res = (_a.sent());
78
+ return [2, __assign(__assign({}, res), { rawResponse: res })];
79
+ }
80
+ });
81
+ });
82
+ };
83
+ HunYuanOpenSimpleModel.prototype.doStream = function (data) {
84
+ return __awaiter(this, void 0, void 0, function () {
85
+ var isToolCall, _stream, stream, hunyuanBetaStream, streamWithRaw;
86
+ return __generator(this, function (_a) {
87
+ switch (_a.label) {
88
+ case 0:
89
+ isToolCall = null;
90
+ return [4, this.req({
91
+ url: this.url,
92
+ data: __assign(__assign({}, processInput(data)), { stream: true }),
93
+ stream: true,
94
+ })];
95
+ case 1:
96
+ _stream = _a.sent();
97
+ stream = toPolyfillReadable(_stream);
98
+ hunyuanBetaStream = intoStandardStream(stream);
99
+ streamWithRaw = hunyuanBetaStream.pipeThrough(new TransformStream({
100
+ transform: function (chunk, controller) {
101
+ var newChoices = chunk.choices.map(function (choice) {
102
+ var message = choice.delta;
103
+ if (isToolCall == null)
104
+ isToolCall = isToolCallAssistantMessage(message);
105
+ if (isToolCall) {
106
+ return __assign(__assign({}, choice), { finish_reason: 'tool_calls', delta: message });
107
+ }
108
+ return choice;
109
+ });
110
+ var newChunk = __assign(__assign({}, chunk), { choices: newChoices });
111
+ controller.enqueue(__assign(__assign({}, newChunk), { rawResponse: chunk }));
112
+ },
113
+ }));
114
+ return [2, createAsyncIterable(streamWithRaw)];
115
+ }
116
+ });
117
+ });
118
+ };
119
+ return HunYuanOpenSimpleModel;
120
+ }());
121
+ export { HunYuanOpenSimpleModel };
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kZWxzL0h1bll1YW5PcGVuL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQiwwQkFBMEIsR0FDM0IsTUFBTSxhQUFhLENBQUE7QUFTcEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRzlDO0lBRUUsZ0NBQW9CLEdBQWEsRUFBUyxPQUFlLEVBQUUsTUFBZTtRQUF0RCxRQUFHLEdBQUgsR0FBRyxDQUFVO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQURsRCxXQUFNLEdBQUcsa0NBQWtDLENBQUE7UUFFaEQsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELHNCQUFZLHVDQUFHO2FBQWY7WUFDRSxPQUFPLFVBQUcsSUFBSSxDQUFDLE9BQU8sY0FBSSxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUE7UUFDekMsQ0FBQzs7O09BQUE7SUFFWSwyQ0FBVSxHQUF2QixVQUF3QixJQUF3Qjs7Ozs7NEJBQ2pDLFdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQzs0QkFDMUIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHOzRCQUNiLElBQUksd0JBQ0MsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUNyQixNQUFNLEVBQUUsS0FBSyxHQUNkOzRCQUNELE1BQU0sRUFBRSxLQUFLO3lCQUNkLENBQUMsRUFBQTs7d0JBUEksR0FBRyxHQUFHLENBQUMsU0FPWCxDQUE4Qjt3QkFDaEMsaUNBQVksR0FBRyxLQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUU7Ozs7S0FDcEM7SUFFWSx5Q0FBUSxHQUFyQixVQUFzQixJQUF3Qjs7Ozs7O3dCQUN4QyxVQUFVLEdBQW1CLElBQUksQ0FBQTt3QkFFckIsV0FBTSxJQUFJLENBQUMsR0FBRyxDQUFDO2dDQUM3QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0NBQ2IsSUFBSSx3QkFDQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQ3JCLE1BQU0sRUFBRSxJQUFJLEdBQ2I7Z0NBQ0QsTUFBTSxFQUFFLElBQUk7NkJBQ2IsQ0FBQyxFQUFBOzt3QkFQSSxPQUFPLEdBQUcsU0FPZDt3QkFDSSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFtQixDQUFBO3dCQUV0RCxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBMEIsTUFBTSxDQUFDLENBQUE7d0JBQ3ZFLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxlQUFlLENBQTJFOzRCQUNoSixTQUFTLFlBQUMsS0FBSyxFQUFFLFVBQVU7Z0NBQ3pCLElBQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQUMsTUFBTTtvQ0FDMUMsSUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQTtvQ0FDNUIsSUFBSSxVQUFVLElBQUksSUFBSTt3Q0FBRSxVQUFVLEdBQUcsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUE7b0NBQ3hFLElBQUksVUFBVSxFQUFFO3dDQUNkLDZCQUNLLE1BQU0sS0FDVCxhQUFhLEVBQUUsWUFBWSxFQUMzQixLQUFLLEVBQUUsT0FBTyxJQUNmO3FDQUNGO29DQUNELE9BQU8sTUFBTSxDQUFBO2dDQUNmLENBQUMsQ0FBQyxDQUFBO2dDQUNGLElBQU0sUUFBUSx5QkFBUSxLQUFLLEtBQUUsT0FBTyxFQUFFLFVBQVUsR0FBRSxDQUFBO2dDQUNsRCxVQUFVLENBQUMsT0FBTyx1QkFBTSxRQUFRLEtBQUUsV0FBVyxFQUFFLEtBQUssSUFBRyxDQUFBOzRCQUN6RCxDQUFDO3lCQUNGLENBQUMsQ0FBRSxDQUFBO3dCQUVKLFdBQU8sbUJBQW1CLENBQUMsYUFBYSxDQUFDLEVBQUE7Ozs7S0FDMUM7SUFDSCw2QkFBQztBQUFELENBQUMsQUEzREQsSUEyREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjcmVhdGVBc3luY0l0ZXJhYmxlLFxuICBUcmFuc2Zvcm1TdHJlYW0sXG4gIHRvUG9seWZpbGxSZWFkYWJsZSxcbiAgaW50b1N0YW5kYXJkU3RyZWFtLFxuICBpc1Rvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7XG4gIE1vZGVsUmVxLFxuICBCYXNlQ2hhdE1vZGVsSW5wdXQsXG4gIFNpbXBsZUNoYXRNb2RlbCxcbiAgRG9TdHJlYW1PdXRwdXQsXG4gIEJhc2VEb1N0cmVhbU91dHB1dENodW5rLFxuICBEb0dlbmVyYXRlT3V0cHV0LFxufSBmcm9tICcuLi8uLi90eXBlJ1xuaW1wb3J0IHsgcHJvY2Vzc0lucHV0IH0gZnJvbSAnLi4vSHVuWXVhbi91dGlsJ1xuaW1wb3J0IHsgSHVuWXVhbkdlbmVyYXRlVGV4dE91dHB1dCwgSHVuWXVhblN0cmVhbVRleHRPdXRwdXQgfSBmcm9tICcuLi9IdW5ZdWFuL3R5cGUnXG5cbmV4cG9ydCBjbGFzcyBIdW5ZdWFuT3BlblNpbXBsZU1vZGVsIGltcGxlbWVudHMgU2ltcGxlQ2hhdE1vZGVsIHtcbiAgcHVibGljIHN1YlVybCA9ICdodW55dWFuLW9wZW4vdjEvY2hhdC9jb21wbGV0aW9ucydcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXE6IE1vZGVsUmVxLCBwdWJsaWMgYmFzZVVybDogc3RyaW5nLCBzdWJVcmw/OiBzdHJpbmcpIHtcbiAgICBpZiAoc3ViVXJsICE9IG51bGwpIHtcbiAgICAgIHRoaXMuc3ViVXJsID0gc3ViVXJsXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdXJsKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmJhc2VVcmx9LyR7dGhpcy5zdWJVcmx9YFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvR2VuZXJhdGUoZGF0YTogQmFzZUNoYXRNb2RlbElucHV0KTogUHJvbWlzZTxEb0dlbmVyYXRlT3V0cHV0PiB7XG4gICAgY29uc3QgcmVzID0gKGF3YWl0IHRoaXMucmVxKHtcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC4uLnByb2Nlc3NJbnB1dChkYXRhKSxcbiAgICAgICAgc3RyZWFtOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBzdHJlYW06IGZhbHNlLFxuICAgIH0pKSBhcyBIdW5ZdWFuR2VuZXJhdGVUZXh0T3V0cHV0XG4gICAgcmV0dXJuIHsgLi4ucmVzLCByYXdSZXNwb25zZTogcmVzIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb1N0cmVhbShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQpOiBQcm9taXNlPERvU3RyZWFtT3V0cHV0PiB7XG4gICAgbGV0IGlzVG9vbENhbGw6IG51bGwgfCBib29sZWFuID0gbnVsbFxuXG4gICAgY29uc3QgX3N0cmVhbSA9IGF3YWl0IHRoaXMucmVxKHtcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIC4uLnByb2Nlc3NJbnB1dChkYXRhKSxcbiAgICAgICAgc3RyZWFtOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHN0cmVhbTogdHJ1ZSxcbiAgICB9KVxuICAgIGNvbnN0IHN0cmVhbSA9IHRvUG9seWZpbGxSZWFkYWJsZShfc3RyZWFtKSBhcyB0eXBlb2YgX3N0cmVhbVxuXG4gICAgY29uc3QgaHVueXVhbkJldGFTdHJlYW0gPSBpbnRvU3RhbmRhcmRTdHJlYW08SHVuWXVhblN0cmVhbVRleHRPdXRwdXQ+KHN0cmVhbSlcbiAgICBjb25zdCBzdHJlYW1XaXRoUmF3ID0gaHVueXVhbkJldGFTdHJlYW0ucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbTxIdW5ZdWFuU3RyZWFtVGV4dE91dHB1dCwgQmFzZURvU3RyZWFtT3V0cHV0Q2h1bmsgJiB7IHJhd1Jlc3BvbnNlPzogYW55IH0+KHtcbiAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICBjb25zdCBuZXdDaG9pY2VzID0gY2h1bmsuY2hvaWNlcy5tYXAoKGNob2ljZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBjaG9pY2UuZGVsdGFcbiAgICAgICAgICBpZiAoaXNUb29sQ2FsbCA9PSBudWxsKSBpc1Rvb2xDYWxsID0gaXNUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UobWVzc2FnZSlcbiAgICAgICAgICBpZiAoaXNUb29sQ2FsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY2hvaWNlLFxuICAgICAgICAgICAgICBmaW5pc2hfcmVhc29uOiAndG9vbF9jYWxscycsXG4gICAgICAgICAgICAgIGRlbHRhOiBtZXNzYWdlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY2hvaWNlXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IG5ld0NodW5rID0geyAuLi5jaHVuaywgY2hvaWNlczogbmV3Q2hvaWNlcyB9XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh7IC4uLm5ld0NodW5rLCByYXdSZXNwb25zZTogY2h1bmsgfSlcbiAgICAgIH0sXG4gICAgfSksKVxuXG4gICAgcmV0dXJuIGNyZWF0ZUFzeW5jSXRlcmFibGUoc3RyZWFtV2l0aFJhdylcbiAgfVxufVxuIl19
@@ -1,18 +1,10 @@
1
- import { ZhiPuSimpleModel } from './ZhiPu/index';
2
- import { HunYuanBetaSimpleModel } from './HunYuanBeta/index';
3
1
  import { HunYuanSimpleModel } from './HunYuan/index';
4
- import { ArkSimpleModel } from './Ark/index';
5
- import { DSSimpleModel } from './DashScope/index';
6
- import { YiSimpleModel } from './Yi/index';
7
- import { MoonshotSimpleModel } from './Moonshot/index';
2
+ import { HunYuanExpSimpleModel } from './HunYuanExp/index';
3
+ import { HunYuanOpenSimpleModel } from './HunYuanOpen/index';
8
4
  export declare const MODELS: {
9
5
  hunyuan: typeof HunYuanSimpleModel;
10
- 'hunyuan-beta': typeof HunYuanBetaSimpleModel;
11
- ark: typeof ArkSimpleModel;
12
- dashscope: typeof DSSimpleModel;
13
- '01-ai': typeof YiSimpleModel;
14
- moonshot: typeof MoonshotSimpleModel;
15
- zhipu: typeof ZhiPuSimpleModel;
6
+ 'hunyuan-exp': typeof HunYuanExpSimpleModel;
7
+ 'hunyuan-open': typeof HunYuanOpenSimpleModel;
16
8
  };
17
- export { ZhiPuSimpleModel, HunYuanBetaSimpleModel, HunYuanSimpleModel, ArkSimpleModel, DSSimpleModel, YiSimpleModel, MoonshotSimpleModel, };
9
+ export { HunYuanSimpleModel, HunYuanExpSimpleModel, HunYuanOpenSimpleModel, };
18
10
  export { ReactModel, toolMap } from './model';
@@ -1,19 +1,11 @@
1
- import { ZhiPuSimpleModel } from './ZhiPu/index';
2
- import { HunYuanBetaSimpleModel } from './HunYuanBeta/index';
3
1
  import { HunYuanSimpleModel } from './HunYuan/index';
4
- import { ArkSimpleModel } from './Ark/index';
5
- import { DSSimpleModel } from './DashScope/index';
6
- import { YiSimpleModel } from './Yi/index';
7
- import { MoonshotSimpleModel } from './Moonshot/index';
2
+ import { HunYuanExpSimpleModel } from './HunYuanExp/index';
3
+ import { HunYuanOpenSimpleModel } from './HunYuanOpen/index';
8
4
  export var MODELS = {
9
5
  hunyuan: HunYuanSimpleModel,
10
- 'hunyuan-beta': HunYuanBetaSimpleModel,
11
- ark: ArkSimpleModel,
12
- dashscope: DSSimpleModel,
13
- '01-ai': YiSimpleModel,
14
- moonshot: MoonshotSimpleModel,
15
- zhipu: ZhiPuSimpleModel,
6
+ 'hunyuan-exp': HunYuanExpSimpleModel,
7
+ 'hunyuan-open': HunYuanOpenSimpleModel,
16
8
  };
17
- export { ZhiPuSimpleModel, HunYuanBetaSimpleModel, HunYuanSimpleModel, ArkSimpleModel, DSSimpleModel, YiSimpleModel, MoonshotSimpleModel, };
9
+ export { HunYuanSimpleModel, HunYuanExpSimpleModel, HunYuanOpenSimpleModel, };
18
10
  export { ReactModel, toolMap } from './model';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXRELE1BQU0sQ0FBQyxJQUFNLE1BQU0sR0FBRztJQUNwQixPQUFPLEVBQUUsa0JBQWtCO0lBQzNCLGNBQWMsRUFBRSxzQkFBc0I7SUFDdEMsR0FBRyxFQUFFLGNBQWM7SUFDbkIsU0FBUyxFQUFFLGFBQWE7SUFDeEIsT0FBTyxFQUFFLGFBQWE7SUFDdEIsUUFBUSxFQUFFLG1CQUFtQjtJQUM3QixLQUFLLEVBQUUsZ0JBQWdCO0NBQ3hCLENBQUE7QUFFRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLGFBQWEsRUFDYixhQUFhLEVBQ2IsbUJBQW1CLEdBQ3BCLENBQUE7QUFFRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFpoaVB1U2ltcGxlTW9kZWwgfSBmcm9tICcuL1poaVB1L2luZGV4J1xuaW1wb3J0IHsgSHVuWXVhbkJldGFTaW1wbGVNb2RlbCB9IGZyb20gJy4vSHVuWXVhbkJldGEvaW5kZXgnXG5pbXBvcnQgeyBIdW5ZdWFuU2ltcGxlTW9kZWwgfSBmcm9tICcuL0h1bll1YW4vaW5kZXgnXG5pbXBvcnQgeyBBcmtTaW1wbGVNb2RlbCB9IGZyb20gJy4vQXJrL2luZGV4J1xuaW1wb3J0IHsgRFNTaW1wbGVNb2RlbCB9IGZyb20gJy4vRGFzaFNjb3BlL2luZGV4J1xuaW1wb3J0IHsgWWlTaW1wbGVNb2RlbCB9IGZyb20gJy4vWWkvaW5kZXgnXG5pbXBvcnQgeyBNb29uc2hvdFNpbXBsZU1vZGVsIH0gZnJvbSAnLi9Nb29uc2hvdC9pbmRleCdcblxuZXhwb3J0IGNvbnN0IE1PREVMUyA9IHtcbiAgaHVueXVhbjogSHVuWXVhblNpbXBsZU1vZGVsLFxuICAnaHVueXVhbi1iZXRhJzogSHVuWXVhbkJldGFTaW1wbGVNb2RlbCxcbiAgYXJrOiBBcmtTaW1wbGVNb2RlbCxcbiAgZGFzaHNjb3BlOiBEU1NpbXBsZU1vZGVsLFxuICAnMDEtYWknOiBZaVNpbXBsZU1vZGVsLFxuICBtb29uc2hvdDogTW9vbnNob3RTaW1wbGVNb2RlbCxcbiAgemhpcHU6IFpoaVB1U2ltcGxlTW9kZWwsXG59XG5cbmV4cG9ydCB7XG4gIFpoaVB1U2ltcGxlTW9kZWwsXG4gIEh1bll1YW5CZXRhU2ltcGxlTW9kZWwsXG4gIEh1bll1YW5TaW1wbGVNb2RlbCxcbiAgQXJrU2ltcGxlTW9kZWwsXG4gIERTU2ltcGxlTW9kZWwsXG4gIFlpU2ltcGxlTW9kZWwsXG4gIE1vb25zaG90U2ltcGxlTW9kZWwsXG59XG5cbmV4cG9ydCB7IFJlYWN0TW9kZWwsIHRvb2xNYXAgfSBmcm9tICcuL21vZGVsJ1xuIl19
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBS3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRTVELE1BQU0sQ0FBQyxJQUFNLE1BQU0sR0FBRztJQUNwQixPQUFPLEVBQUUsa0JBQWtCO0lBTzNCLGFBQWEsRUFBRSxxQkFBcUI7SUFDcEMsY0FBYyxFQUFFLHNCQUFzQjtDQUN2QyxDQUFBO0FBRUQsT0FBTyxFQUdMLGtCQUFrQixFQUtsQixxQkFBcUIsRUFDckIsc0JBQXNCLEdBQ3ZCLENBQUE7QUFFRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7IFpoaVB1U2ltcGxlTW9kZWwgfSBmcm9tICcuL1poaVB1L2luZGV4J1xuLy8gaW1wb3J0IHsgSHVuWXVhbkJldGFTaW1wbGVNb2RlbCB9IGZyb20gJy4vSHVuWXVhbkJldGEvaW5kZXgnXG5pbXBvcnQgeyBIdW5ZdWFuU2ltcGxlTW9kZWwgfSBmcm9tICcuL0h1bll1YW4vaW5kZXgnXG4vLyBpbXBvcnQgeyBBcmtTaW1wbGVNb2RlbCB9IGZyb20gJy4vQXJrL2luZGV4J1xuLy8gaW1wb3J0IHsgRFNTaW1wbGVNb2RlbCB9IGZyb20gJy4vRGFzaFNjb3BlL2luZGV4J1xuLy8gaW1wb3J0IHsgWWlTaW1wbGVNb2RlbCB9IGZyb20gJy4vWWkvaW5kZXgnXG4vLyBpbXBvcnQgeyBNb29uc2hvdFNpbXBsZU1vZGVsIH0gZnJvbSAnLi9Nb29uc2hvdC9pbmRleCdcbmltcG9ydCB7IEh1bll1YW5FeHBTaW1wbGVNb2RlbCB9IGZyb20gJy4vSHVuWXVhbkV4cC9pbmRleCdcbmltcG9ydCB7IEh1bll1YW5PcGVuU2ltcGxlTW9kZWwgfSBmcm9tICcuL0h1bll1YW5PcGVuL2luZGV4J1xuXG5leHBvcnQgY29uc3QgTU9ERUxTID0ge1xuICBodW55dWFuOiBIdW5ZdWFuU2ltcGxlTW9kZWwsXG4gIC8vICdodW55dWFuLWJldGEnOiBIdW5ZdWFuQmV0YVNpbXBsZU1vZGVsLFxuICAvLyBhcms6IEFya1NpbXBsZU1vZGVsLFxuICAvLyBkYXNoc2NvcGU6IERTU2ltcGxlTW9kZWwsXG4gIC8vICcwMS1haSc6IFlpU2ltcGxlTW9kZWwsXG4gIC8vIG1vb25zaG90OiBNb29uc2hvdFNpbXBsZU1vZGVsLFxuICAvLyB6aGlwdTogWmhpUHVTaW1wbGVNb2RlbCxcbiAgJ2h1bnl1YW4tZXhwJzogSHVuWXVhbkV4cFNpbXBsZU1vZGVsLFxuICAnaHVueXVhbi1vcGVuJzogSHVuWXVhbk9wZW5TaW1wbGVNb2RlbCxcbn1cblxuZXhwb3J0IHtcbiAgLy8gWmhpUHVTaW1wbGVNb2RlbCxcbiAgLy8gSHVuWXVhbkJldGFTaW1wbGVNb2RlbCxcbiAgSHVuWXVhblNpbXBsZU1vZGVsLFxuICAvLyBBcmtTaW1wbGVNb2RlbCxcbiAgLy8gRFNTaW1wbGVNb2RlbCxcbiAgLy8gWWlTaW1wbGVNb2RlbCxcbiAgLy8gTW9vbnNob3RTaW1wbGVNb2RlbCxcbiAgSHVuWXVhbkV4cFNpbXBsZU1vZGVsLFxuICBIdW5ZdWFuT3BlblNpbXBsZU1vZGVsLFxufVxuXG5leHBvcnQgeyBSZWFjdE1vZGVsLCB0b29sTWFwIH0gZnJvbSAnLi9tb2RlbCdcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/ai",
3
- "version": "2.8.31",
3
+ "version": "2.8.33",
4
4
  "description": "cloudbase js sdk ai module",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -27,7 +27,7 @@
27
27
  "author": "",
28
28
  "license": "Apache-2.0",
29
29
  "dependencies": {
30
- "@cloudbase/types": "^2.8.31",
30
+ "@cloudbase/types": "^2.8.33",
31
31
  "@mattiasbuelens/web-streams-adapter": "^0.1.0",
32
32
  "text-encoding-shim": "^1.0.5",
33
33
  "web-streams-polyfill": "^4.0.0"
@@ -35,5 +35,5 @@
35
35
  "devDependencies": {
36
36
  "@cloudbase/adapter-interface": "^0.6.0"
37
37
  },
38
- "gitHead": "6eb0cde9858987bd6c5ba9eaebdaba9e1a5365c2"
38
+ "gitHead": "d7fc8d5af37e996a46091b96b8f18b3a69118125"
39
39
  }
@@ -0,0 +1,78 @@
1
+ import {
2
+ createAsyncIterable,
3
+ TransformStream,
4
+ toPolyfillReadable,
5
+ intoStandardStream,
6
+ isToolCallAssistantMessage,
7
+ } from '../../utils'
8
+ import type {
9
+ ModelReq,
10
+ BaseChatModelInput,
11
+ SimpleChatModel,
12
+ DoStreamOutput,
13
+ BaseDoStreamOutputChunk,
14
+ DoGenerateOutput,
15
+ } from '../../type'
16
+ import { processInput } from '../HunYuan/util'
17
+ import { HunYuanGenerateTextOutput, HunYuanStreamTextOutput } from '../HunYuan/type'
18
+
19
+ export class HunYuanExpSimpleModel implements SimpleChatModel {
20
+ public subUrl = 'hunyuan-exp/v1/chat/completions'
21
+ constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {
22
+ if (subUrl != null) {
23
+ this.subUrl = subUrl
24
+ }
25
+ }
26
+
27
+ private get url() {
28
+ return `${this.baseUrl}/${this.subUrl}`
29
+ }
30
+
31
+ public async doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput> {
32
+ const res = (await this.req({
33
+ url: this.url,
34
+ data: {
35
+ ...processInput(data),
36
+ stream: false,
37
+ },
38
+ stream: false,
39
+ })) as HunYuanGenerateTextOutput
40
+ return { ...res, rawResponse: res }
41
+ }
42
+
43
+ public async doStream(data: BaseChatModelInput): Promise<DoStreamOutput> {
44
+ let isToolCall: null | boolean = null
45
+
46
+ const _stream = await this.req({
47
+ url: this.url,
48
+ data: {
49
+ ...processInput(data),
50
+ stream: true,
51
+ },
52
+ stream: true,
53
+ })
54
+ const stream = toPolyfillReadable(_stream) as typeof _stream
55
+
56
+ const hunyuanBetaStream = intoStandardStream<HunYuanStreamTextOutput>(stream)
57
+ const streamWithRaw = hunyuanBetaStream.pipeThrough(new TransformStream<HunYuanStreamTextOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({
58
+ transform(chunk, controller) {
59
+ const newChoices = chunk.choices.map((choice) => {
60
+ const message = choice.delta
61
+ if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)
62
+ if (isToolCall) {
63
+ return {
64
+ ...choice,
65
+ finish_reason: 'tool_calls',
66
+ delta: message,
67
+ }
68
+ }
69
+ return choice
70
+ })
71
+ const newChunk = { ...chunk, choices: newChoices }
72
+ controller.enqueue({ ...newChunk, rawResponse: chunk })
73
+ },
74
+ }),)
75
+
76
+ return createAsyncIterable(streamWithRaw)
77
+ }
78
+ }
@@ -0,0 +1,78 @@
1
+ import {
2
+ createAsyncIterable,
3
+ TransformStream,
4
+ toPolyfillReadable,
5
+ intoStandardStream,
6
+ isToolCallAssistantMessage,
7
+ } from '../../utils'
8
+ import type {
9
+ ModelReq,
10
+ BaseChatModelInput,
11
+ SimpleChatModel,
12
+ DoStreamOutput,
13
+ BaseDoStreamOutputChunk,
14
+ DoGenerateOutput,
15
+ } from '../../type'
16
+ import { processInput } from '../HunYuan/util'
17
+ import { HunYuanGenerateTextOutput, HunYuanStreamTextOutput } from '../HunYuan/type'
18
+
19
+ export class HunYuanOpenSimpleModel implements SimpleChatModel {
20
+ public subUrl = 'hunyuan-open/v1/chat/completions'
21
+ constructor(private req: ModelReq, public baseUrl: string, subUrl?: string) {
22
+ if (subUrl != null) {
23
+ this.subUrl = subUrl
24
+ }
25
+ }
26
+
27
+ private get url() {
28
+ return `${this.baseUrl}/${this.subUrl}`
29
+ }
30
+
31
+ public async doGenerate(data: BaseChatModelInput): Promise<DoGenerateOutput> {
32
+ const res = (await this.req({
33
+ url: this.url,
34
+ data: {
35
+ ...processInput(data),
36
+ stream: false,
37
+ },
38
+ stream: false,
39
+ })) as HunYuanGenerateTextOutput
40
+ return { ...res, rawResponse: res }
41
+ }
42
+
43
+ public async doStream(data: BaseChatModelInput): Promise<DoStreamOutput> {
44
+ let isToolCall: null | boolean = null
45
+
46
+ const _stream = await this.req({
47
+ url: this.url,
48
+ data: {
49
+ ...processInput(data),
50
+ stream: true,
51
+ },
52
+ stream: true,
53
+ })
54
+ const stream = toPolyfillReadable(_stream) as typeof _stream
55
+
56
+ const hunyuanBetaStream = intoStandardStream<HunYuanStreamTextOutput>(stream)
57
+ const streamWithRaw = hunyuanBetaStream.pipeThrough(new TransformStream<HunYuanStreamTextOutput, BaseDoStreamOutputChunk & { rawResponse?: any }>({
58
+ transform(chunk, controller) {
59
+ const newChoices = chunk.choices.map((choice) => {
60
+ const message = choice.delta
61
+ if (isToolCall == null) isToolCall = isToolCallAssistantMessage(message)
62
+ if (isToolCall) {
63
+ return {
64
+ ...choice,
65
+ finish_reason: 'tool_calls',
66
+ delta: message,
67
+ }
68
+ }
69
+ return choice
70
+ })
71
+ const newChunk = { ...chunk, choices: newChoices }
72
+ controller.enqueue({ ...newChunk, rawResponse: chunk })
73
+ },
74
+ }),)
75
+
76
+ return createAsyncIterable(streamWithRaw)
77
+ }
78
+ }
@@ -1,29 +1,35 @@
1
- import { ZhiPuSimpleModel } from './ZhiPu/index'
2
- import { HunYuanBetaSimpleModel } from './HunYuanBeta/index'
1
+ // import { ZhiPuSimpleModel } from './ZhiPu/index'
2
+ // import { HunYuanBetaSimpleModel } from './HunYuanBeta/index'
3
3
  import { HunYuanSimpleModel } from './HunYuan/index'
4
- import { ArkSimpleModel } from './Ark/index'
5
- import { DSSimpleModel } from './DashScope/index'
6
- import { YiSimpleModel } from './Yi/index'
7
- import { MoonshotSimpleModel } from './Moonshot/index'
4
+ // import { ArkSimpleModel } from './Ark/index'
5
+ // import { DSSimpleModel } from './DashScope/index'
6
+ // import { YiSimpleModel } from './Yi/index'
7
+ // import { MoonshotSimpleModel } from './Moonshot/index'
8
+ import { HunYuanExpSimpleModel } from './HunYuanExp/index'
9
+ import { HunYuanOpenSimpleModel } from './HunYuanOpen/index'
8
10
 
9
11
  export const MODELS = {
10
12
  hunyuan: HunYuanSimpleModel,
11
- 'hunyuan-beta': HunYuanBetaSimpleModel,
12
- ark: ArkSimpleModel,
13
- dashscope: DSSimpleModel,
14
- '01-ai': YiSimpleModel,
15
- moonshot: MoonshotSimpleModel,
16
- zhipu: ZhiPuSimpleModel,
13
+ // 'hunyuan-beta': HunYuanBetaSimpleModel,
14
+ // ark: ArkSimpleModel,
15
+ // dashscope: DSSimpleModel,
16
+ // '01-ai': YiSimpleModel,
17
+ // moonshot: MoonshotSimpleModel,
18
+ // zhipu: ZhiPuSimpleModel,
19
+ 'hunyuan-exp': HunYuanExpSimpleModel,
20
+ 'hunyuan-open': HunYuanOpenSimpleModel,
17
21
  }
18
22
 
19
23
  export {
20
- ZhiPuSimpleModel,
21
- HunYuanBetaSimpleModel,
24
+ // ZhiPuSimpleModel,
25
+ // HunYuanBetaSimpleModel,
22
26
  HunYuanSimpleModel,
23
- ArkSimpleModel,
24
- DSSimpleModel,
25
- YiSimpleModel,
26
- MoonshotSimpleModel,
27
+ // ArkSimpleModel,
28
+ // DSSimpleModel,
29
+ // YiSimpleModel,
30
+ // MoonshotSimpleModel,
31
+ HunYuanExpSimpleModel,
32
+ HunYuanOpenSimpleModel,
27
33
  }
28
34
 
29
35
  export { ReactModel, toolMap } from './model'