@llumiverse/drivers 0.8.4 → 0.9.0
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/lib/cjs/index.js +3 -2
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/mistral/index.js +147 -0
- package/lib/cjs/mistral/index.js.map +1 -0
- package/lib/cjs/mistral/types.js +83 -0
- package/lib/cjs/mistral/types.js.map +1 -0
- package/lib/cjs/togetherai/index.js +5 -14
- package/lib/cjs/togetherai/index.js.map +1 -1
- package/lib/cjs/vertexai/models/palm-model-base.js +6 -14
- package/lib/cjs/vertexai/models/palm-model-base.js.map +1 -1
- package/lib/esm/index.js +3 -2
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/mistral/index.js +143 -0
- package/lib/esm/mistral/index.js.map +1 -0
- package/lib/esm/mistral/types.js +80 -0
- package/lib/esm/mistral/types.js.map +1 -0
- package/lib/esm/togetherai/index.js +5 -14
- package/lib/esm/togetherai/index.js.map +1 -1
- package/lib/esm/vertexai/models/palm-model-base.js +5 -13
- package/lib/esm/vertexai/models/palm-model-base.js.map +1 -1
- package/lib/types/index.d.ts +3 -2
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/mistral/index.d.ts +32 -0
- package/lib/types/mistral/index.d.ts.map +1 -0
- package/lib/types/mistral/types.d.ts +131 -0
- package/lib/types/mistral/types.d.ts.map +1 -0
- package/lib/types/togetherai/index.d.ts.map +1 -1
- package/lib/types/vertexai/models/palm-model-base.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +4 -2
- package/src/mistral/index.ts +193 -0
- package/src/mistral/types.ts +211 -0
- package/src/togetherai/index.ts +6 -14
- package/src/vertexai/models/palm-model-base.ts +6 -17
package/lib/cjs/index.js
CHANGED
|
@@ -16,9 +16,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./bedrock/index.js"), exports);
|
|
18
18
|
__exportStar(require("./huggingface_ie.js"), exports);
|
|
19
|
+
__exportStar(require("./mistral/index.js"), exports);
|
|
19
20
|
__exportStar(require("./openai.js"), exports);
|
|
20
21
|
__exportStar(require("./replicate.js"), exports);
|
|
21
|
-
__exportStar(require("./vertexai/index.js"), exports);
|
|
22
|
-
__exportStar(require("./togetherai/index.js"), exports);
|
|
23
22
|
__exportStar(require("./test/index.js"), exports);
|
|
23
|
+
__exportStar(require("./togetherai/index.js"), exports);
|
|
24
|
+
__exportStar(require("./vertexai/index.js"), exports);
|
|
24
25
|
//# sourceMappingURL=index.js.map
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,sDAAoC;AACpC,8CAA4B;AAC5B,iDAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,sDAAoC;AACpC,qDAAmC;AACnC,8CAA4B;AAC5B,iDAA+B;AAC/B,kDAAgC;AAChC,wDAAsC;AACtC,sDAAoC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MistralAIDriver = void 0;
|
|
4
|
+
const core_1 = require("@llumiverse/core");
|
|
5
|
+
const async_1 = require("@llumiverse/core/async");
|
|
6
|
+
const api_fetch_client_1 = require("api-fetch-client");
|
|
7
|
+
//TODO retry on 429
|
|
8
|
+
//const RETRY_STATUS_CODES = [429, 500, 502, 503, 504];
|
|
9
|
+
const ENDPOINT = 'https://api.mistral.ai';
|
|
10
|
+
class MistralAIDriver extends core_1.AbstractDriver {
|
|
11
|
+
provider;
|
|
12
|
+
apiKey;
|
|
13
|
+
defaultFormat;
|
|
14
|
+
//client: MistralClient;
|
|
15
|
+
client;
|
|
16
|
+
endpointUrl;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
super(options);
|
|
19
|
+
this.provider = "MistralAI";
|
|
20
|
+
this.defaultFormat = core_1.PromptFormats.genericTextLLM;
|
|
21
|
+
this.apiKey = options.apiKey;
|
|
22
|
+
//this.client = new MistralClient(options.apiKey, options.endpointUrl);
|
|
23
|
+
this.client = new api_fetch_client_1.FetchClient(options.endpoint_url || ENDPOINT).withHeaders({
|
|
24
|
+
authorization: `Bearer ${this.apiKey}`
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
getResponseFormat = (_options) => {
|
|
28
|
+
/*const responseFormatJson: ResponseFormat = {
|
|
29
|
+
type: "json_object",
|
|
30
|
+
} as ResponseFormat
|
|
31
|
+
|
|
32
|
+
const responseFormatText: ResponseFormat = {
|
|
33
|
+
type: "text",
|
|
34
|
+
} as ResponseFormat;
|
|
35
|
+
*/
|
|
36
|
+
//return _options.resultSchema ? responseFormatJson : responseFormatText;
|
|
37
|
+
//TODO remove this when Mistral properly supports the parameters - it makes an error for now
|
|
38
|
+
return undefined;
|
|
39
|
+
};
|
|
40
|
+
createPrompt(segments, opts) {
|
|
41
|
+
// use same format as OpenAI as that's what MistralAI uses
|
|
42
|
+
const prompts = super.createPrompt(segments, { ...opts, format: core_1.PromptFormats.openai });
|
|
43
|
+
//Add JSON instruction is schema is provided
|
|
44
|
+
if (opts.resultSchema) {
|
|
45
|
+
const content = "The user is explicitely instructing that the result should be a JSON object.\nThe schema is as follows: \n" + JSON.stringify(opts.resultSchema);
|
|
46
|
+
prompts.push({
|
|
47
|
+
role: "user",
|
|
48
|
+
content: content
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return prompts;
|
|
52
|
+
}
|
|
53
|
+
async requestCompletion(messages, options) {
|
|
54
|
+
const res = await this.client.post('/v1/chat/completions', {
|
|
55
|
+
payload: _makeChatCompletionRequest({
|
|
56
|
+
model: options.model,
|
|
57
|
+
messages: messages,
|
|
58
|
+
maxTokens: options.max_tokens ?? 1024,
|
|
59
|
+
temperature: options.temperature ?? 0.7,
|
|
60
|
+
responseFormat: this.getResponseFormat(options),
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
const result = res.choices[0]?.message.content;
|
|
64
|
+
return {
|
|
65
|
+
result: result,
|
|
66
|
+
token_usage: {
|
|
67
|
+
prompt: res.usage.prompt_tokens,
|
|
68
|
+
result: res.usage.completion_tokens,
|
|
69
|
+
total: res.usage.total_tokens,
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
async requestCompletionStream(messages, options) {
|
|
74
|
+
const stream = await this.client.post('/v1/chat/completions', {
|
|
75
|
+
payload: _makeChatCompletionRequest({
|
|
76
|
+
model: options.model,
|
|
77
|
+
messages: messages,
|
|
78
|
+
maxTokens: options.max_tokens ?? 1024,
|
|
79
|
+
temperature: options.temperature ?? 0.7,
|
|
80
|
+
responseFormat: this.getResponseFormat(options),
|
|
81
|
+
stream: true
|
|
82
|
+
}),
|
|
83
|
+
reader: 'sse'
|
|
84
|
+
});
|
|
85
|
+
return (0, async_1.transformSSEStream)(stream, (data) => {
|
|
86
|
+
const json = JSON.parse(data);
|
|
87
|
+
return json.choices[0]?.delta.content ?? '';
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async listModels() {
|
|
91
|
+
const models = await this.client.get('v1/models');
|
|
92
|
+
const aimodels = models.data.map(m => {
|
|
93
|
+
return {
|
|
94
|
+
id: m.id,
|
|
95
|
+
name: m.id,
|
|
96
|
+
description: undefined,
|
|
97
|
+
provider: m.owned_by,
|
|
98
|
+
formats: [core_1.PromptFormats.genericTextLLM],
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
return aimodels;
|
|
102
|
+
}
|
|
103
|
+
listTrainableModels() {
|
|
104
|
+
throw new Error("Method not implemented.");
|
|
105
|
+
}
|
|
106
|
+
validateConnection() {
|
|
107
|
+
throw new Error("Method not implemented.");
|
|
108
|
+
}
|
|
109
|
+
//@ts-ignore
|
|
110
|
+
generateEmbeddings(content, model) {
|
|
111
|
+
throw new Error("Method not implemented.");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.MistralAIDriver = MistralAIDriver;
|
|
115
|
+
/**
|
|
116
|
+
* Creates a chat completion request
|
|
117
|
+
* @param {*} model
|
|
118
|
+
* @param {*} messages
|
|
119
|
+
* @param {*} tools
|
|
120
|
+
* @param {*} temperature
|
|
121
|
+
* @param {*} maxTokens
|
|
122
|
+
* @param {*} topP
|
|
123
|
+
* @param {*} randomSeed
|
|
124
|
+
* @param {*} stream
|
|
125
|
+
* @param {*} safeMode deprecated use safePrompt instead
|
|
126
|
+
* @param {*} safePrompt
|
|
127
|
+
* @param {*} toolChoice
|
|
128
|
+
* @param {*} responseFormat
|
|
129
|
+
* @return {Promise<Object>}
|
|
130
|
+
*/
|
|
131
|
+
function _makeChatCompletionRequest({ model, messages, tools, temperature, maxTokens, topP, randomSeed, stream, safeMode, safePrompt, toolChoice, responseFormat, }) {
|
|
132
|
+
return {
|
|
133
|
+
model: model,
|
|
134
|
+
messages: messages,
|
|
135
|
+
tools: tools ?? undefined,
|
|
136
|
+
temperature: temperature ?? undefined,
|
|
137
|
+
max_tokens: maxTokens ?? undefined,
|
|
138
|
+
top_p: topP ?? undefined,
|
|
139
|
+
random_seed: randomSeed ?? undefined,
|
|
140
|
+
stream: stream ?? undefined,
|
|
141
|
+
safe_prompt: (safeMode || safePrompt) ?? undefined,
|
|
142
|
+
tool_choice: toolChoice ?? undefined,
|
|
143
|
+
response_format: responseFormat ?? undefined,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
;
|
|
147
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mistral/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copied from https://github.com/mistralai/client-js/blob/main/src/client.d.ts
|
|
3
|
+
// MistralAI Types
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.ToolChoice = exports.ResponseFormats = exports.ToolType = void 0;
|
|
6
|
+
var ToolType;
|
|
7
|
+
(function (ToolType) {
|
|
8
|
+
ToolType["function"] = "function";
|
|
9
|
+
})(ToolType || (exports.ToolType = ToolType = {}));
|
|
10
|
+
var ResponseFormats;
|
|
11
|
+
(function (ResponseFormats) {
|
|
12
|
+
ResponseFormats["text"] = "text";
|
|
13
|
+
ResponseFormats["json_object"] = "json_object";
|
|
14
|
+
})(ResponseFormats || (exports.ResponseFormats = ResponseFormats = {}));
|
|
15
|
+
var ToolChoice;
|
|
16
|
+
(function (ToolChoice) {
|
|
17
|
+
ToolChoice["auto"] = "auto";
|
|
18
|
+
ToolChoice["any"] = "any";
|
|
19
|
+
ToolChoice["none"] = "none";
|
|
20
|
+
})(ToolChoice || (exports.ToolChoice = ToolChoice = {}));
|
|
21
|
+
// class MistralClient {
|
|
22
|
+
// constructor(apiKey?: string, endpoint?: string);
|
|
23
|
+
// private _request(
|
|
24
|
+
// method: string,
|
|
25
|
+
// path: string,
|
|
26
|
+
// request: unknown
|
|
27
|
+
// ): Promise<unknown>;
|
|
28
|
+
// private _makeChatCompletionRequest(
|
|
29
|
+
// model: string,
|
|
30
|
+
// messages: Array<{ role: string; name?: string, content: string | string[], tool_calls?: ToolCalls[]; }>,
|
|
31
|
+
// tools?: Array<{ type: string; function: Function; }>,
|
|
32
|
+
// temperature?: number,
|
|
33
|
+
// maxTokens?: number,
|
|
34
|
+
// topP?: number,
|
|
35
|
+
// randomSeed?: number,
|
|
36
|
+
// stream?: boolean,
|
|
37
|
+
// /**
|
|
38
|
+
// * @deprecated use safePrompt instead
|
|
39
|
+
// */
|
|
40
|
+
// safeMode?: boolean,
|
|
41
|
+
// safePrompt?: boolean,
|
|
42
|
+
// toolChoice?: ToolChoice,
|
|
43
|
+
// responseFormat?: ResponseFormat
|
|
44
|
+
// ): object;
|
|
45
|
+
// listModels(): Promise<ListModelsResponse>;
|
|
46
|
+
// chat(options: {
|
|
47
|
+
// model: string;
|
|
48
|
+
// messages: Array<{ role: string; name?: string, content: string | string[], tool_calls?: ToolCalls[]; }>;
|
|
49
|
+
// tools?: Array<{ type: string; function: Function; }>;
|
|
50
|
+
// temperature?: number;
|
|
51
|
+
// maxTokens?: number;
|
|
52
|
+
// topP?: number;
|
|
53
|
+
// randomSeed?: number;
|
|
54
|
+
// /**
|
|
55
|
+
// * @deprecated use safePrompt instead
|
|
56
|
+
// */
|
|
57
|
+
// safeMode?: boolean;
|
|
58
|
+
// safePrompt?: boolean;
|
|
59
|
+
// toolChoice?: ToolChoice;
|
|
60
|
+
// responseFormat?: ResponseFormat;
|
|
61
|
+
// }): Promise<ChatCompletionResponse>;
|
|
62
|
+
// chatStream(options: {
|
|
63
|
+
// model: string;
|
|
64
|
+
// messages: Array<{ role: string; name?: string, content: string | string[], tool_calls?: ToolCalls[]; }>;
|
|
65
|
+
// tools?: Array<{ type: string; function: Function; }>;
|
|
66
|
+
// temperature?: number;
|
|
67
|
+
// maxTokens?: number;
|
|
68
|
+
// topP?: number;
|
|
69
|
+
// randomSeed?: number;
|
|
70
|
+
// /**
|
|
71
|
+
// * @deprecated use safePrompt instead
|
|
72
|
+
// */
|
|
73
|
+
// safeMode?: boolean;
|
|
74
|
+
// safePrompt?: boolean;
|
|
75
|
+
// toolChoice?: ToolChoice;
|
|
76
|
+
// responseFormat?: ResponseFormat;
|
|
77
|
+
// }): AsyncGenerator<ChatCompletionResponseChunk, void, unknown>;
|
|
78
|
+
// embeddings(options: {
|
|
79
|
+
// model: string;
|
|
80
|
+
// input: string | string[];
|
|
81
|
+
// }): Promise<EmbeddingResponse>;
|
|
82
|
+
// }
|
|
83
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mistral/types.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,kBAAkB;;;AAsClB,IAAY,QAEX;AAFD,WAAY,QAAQ;IAChB,iCAAqB,CAAA;AACzB,CAAC,EAFW,QAAQ,wBAAR,QAAQ,QAEnB;AAaD,IAAY,eAGX;AAHD,WAAY,eAAe;IACvB,gCAAa,CAAA;IACb,8CAA2B,CAAA;AAC/B,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAED,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,2BAAa,CAAA;AACjB,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAgFD,wBAAwB;AACxB,uDAAuD;AAEvD,wBAAwB;AACxB,0BAA0B;AAC1B,wBAAwB;AACxB,2BAA2B;AAC3B,2BAA2B;AAE3B,0CAA0C;AAC1C,yBAAyB;AACzB,mHAAmH;AACnH,gEAAgE;AAChE,gCAAgC;AAChC,8BAA8B;AAC9B,yBAAyB;AACzB,+BAA+B;AAC/B,4BAA4B;AAC5B,cAAc;AACd,gDAAgD;AAChD,cAAc;AACd,8BAA8B;AAC9B,gCAAgC;AAChC,mCAAmC;AACnC,0CAA0C;AAC1C,iBAAiB;AAEjB,iDAAiD;AAEjD,sBAAsB;AACtB,yBAAyB;AACzB,mHAAmH;AACnH,gEAAgE;AAChE,gCAAgC;AAChC,8BAA8B;AAC9B,yBAAyB;AACzB,+BAA+B;AAC/B,cAAc;AACd,gDAAgD;AAChD,cAAc;AACd,8BAA8B;AAC9B,gCAAgC;AAChC,mCAAmC;AACnC,2CAA2C;AAC3C,2CAA2C;AAE3C,4BAA4B;AAC5B,yBAAyB;AACzB,mHAAmH;AACnH,gEAAgE;AAChE,gCAAgC;AAChC,8BAA8B;AAC9B,yBAAyB;AACzB,+BAA+B;AAC/B,cAAc;AACd,gDAAgD;AAChD,cAAc;AACd,8BAA8B;AAC9B,gCAAgC;AAChC,mCAAmC;AACnC,2CAA2C;AAC3C,sEAAsE;AAEtE,4BAA4B;AAC5B,yBAAyB;AACzB,oCAAoC;AACpC,sCAAsC;AACtC,IAAI"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TogetherAIDriver = void 0;
|
|
4
4
|
const core_1 = require("@llumiverse/core");
|
|
5
|
+
const async_1 = require("@llumiverse/core/async");
|
|
5
6
|
const api_fetch_client_1 = require("api-fetch-client");
|
|
6
7
|
class TogetherAIDriver extends core_1.AbstractDriver {
|
|
7
8
|
provider;
|
|
@@ -65,20 +66,10 @@ class TogetherAIDriver extends core_1.AbstractDriver {
|
|
|
65
66
|
},
|
|
66
67
|
reader: 'sse'
|
|
67
68
|
});
|
|
68
|
-
return
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const data = JSON.parse(event.data);
|
|
73
|
-
controller.enqueue(data.choices[0]?.text ?? '');
|
|
74
|
-
}
|
|
75
|
-
catch (err) {
|
|
76
|
-
// double check for the last event whicb is not a JSON - at this time togetherai returrns the string [DONE]
|
|
77
|
-
// do nothing - happens if data is not a JSON - the last event data is the [DONE] string
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}));
|
|
69
|
+
return (0, async_1.transformSSEStream)(stream, (data) => {
|
|
70
|
+
const json = JSON.parse(data);
|
|
71
|
+
return json.choices[0]?.text ?? '';
|
|
72
|
+
});
|
|
82
73
|
}
|
|
83
74
|
async listModels() {
|
|
84
75
|
const models = await this.fetchClient.get("/models/info");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/togetherai/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuH;AACvH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/togetherai/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuH;AACvH,kDAA4D;AAC5D,uDAA+C;AAO/C,MAAa,gBAAiB,SAAQ,qBAA+C;IACjF,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,aAAa,CAAgB;IAC7B,WAAW,CAAc;IAEzB,YAAY,OAAgC;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,oBAAa,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,8BAAW,CAAC,0BAA0B,CAAC,CAAC,WAAW,CAAC;YACvE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;SACzC,CAAC,CAAC;IACP,CAAC;IAED,iBAAiB,GAAG,CAAC,OAAyB,EAAE,EAAE;QAC9C,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;YACzB;gBACI,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,OAAO,CAAC,YAAY;aAC/B,CAAC,CAAC,CAAC,SAAS,CAAC;IACtB,CAAC,CAAA;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,OAAyB;QAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACvD,OAAO,EAAE;gBACL,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,MAAM;gBACd,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAChD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;gBACtC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;gBACvC,IAAI,EAAE;oBACF,MAAM;oBACN,SAAS;iBACZ;aACJ;SACJ,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO;YACH,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE;gBACT,MAAM,EAAE,KAAK,CAAC,aAAa;gBAC3B,MAAM,EAAE,KAAK,CAAC,iBAAiB;gBAC/B,KAAK,EAAE,KAAK,CAAC,YAAY;aAC5B;SACJ,CAAA;IACL,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAc,EAAE,OAAyB;QAEnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1D,OAAO,EAAE;gBACL,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;gBACtC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;gBACvC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAChD,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE;oBACF,MAAM;oBACN,SAAS;iBACZ;aACJ;YACD,MAAM,EAAE,KAAK;SAChB,CAAC,CAAA;QAEF,OAAO,IAAA,0BAAkB,EAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,MAAM,GAAwB,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC/E,6DAA6D;QAE7D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC5B,OAAO;gBACH,EAAE,EAAE,CAAC,CAAC,IAAI;gBACV,IAAI,EAAE,CAAC,CAAC,YAAY;gBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,CAAC,oBAAa,CAAC,cAAc,CAAC;aAC1C,CAAA;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAEpB,CAAC;IAED,mBAAmB;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,YAAY;IACZ,kBAAkB,CAAC,OAAe,EAAE,KAA0B;QAC1D,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;CAEJ;AAzGD,4CAyGC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AbstractPalmModelDefinition = void 0;
|
|
4
|
+
const async_1 = require("@llumiverse/core/async");
|
|
4
5
|
const tensor_js_1 = require("../utils/tensor.js");
|
|
5
6
|
class AbstractPalmModelDefinition {
|
|
6
7
|
createPrompt(driver, segments, options) {
|
|
@@ -45,21 +46,12 @@ class AbstractPalmModelDefinition {
|
|
|
45
46
|
payload: newPrompt,
|
|
46
47
|
reader: 'sse'
|
|
47
48
|
});
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
class ChunkTransformStream extends TransformStream {
|
|
53
|
-
constructor(def) {
|
|
54
|
-
super({
|
|
55
|
-
transform(event, controller) {
|
|
56
|
-
if (event.type === 'event' && event.data) {
|
|
57
|
-
const data = JSON.parse(event.data);
|
|
58
|
-
const stringChunk = def.extractContentFromResponseChunk(data);
|
|
59
|
-
controller.enqueue(Array.isArray(stringChunk) ? stringChunk.join('') : stringChunk);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
49
|
+
return (0, async_1.transformSSEStream)(eventStrean, (data) => {
|
|
50
|
+
const json = JSON.parse(data);
|
|
51
|
+
const stringChunk = this.extractContentFromResponseChunk(json);
|
|
52
|
+
return Array.isArray(stringChunk) ? stringChunk.join('') : stringChunk;
|
|
62
53
|
});
|
|
63
54
|
}
|
|
64
55
|
}
|
|
56
|
+
exports.AbstractPalmModelDefinition = AbstractPalmModelDefinition;
|
|
65
57
|
//# sourceMappingURL=palm-model-base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palm-model-base.js","sourceRoot":"","sources":["../../../../src/vertexai/models/palm-model-base.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"palm-model-base.js","sourceRoot":"","sources":["../../../../src/vertexai/models/palm-model-base.ts"],"names":[],"mappings":";;;AACA,kDAA4D;AAI5D,kDAA6D;AAiC7D,MAAsB,2BAA2B;IAY7C,YAAY,CAAC,MAAsB,EAAE,QAAyB,EAAE,OAAsB;QAClF,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAsB,EAAE,MAA8C,EAAE,OAAyB;QACrH,MAAM,kBAAkB,GAAG,MAA6B,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,UAAU,EAAE;YAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe,EAAE,OAAO,CAAC,UAAU;SACtC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE;YACjG,OAAO,EAAE,kBAAkB;SAC9B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAgC,CAAC;QAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC;QACvE,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO;YACH,MAAM;YACN,WAAW,EAAE;gBACT,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS;aAC9E;SACU,CAAC;IAEpB,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAsB,EAAE,MAA8C,EAAE,OAAyB;QAC3H,MAAM,QAAQ,GAAG,MAA6B,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC/B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,eAAe,EAAE,OAAO,CAAC,UAAU;SACtC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,6BAA6B,IAAI,CAAC,KAAK,CAAC,EAAE,iCAAiC,CAAC;QAEzF,MAAM,SAAS,GAAG,IAAA,mCAAuB,EAAC,QAAQ,CAAC,CAAC;QAEpD,sEAAsE;QACtE,MAAM,SAAS,GAAG,MAA0B,CAAC;QAC7C,OAAQ,SAAiB,CAAC,SAAS,CAAC;QACpC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACpC,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAE5C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;YACpD,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,OAAO,IAAA,0BAAkB,EAAC,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3E,CAAC,CAAC,CAAA;IACN,CAAC;CAEJ;AAvED,kEAuEC"}
|
package/lib/esm/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from "./bedrock/index.js";
|
|
2
2
|
export * from "./huggingface_ie.js";
|
|
3
|
+
export * from "./mistral/index.js";
|
|
3
4
|
export * from "./openai.js";
|
|
4
5
|
export * from "./replicate.js";
|
|
5
|
-
export * from "./vertexai/index.js";
|
|
6
|
-
export * from "./togetherai/index.js";
|
|
7
6
|
export * from "./test/index.js";
|
|
7
|
+
export * from "./togetherai/index.js";
|
|
8
|
+
export * from "./vertexai/index.js";
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { AbstractDriver, PromptFormats } from "@llumiverse/core";
|
|
2
|
+
import { transformSSEStream } from "@llumiverse/core/async";
|
|
3
|
+
import { FetchClient } from "api-fetch-client";
|
|
4
|
+
//TODO retry on 429
|
|
5
|
+
//const RETRY_STATUS_CODES = [429, 500, 502, 503, 504];
|
|
6
|
+
const ENDPOINT = 'https://api.mistral.ai';
|
|
7
|
+
export class MistralAIDriver extends AbstractDriver {
|
|
8
|
+
provider;
|
|
9
|
+
apiKey;
|
|
10
|
+
defaultFormat;
|
|
11
|
+
//client: MistralClient;
|
|
12
|
+
client;
|
|
13
|
+
endpointUrl;
|
|
14
|
+
constructor(options) {
|
|
15
|
+
super(options);
|
|
16
|
+
this.provider = "MistralAI";
|
|
17
|
+
this.defaultFormat = PromptFormats.genericTextLLM;
|
|
18
|
+
this.apiKey = options.apiKey;
|
|
19
|
+
//this.client = new MistralClient(options.apiKey, options.endpointUrl);
|
|
20
|
+
this.client = new FetchClient(options.endpoint_url || ENDPOINT).withHeaders({
|
|
21
|
+
authorization: `Bearer ${this.apiKey}`
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
getResponseFormat = (_options) => {
|
|
25
|
+
/*const responseFormatJson: ResponseFormat = {
|
|
26
|
+
type: "json_object",
|
|
27
|
+
} as ResponseFormat
|
|
28
|
+
|
|
29
|
+
const responseFormatText: ResponseFormat = {
|
|
30
|
+
type: "text",
|
|
31
|
+
} as ResponseFormat;
|
|
32
|
+
*/
|
|
33
|
+
//return _options.resultSchema ? responseFormatJson : responseFormatText;
|
|
34
|
+
//TODO remove this when Mistral properly supports the parameters - it makes an error for now
|
|
35
|
+
return undefined;
|
|
36
|
+
};
|
|
37
|
+
createPrompt(segments, opts) {
|
|
38
|
+
// use same format as OpenAI as that's what MistralAI uses
|
|
39
|
+
const prompts = super.createPrompt(segments, { ...opts, format: PromptFormats.openai });
|
|
40
|
+
//Add JSON instruction is schema is provided
|
|
41
|
+
if (opts.resultSchema) {
|
|
42
|
+
const content = "The user is explicitely instructing that the result should be a JSON object.\nThe schema is as follows: \n" + JSON.stringify(opts.resultSchema);
|
|
43
|
+
prompts.push({
|
|
44
|
+
role: "user",
|
|
45
|
+
content: content
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return prompts;
|
|
49
|
+
}
|
|
50
|
+
async requestCompletion(messages, options) {
|
|
51
|
+
const res = await this.client.post('/v1/chat/completions', {
|
|
52
|
+
payload: _makeChatCompletionRequest({
|
|
53
|
+
model: options.model,
|
|
54
|
+
messages: messages,
|
|
55
|
+
maxTokens: options.max_tokens ?? 1024,
|
|
56
|
+
temperature: options.temperature ?? 0.7,
|
|
57
|
+
responseFormat: this.getResponseFormat(options),
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
const result = res.choices[0]?.message.content;
|
|
61
|
+
return {
|
|
62
|
+
result: result,
|
|
63
|
+
token_usage: {
|
|
64
|
+
prompt: res.usage.prompt_tokens,
|
|
65
|
+
result: res.usage.completion_tokens,
|
|
66
|
+
total: res.usage.total_tokens,
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
async requestCompletionStream(messages, options) {
|
|
71
|
+
const stream = await this.client.post('/v1/chat/completions', {
|
|
72
|
+
payload: _makeChatCompletionRequest({
|
|
73
|
+
model: options.model,
|
|
74
|
+
messages: messages,
|
|
75
|
+
maxTokens: options.max_tokens ?? 1024,
|
|
76
|
+
temperature: options.temperature ?? 0.7,
|
|
77
|
+
responseFormat: this.getResponseFormat(options),
|
|
78
|
+
stream: true
|
|
79
|
+
}),
|
|
80
|
+
reader: 'sse'
|
|
81
|
+
});
|
|
82
|
+
return transformSSEStream(stream, (data) => {
|
|
83
|
+
const json = JSON.parse(data);
|
|
84
|
+
return json.choices[0]?.delta.content ?? '';
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
async listModels() {
|
|
88
|
+
const models = await this.client.get('v1/models');
|
|
89
|
+
const aimodels = models.data.map(m => {
|
|
90
|
+
return {
|
|
91
|
+
id: m.id,
|
|
92
|
+
name: m.id,
|
|
93
|
+
description: undefined,
|
|
94
|
+
provider: m.owned_by,
|
|
95
|
+
formats: [PromptFormats.genericTextLLM],
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
return aimodels;
|
|
99
|
+
}
|
|
100
|
+
listTrainableModels() {
|
|
101
|
+
throw new Error("Method not implemented.");
|
|
102
|
+
}
|
|
103
|
+
validateConnection() {
|
|
104
|
+
throw new Error("Method not implemented.");
|
|
105
|
+
}
|
|
106
|
+
//@ts-ignore
|
|
107
|
+
generateEmbeddings(content, model) {
|
|
108
|
+
throw new Error("Method not implemented.");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Creates a chat completion request
|
|
113
|
+
* @param {*} model
|
|
114
|
+
* @param {*} messages
|
|
115
|
+
* @param {*} tools
|
|
116
|
+
* @param {*} temperature
|
|
117
|
+
* @param {*} maxTokens
|
|
118
|
+
* @param {*} topP
|
|
119
|
+
* @param {*} randomSeed
|
|
120
|
+
* @param {*} stream
|
|
121
|
+
* @param {*} safeMode deprecated use safePrompt instead
|
|
122
|
+
* @param {*} safePrompt
|
|
123
|
+
* @param {*} toolChoice
|
|
124
|
+
* @param {*} responseFormat
|
|
125
|
+
* @return {Promise<Object>}
|
|
126
|
+
*/
|
|
127
|
+
function _makeChatCompletionRequest({ model, messages, tools, temperature, maxTokens, topP, randomSeed, stream, safeMode, safePrompt, toolChoice, responseFormat, }) {
|
|
128
|
+
return {
|
|
129
|
+
model: model,
|
|
130
|
+
messages: messages,
|
|
131
|
+
tools: tools ?? undefined,
|
|
132
|
+
temperature: temperature ?? undefined,
|
|
133
|
+
max_tokens: maxTokens ?? undefined,
|
|
134
|
+
top_p: topP ?? undefined,
|
|
135
|
+
random_seed: randomSeed ?? undefined,
|
|
136
|
+
stream: stream ?? undefined,
|
|
137
|
+
safe_prompt: (safeMode || safePrompt) ?? undefined,
|
|
138
|
+
tool_choice: toolChoice ?? undefined,
|
|
139
|
+
response_format: responseFormat ?? undefined,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
;
|
|
143
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mistral/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Copied from https://github.com/mistralai/client-js/blob/main/src/client.d.ts
|
|
2
|
+
// MistralAI Types
|
|
3
|
+
export var ToolType;
|
|
4
|
+
(function (ToolType) {
|
|
5
|
+
ToolType["function"] = "function";
|
|
6
|
+
})(ToolType || (ToolType = {}));
|
|
7
|
+
export var ResponseFormats;
|
|
8
|
+
(function (ResponseFormats) {
|
|
9
|
+
ResponseFormats["text"] = "text";
|
|
10
|
+
ResponseFormats["json_object"] = "json_object";
|
|
11
|
+
})(ResponseFormats || (ResponseFormats = {}));
|
|
12
|
+
export var ToolChoice;
|
|
13
|
+
(function (ToolChoice) {
|
|
14
|
+
ToolChoice["auto"] = "auto";
|
|
15
|
+
ToolChoice["any"] = "any";
|
|
16
|
+
ToolChoice["none"] = "none";
|
|
17
|
+
})(ToolChoice || (ToolChoice = {}));
|
|
18
|
+
// class MistralClient {
|
|
19
|
+
// constructor(apiKey?: string, endpoint?: string);
|
|
20
|
+
// private _request(
|
|
21
|
+
// method: string,
|
|
22
|
+
// path: string,
|
|
23
|
+
// request: unknown
|
|
24
|
+
// ): Promise<unknown>;
|
|
25
|
+
// private _makeChatCompletionRequest(
|
|
26
|
+
// model: string,
|
|
27
|
+
// messages: Array<{ role: string; name?: string, content: string | string[], tool_calls?: ToolCalls[]; }>,
|
|
28
|
+
// tools?: Array<{ type: string; function: Function; }>,
|
|
29
|
+
// temperature?: number,
|
|
30
|
+
// maxTokens?: number,
|
|
31
|
+
// topP?: number,
|
|
32
|
+
// randomSeed?: number,
|
|
33
|
+
// stream?: boolean,
|
|
34
|
+
// /**
|
|
35
|
+
// * @deprecated use safePrompt instead
|
|
36
|
+
// */
|
|
37
|
+
// safeMode?: boolean,
|
|
38
|
+
// safePrompt?: boolean,
|
|
39
|
+
// toolChoice?: ToolChoice,
|
|
40
|
+
// responseFormat?: ResponseFormat
|
|
41
|
+
// ): object;
|
|
42
|
+
// listModels(): Promise<ListModelsResponse>;
|
|
43
|
+
// chat(options: {
|
|
44
|
+
// model: string;
|
|
45
|
+
// messages: Array<{ role: string; name?: string, content: string | string[], tool_calls?: ToolCalls[]; }>;
|
|
46
|
+
// tools?: Array<{ type: string; function: Function; }>;
|
|
47
|
+
// temperature?: number;
|
|
48
|
+
// maxTokens?: number;
|
|
49
|
+
// topP?: number;
|
|
50
|
+
// randomSeed?: number;
|
|
51
|
+
// /**
|
|
52
|
+
// * @deprecated use safePrompt instead
|
|
53
|
+
// */
|
|
54
|
+
// safeMode?: boolean;
|
|
55
|
+
// safePrompt?: boolean;
|
|
56
|
+
// toolChoice?: ToolChoice;
|
|
57
|
+
// responseFormat?: ResponseFormat;
|
|
58
|
+
// }): Promise<ChatCompletionResponse>;
|
|
59
|
+
// chatStream(options: {
|
|
60
|
+
// model: string;
|
|
61
|
+
// messages: Array<{ role: string; name?: string, content: string | string[], tool_calls?: ToolCalls[]; }>;
|
|
62
|
+
// tools?: Array<{ type: string; function: Function; }>;
|
|
63
|
+
// temperature?: number;
|
|
64
|
+
// maxTokens?: number;
|
|
65
|
+
// topP?: number;
|
|
66
|
+
// randomSeed?: number;
|
|
67
|
+
// /**
|
|
68
|
+
// * @deprecated use safePrompt instead
|
|
69
|
+
// */
|
|
70
|
+
// safeMode?: boolean;
|
|
71
|
+
// safePrompt?: boolean;
|
|
72
|
+
// toolChoice?: ToolChoice;
|
|
73
|
+
// responseFormat?: ResponseFormat;
|
|
74
|
+
// }): AsyncGenerator<ChatCompletionResponseChunk, void, unknown>;
|
|
75
|
+
// embeddings(options: {
|
|
76
|
+
// model: string;
|
|
77
|
+
// input: string | string[];
|
|
78
|
+
// }): Promise<EmbeddingResponse>;
|
|
79
|
+
// }
|
|
80
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mistral/types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kBAAkB;AAsClB,MAAM,CAAN,IAAY,QAEX;AAFD,WAAY,QAAQ;IAChB,iCAAqB,CAAA;AACzB,CAAC,EAFW,QAAQ,KAAR,QAAQ,QAEnB;AAaD,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACvB,gCAAa,CAAA;IACb,8CAA2B,CAAA;AAC/B,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,2BAAa,CAAA;AACjB,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAgFD,wBAAwB;AACxB,uDAAuD;AAEvD,wBAAwB;AACxB,0BAA0B;AAC1B,wBAAwB;AACxB,2BAA2B;AAC3B,2BAA2B;AAE3B,0CAA0C;AAC1C,yBAAyB;AACzB,mHAAmH;AACnH,gEAAgE;AAChE,gCAAgC;AAChC,8BAA8B;AAC9B,yBAAyB;AACzB,+BAA+B;AAC/B,4BAA4B;AAC5B,cAAc;AACd,gDAAgD;AAChD,cAAc;AACd,8BAA8B;AAC9B,gCAAgC;AAChC,mCAAmC;AACnC,0CAA0C;AAC1C,iBAAiB;AAEjB,iDAAiD;AAEjD,sBAAsB;AACtB,yBAAyB;AACzB,mHAAmH;AACnH,gEAAgE;AAChE,gCAAgC;AAChC,8BAA8B;AAC9B,yBAAyB;AACzB,+BAA+B;AAC/B,cAAc;AACd,gDAAgD;AAChD,cAAc;AACd,8BAA8B;AAC9B,gCAAgC;AAChC,mCAAmC;AACnC,2CAA2C;AAC3C,2CAA2C;AAE3C,4BAA4B;AAC5B,yBAAyB;AACzB,mHAAmH;AACnH,gEAAgE;AAChE,gCAAgC;AAChC,8BAA8B;AAC9B,yBAAyB;AACzB,+BAA+B;AAC/B,cAAc;AACd,gDAAgD;AAChD,cAAc;AACd,8BAA8B;AAC9B,gCAAgC;AAChC,mCAAmC;AACnC,2CAA2C;AAC3C,sEAAsE;AAEtE,4BAA4B;AAC5B,yBAAyB;AACzB,oCAAoC;AACpC,sCAAsC;AACtC,IAAI"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AbstractDriver, PromptFormats } from "@llumiverse/core";
|
|
2
|
+
import { transformSSEStream } from "@llumiverse/core/async";
|
|
2
3
|
import { FetchClient } from "api-fetch-client";
|
|
3
4
|
export class TogetherAIDriver extends AbstractDriver {
|
|
4
5
|
provider;
|
|
@@ -62,20 +63,10 @@ export class TogetherAIDriver extends AbstractDriver {
|
|
|
62
63
|
},
|
|
63
64
|
reader: 'sse'
|
|
64
65
|
});
|
|
65
|
-
return stream
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const data = JSON.parse(event.data);
|
|
70
|
-
controller.enqueue(data.choices[0]?.text ?? '');
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
// double check for the last event whicb is not a JSON - at this time togetherai returrns the string [DONE]
|
|
74
|
-
// do nothing - happens if data is not a JSON - the last event data is the [DONE] string
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}));
|
|
66
|
+
return transformSSEStream(stream, (data) => {
|
|
67
|
+
const json = JSON.parse(data);
|
|
68
|
+
return json.choices[0]?.text ?? '';
|
|
69
|
+
});
|
|
79
70
|
}
|
|
80
71
|
async listModels() {
|
|
81
72
|
const models = await this.fetchClient.get("/models/info");
|