@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.
Files changed (34) hide show
  1. package/lib/cjs/index.js +3 -2
  2. package/lib/cjs/index.js.map +1 -1
  3. package/lib/cjs/mistral/index.js +147 -0
  4. package/lib/cjs/mistral/index.js.map +1 -0
  5. package/lib/cjs/mistral/types.js +83 -0
  6. package/lib/cjs/mistral/types.js.map +1 -0
  7. package/lib/cjs/togetherai/index.js +5 -14
  8. package/lib/cjs/togetherai/index.js.map +1 -1
  9. package/lib/cjs/vertexai/models/palm-model-base.js +6 -14
  10. package/lib/cjs/vertexai/models/palm-model-base.js.map +1 -1
  11. package/lib/esm/index.js +3 -2
  12. package/lib/esm/index.js.map +1 -1
  13. package/lib/esm/mistral/index.js +143 -0
  14. package/lib/esm/mistral/index.js.map +1 -0
  15. package/lib/esm/mistral/types.js +80 -0
  16. package/lib/esm/mistral/types.js.map +1 -0
  17. package/lib/esm/togetherai/index.js +5 -14
  18. package/lib/esm/togetherai/index.js.map +1 -1
  19. package/lib/esm/vertexai/models/palm-model-base.js +5 -13
  20. package/lib/esm/vertexai/models/palm-model-base.js.map +1 -1
  21. package/lib/types/index.d.ts +3 -2
  22. package/lib/types/index.d.ts.map +1 -1
  23. package/lib/types/mistral/index.d.ts +32 -0
  24. package/lib/types/mistral/index.d.ts.map +1 -0
  25. package/lib/types/mistral/types.d.ts +131 -0
  26. package/lib/types/mistral/types.d.ts.map +1 -0
  27. package/lib/types/togetherai/index.d.ts.map +1 -1
  28. package/lib/types/vertexai/models/palm-model-base.d.ts.map +1 -1
  29. package/package.json +3 -3
  30. package/src/index.ts +4 -2
  31. package/src/mistral/index.ts +193 -0
  32. package/src/mistral/types.ts +211 -0
  33. package/src/togetherai/index.ts +6 -14
  34. 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
@@ -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,sDAAoC;AACpC,wDAAsC;AACtC,kDAAgC"}
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 stream.pipeThrough(new TransformStream({
69
- transform(event, controller) {
70
- if (event.type === 'event' && event.data && event.data !== '[DONE]') {
71
- try {
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":"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"}
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 eventStrean.pipeThrough(new ChunkTransformStream(this));
49
- }
50
- }
51
- exports.AbstractPalmModelDefinition = AbstractPalmModelDefinition;
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":"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"}
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
@@ -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,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,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":"AAAA,OAAO,EAAW,cAAc,EAA+C,aAAa,EAAiB,MAAM,kBAAkB,CAAC;AACtI,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,mBAAmB;AACnB,uDAAuD;AAEvD,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAO1C,MAAM,OAAO,eAAgB,SAAQ,cAAoD;IACrF,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,aAAa,CAAgB;IAC7B,wBAAwB;IACxB,MAAM,CAAc;IACpB,WAAW,CAAU;IAErB,YAAY,OAA+B;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,uEAAuE;QACvE,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,IAAI,QAAQ,CAAC,CAAC,WAAW,CAAC;YACxE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;SACzC,CAAC,CAAC;IACP,CAAC;IAED,iBAAiB,GAAG,CAAC,QAA0B,EAA8B,EAAE;QAG3E;;;;;;;UAOE;QAEF,yEAAyE;QAEzE,4FAA4F;QAC5F,OAAO,SAAS,CAAA;IACpB,CAAC,CAAA;IAED,YAAY,CAAC,QAAyB,EAAE,IAAsB;QAC1D,0DAA0D;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;QAEvF,4CAA4C;QAC5C,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,4GAA4G,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjK,OAAO,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,OAAO;aACnB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,OAAO,CAAC;IAEnB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,QAAsB,EAAE,OAAyB;QAErE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACvD,OAAO,EAAE,0BAA0B,CAAC;gBAChC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;gBACrC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;gBACvC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;aAClD,CAAC;SACL,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;QAE/C,OAAO;YACH,MAAM,EAAE,MAAM;YACd,WAAW,EAAE;gBACT,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa;gBAC/B,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,iBAAiB;gBACnC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY;aAChC;SACJ,CAAC;IACN,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,QAAsB,EAAE,OAAyB;QAE3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC1D,OAAO,EAAE,0BAA0B,CAAC;gBAChC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;gBACrC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;gBACvC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC/C,MAAM,EAAE,IAAI;aACf,CAAC;YACF,MAAM,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC,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,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,MAAM,MAAM,GAAuB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACjC,OAAO;gBACH,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,EAAE;gBACV,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC;aAC1C,CAAA;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IACpB,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;AAQD;;;;;;;;;;;;;;;GAeG;AACH,SAAS,0BAA0B,CAAC,EAChC,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EACX,SAAS,EACT,IAAI,EACJ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,GACQ;IACtB,OAAO;QACH,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,KAAK,IAAI,SAAS;QACzB,WAAW,EAAE,WAAW,IAAI,SAAS;QACrC,UAAU,EAAE,SAAS,IAAI,SAAS;QAClC,KAAK,EAAE,IAAI,IAAI,SAAS;QACxB,WAAW,EAAE,UAAU,IAAI,SAAS;QACpC,MAAM,EAAE,MAAM,IAAI,SAAS;QAC3B,WAAW,EAAE,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,SAAS;QAClD,WAAW,EAAE,UAAU,IAAI,SAAS;QACpC,eAAe,EAAE,cAAc,IAAI,SAAS;KAC/C,CAAC;AACN,CAAC;AAAA,CAAC"}
@@ -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.pipeThrough(new TransformStream({
66
- transform(event, controller) {
67
- if (event.type === 'event' && event.data && event.data !== '[DONE]') {
68
- try {
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");