@llumiverse/drivers 0.12.2 → 0.13.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/README.md +1 -1
- package/lib/cjs/bedrock/index.js +22 -9
- package/lib/cjs/bedrock/index.js.map +1 -1
- package/lib/cjs/huggingface_ie.js.map +1 -1
- package/lib/cjs/index.js +2 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/vertexai/models/gemini.js +7 -7
- package/lib/cjs/vertexai/models/gemini.js.map +1 -1
- package/lib/cjs/watsonx/index.js +124 -0
- package/lib/cjs/watsonx/index.js.map +1 -0
- package/lib/cjs/watsonx/interfaces.js +3 -0
- package/lib/cjs/watsonx/interfaces.js.map +1 -0
- package/lib/esm/bedrock/index.js +22 -9
- package/lib/esm/bedrock/index.js.map +1 -1
- package/lib/esm/huggingface_ie.js.map +1 -1
- package/lib/esm/index.js +2 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/vertexai/models/gemini.js +7 -7
- package/lib/esm/vertexai/models/gemini.js.map +1 -1
- package/lib/esm/watsonx/index.js +120 -0
- package/lib/esm/watsonx/index.js.map +1 -0
- package/lib/esm/watsonx/interfaces.js +2 -0
- package/lib/esm/watsonx/interfaces.js.map +1 -0
- package/lib/types/bedrock/index.d.ts.map +1 -1
- package/lib/types/huggingface_ie.d.ts +5 -5
- package/lib/types/index.d.ts +2 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/watsonx/index.d.ts +27 -0
- package/lib/types/watsonx/index.d.ts.map +1 -0
- package/lib/types/watsonx/interfaces.d.ts +61 -0
- package/lib/types/watsonx/interfaces.d.ts.map +1 -0
- package/package.json +5 -6
- package/src/bedrock/index.ts +24 -9
- package/src/huggingface_ie.ts +1 -1
- package/src/index.ts +2 -1
- package/src/vertexai/models/gemini.ts +7 -7
- package/src/watsonx/index.ts +163 -0
- package/src/watsonx/interfaces.ts +71 -0
|
@@ -4,15 +4,15 @@ import { asyncMap } from "@llumiverse/core/async";
|
|
|
4
4
|
function getGenerativeModel(driver, options) {
|
|
5
5
|
return driver.vertexai.preview.getGenerativeModel({
|
|
6
6
|
model: options.model,
|
|
7
|
-
//TODO pass in the options
|
|
8
|
-
|
|
7
|
+
//TODO pass in the options
|
|
8
|
+
safetySettings: [{
|
|
9
9
|
category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
|
|
10
10
|
threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE
|
|
11
11
|
}],
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
generationConfig: {
|
|
13
|
+
candidateCount: 1,
|
|
14
14
|
temperature: options.temperature,
|
|
15
|
-
|
|
15
|
+
maxOutputTokens: options.max_tokens
|
|
16
16
|
},
|
|
17
17
|
});
|
|
18
18
|
}
|
|
@@ -100,7 +100,7 @@ export class GeminiModelDefinition {
|
|
|
100
100
|
total: usage?.totalTokenCount,
|
|
101
101
|
};
|
|
102
102
|
let finish_reason, result;
|
|
103
|
-
const candidate = response.candidates[0];
|
|
103
|
+
const candidate = response.candidates && response.candidates[0];
|
|
104
104
|
if (candidate) {
|
|
105
105
|
switch (candidate.finishReason) {
|
|
106
106
|
case FinishReason.MAX_TOKENS:
|
|
@@ -131,7 +131,7 @@ export class GeminiModelDefinition {
|
|
|
131
131
|
const model = getGenerativeModel(driver, options);
|
|
132
132
|
const streamingResp = await model.generateContentStream(prompt);
|
|
133
133
|
const stream = asyncMap(streamingResp.stream, async (item) => {
|
|
134
|
-
if (item.candidates.length > 0) {
|
|
134
|
+
if (item.candidates && item.candidates.length > 0) {
|
|
135
135
|
for (const candidate of item.candidates) {
|
|
136
136
|
if (candidate.content?.role === 'model') {
|
|
137
137
|
const text = collectTextParts(candidate.content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/vertexai/models/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,YAAY,EAA0B,kBAAkB,EAAE,YAAY,EAAY,MAAM,wBAAwB,CAAC;AACnI,OAAO,EAA8D,SAAS,EAAiB,UAAU,EAAiB,MAAM,kBAAkB,CAAC;AACnJ,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIlD,SAAS,kBAAkB,CAAC,MAAsB,EAAE,OAAyB;IACzE,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../src/vertexai/models/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { AbstractDriver } from "@llumiverse/core";
|
|
2
|
+
import { transformSSEStream } from "@llumiverse/core/async";
|
|
3
|
+
import { FetchClient } from "api-fetch-client";
|
|
4
|
+
const API_VERSION = "2024-03-14";
|
|
5
|
+
export class WatsonxDriver extends AbstractDriver {
|
|
6
|
+
static PROVIDER = "watsonx";
|
|
7
|
+
provider = WatsonxDriver.PROVIDER;
|
|
8
|
+
apiKey;
|
|
9
|
+
endpoint_url;
|
|
10
|
+
projectId;
|
|
11
|
+
authToken;
|
|
12
|
+
fetcher;
|
|
13
|
+
fetchClient;
|
|
14
|
+
constructor(options) {
|
|
15
|
+
super(options);
|
|
16
|
+
this.apiKey = options.apiKey;
|
|
17
|
+
this.projectId = options.projectId;
|
|
18
|
+
this.endpoint_url = options.endpointUrl;
|
|
19
|
+
this.fetchClient = new FetchClient(this.endpoint_url).withAuthCallback(async () => this.getAuthToken());
|
|
20
|
+
}
|
|
21
|
+
async requestCompletion(prompt, options) {
|
|
22
|
+
const payload = {
|
|
23
|
+
model_id: options.model,
|
|
24
|
+
input: prompt,
|
|
25
|
+
parameters: {
|
|
26
|
+
max_new_tokens: options.max_tokens,
|
|
27
|
+
//time_limit: options.time_limit,
|
|
28
|
+
},
|
|
29
|
+
project_id: this.projectId,
|
|
30
|
+
};
|
|
31
|
+
const res = await this.fetchClient.post(`/ml/v1/text/generation?version=${API_VERSION}`, { payload });
|
|
32
|
+
const result = res.results[0];
|
|
33
|
+
return {
|
|
34
|
+
result: result.generated_text,
|
|
35
|
+
token_usage: {
|
|
36
|
+
prompt: result.input_token_count,
|
|
37
|
+
result: result.generated_token_count,
|
|
38
|
+
total: result.input_token_count + result.generated_token_count,
|
|
39
|
+
},
|
|
40
|
+
finish_reason: result.stop_reason,
|
|
41
|
+
original_response: options.include_original_response ? res : undefined,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async requestCompletionStream(prompt, options) {
|
|
45
|
+
const payload = {
|
|
46
|
+
model_id: options.model,
|
|
47
|
+
input: prompt,
|
|
48
|
+
parameters: {
|
|
49
|
+
max_new_tokens: options.max_tokens,
|
|
50
|
+
//time_limit: options.time_limit,
|
|
51
|
+
},
|
|
52
|
+
project_id: this.projectId,
|
|
53
|
+
};
|
|
54
|
+
const stream = await this.fetchClient.post(`/ml/v1/text/generation_stream?version=${API_VERSION}`, {
|
|
55
|
+
payload: payload,
|
|
56
|
+
reader: 'sse'
|
|
57
|
+
});
|
|
58
|
+
return transformSSEStream(stream, (data) => {
|
|
59
|
+
const json = JSON.parse(data);
|
|
60
|
+
return json.results[0]?.generated_text ?? '';
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async listModels() {
|
|
64
|
+
const res = await this.fetchClient.get(`/ml/v1/foundation_model_specs?version=${API_VERSION}`)
|
|
65
|
+
.catch(err => this.logger.warn("Can't list models on Watsonx: " + err));
|
|
66
|
+
const aimodels = res.resources.map((m) => {
|
|
67
|
+
return {
|
|
68
|
+
id: m.model_id,
|
|
69
|
+
name: m.label,
|
|
70
|
+
description: m.short_description,
|
|
71
|
+
provider: this.provider,
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
return aimodels;
|
|
75
|
+
}
|
|
76
|
+
async getAuthToken() {
|
|
77
|
+
if (this.authToken) {
|
|
78
|
+
const now = Date.now() / 1000;
|
|
79
|
+
if (now < this.authToken.expiration) {
|
|
80
|
+
return this.authToken.access_token;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
this.logger.debug("Token expired, refetching", this.authToken, now);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const authToken = await fetch('https://iam.cloud.ibm.com/identity/token', {
|
|
87
|
+
method: 'POST',
|
|
88
|
+
headers: {
|
|
89
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
90
|
+
},
|
|
91
|
+
body: `grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=${this.apiKey}`,
|
|
92
|
+
}).then(response => response.json());
|
|
93
|
+
this.authToken = authToken;
|
|
94
|
+
return 'Bearer ' + this.authToken.access_token;
|
|
95
|
+
}
|
|
96
|
+
async validateConnection() {
|
|
97
|
+
return this.listModels()
|
|
98
|
+
.then(() => true)
|
|
99
|
+
.catch((err) => {
|
|
100
|
+
this.logger.warn("Failed to connect to WatsonX", err);
|
|
101
|
+
return false;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async generateEmbeddings(options) {
|
|
105
|
+
const payload = {
|
|
106
|
+
inputs: [options.content],
|
|
107
|
+
model_id: options.model ?? 'ibm/slate-125m-english-rtrvr',
|
|
108
|
+
project_id: this.projectId
|
|
109
|
+
};
|
|
110
|
+
const res = await this.fetchClient.post(`/ml/v1/text/embeddings?version=${API_VERSION}`, { payload });
|
|
111
|
+
return {
|
|
112
|
+
values: res.results[0].embedding,
|
|
113
|
+
model: res.model_id
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/*interface ListModelsParams extends ModelSearchPayload {
|
|
118
|
+
limit?: number;
|
|
119
|
+
}*/
|
|
120
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/watsonx/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/watsonx/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bedrock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsC,sBAAsB,EAAyI,MAAM,yBAAyB,CAAC;AACrP,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAkB,MAAM,iCAAiC,CAAC;AAE3G,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAqB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExO,OAAO,EAAE,oBAAoB,EAAsB,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQhE,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACvD;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,WAAW,CAAC,EAAE,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,oBAAoB,CAAC;AAE1D,qBAAa,aAAc,SAAQ,cAAc,CAAC,oBAAoB,EAAE,aAAa,CAAC;IAElF,MAAM,CAAC,QAAQ,SAAa;IAE5B,QAAQ,SAA0B;IAElC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAU;gBAEf,OAAO,EAAE,oBAAoB;IAOzC,WAAW;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bedrock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsC,sBAAsB,EAAyI,MAAM,yBAAyB,CAAC;AACrP,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAkB,MAAM,iCAAiC,CAAC;AAE3G,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAqB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExO,OAAO,EAAE,oBAAoB,EAAsB,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQhE,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACvD;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,WAAW,CAAC,EAAE,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CACzE;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,oBAAoB,CAAC;AAE1D,qBAAa,aAAc,SAAQ,cAAc,CAAC,oBAAoB,EAAE,aAAa,CAAC;IAElF,MAAM,CAAC,QAAQ,SAAa;IAE5B,QAAQ,SAA0B;IAElC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAU;gBAEf,OAAO,EAAE,oBAAoB;IAOzC,WAAW;IAWX,UAAU;IAUV,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,aAAa;IAWrF,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,wBAAwB,GAAG,UAAU;IAqDxF,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;cAiB9E,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAkDxG,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB;IAuDzD,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAsClF,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAYnD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWnD,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAQtC,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IAKjD,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOhC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,sBAAsB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgE1F,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAoC,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAkC5H;AAID,UAAU,oBAAoB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,oBAAqB,SAAQ,oBAAoB;IACvD,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,UAAU,kBAAkB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,oBAAoB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,oBAAoB;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;KAC3B,CAAC;CACL;AAED,UAAU,cAAc;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -18,14 +18,14 @@ export declare class HuggingFaceIEDriver extends AbstractDriver<HuggingFaceIEDri
|
|
|
18
18
|
getExecutor(model: string): Promise<HfInferenceEndpoint>;
|
|
19
19
|
requestCompletionStream(prompt: string, options: ExecutionOptions): Promise<AsyncIterable<string>>;
|
|
20
20
|
requestCompletion(prompt: string, options: ExecutionOptions): Promise<{
|
|
21
|
-
result:
|
|
21
|
+
result: string;
|
|
22
22
|
token_usage: {
|
|
23
|
-
result:
|
|
23
|
+
result: number;
|
|
24
24
|
prompt: number;
|
|
25
|
-
total:
|
|
25
|
+
total: number;
|
|
26
26
|
};
|
|
27
|
-
finish_reason:
|
|
28
|
-
original_response:
|
|
27
|
+
finish_reason: string;
|
|
28
|
+
original_response: import("@huggingface/inference").TextGenerationOutput | undefined;
|
|
29
29
|
}>;
|
|
30
30
|
listModels(): Promise<AIModel[]>;
|
|
31
31
|
validateConnection(): Promise<boolean>;
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from "./bedrock/index.js";
|
|
2
|
+
export * from "./groq/index.js";
|
|
2
3
|
export * from "./huggingface_ie.js";
|
|
3
4
|
export * from "./mistral/index.js";
|
|
4
5
|
export * from "./openai.js";
|
|
@@ -6,5 +7,5 @@ export * from "./replicate.js";
|
|
|
6
7
|
export * from "./test/index.js";
|
|
7
8
|
export * from "./togetherai/index.js";
|
|
8
9
|
export * from "./vertexai/index.js";
|
|
9
|
-
export * from "./
|
|
10
|
+
export * from "./watsonx/index.js";
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","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;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,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;AACpC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AIModel, AbstractDriver, Completion, DriverOptions, EmbeddingsOptions, EmbeddingsResult, ExecutionOptions } from "@llumiverse/core";
|
|
2
|
+
import { FetchClient } from "api-fetch-client";
|
|
3
|
+
import { WatsonAuthToken } from "./interfaces.js";
|
|
4
|
+
interface WatsonxDriverOptions extends DriverOptions {
|
|
5
|
+
apiKey: string;
|
|
6
|
+
projectId: string;
|
|
7
|
+
endpointUrl: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class WatsonxDriver extends AbstractDriver<WatsonxDriverOptions, string> {
|
|
10
|
+
static PROVIDER: string;
|
|
11
|
+
provider: string;
|
|
12
|
+
apiKey: string;
|
|
13
|
+
endpoint_url: string;
|
|
14
|
+
projectId: string;
|
|
15
|
+
authToken?: WatsonAuthToken;
|
|
16
|
+
fetcher?: FetchClient;
|
|
17
|
+
fetchClient: FetchClient;
|
|
18
|
+
constructor(options: WatsonxDriverOptions);
|
|
19
|
+
requestCompletion(prompt: string, options: ExecutionOptions): Promise<Completion<any>>;
|
|
20
|
+
requestCompletionStream(prompt: string, options: ExecutionOptions): Promise<AsyncIterable<string>>;
|
|
21
|
+
listModels(): Promise<AIModel<string>[]>;
|
|
22
|
+
getAuthToken(): Promise<string>;
|
|
23
|
+
validateConnection(): Promise<boolean>;
|
|
24
|
+
generateEmbeddings(options: EmbeddingsOptions): Promise<EmbeddingsResult>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/watsonx/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE7I,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAuD,eAAe,EAA2G,MAAM,iBAAiB,CAAC;AAEhN,UAAU,oBAAqB,SAAQ,aAAa;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACvB;AAID,qBAAa,aAAc,SAAQ,cAAc,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAC3E,MAAM,CAAC,QAAQ,SAAa;IAC5B,QAAQ,SAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,WAAW,CAAA;gBAEZ,OAAO,EAAE,oBAAoB;IAQnC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IA2BtF,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IA0BlG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IAoBxC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IA0B/B,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAStC,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAiBlF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export interface WatsonxTextGenerationPayload {
|
|
2
|
+
model_id: string;
|
|
3
|
+
input: string;
|
|
4
|
+
parameters: {
|
|
5
|
+
max_new_tokens?: number;
|
|
6
|
+
time_limit?: number;
|
|
7
|
+
};
|
|
8
|
+
project_id: string;
|
|
9
|
+
}
|
|
10
|
+
export interface WatsonxTextGenerationResponse {
|
|
11
|
+
model_id: string;
|
|
12
|
+
created_at: string;
|
|
13
|
+
results: {
|
|
14
|
+
generated_text: string;
|
|
15
|
+
generated_token_count: number;
|
|
16
|
+
input_token_count: number;
|
|
17
|
+
stop_reason: string;
|
|
18
|
+
}[];
|
|
19
|
+
}
|
|
20
|
+
export interface GenerateEmbeddingPayload {
|
|
21
|
+
model_id: string;
|
|
22
|
+
inputs: string[];
|
|
23
|
+
project_id: string;
|
|
24
|
+
}
|
|
25
|
+
export interface GenerateEmbeddingResponse {
|
|
26
|
+
model_id: string;
|
|
27
|
+
created_at: string;
|
|
28
|
+
results: {
|
|
29
|
+
embedding: number[];
|
|
30
|
+
}[];
|
|
31
|
+
input_token_count: number;
|
|
32
|
+
}
|
|
33
|
+
export interface WatsonxModelSpec {
|
|
34
|
+
model_id: string;
|
|
35
|
+
label: string;
|
|
36
|
+
provider: string;
|
|
37
|
+
source: string;
|
|
38
|
+
short_description: string;
|
|
39
|
+
tasks: {
|
|
40
|
+
id: string;
|
|
41
|
+
ratings: {
|
|
42
|
+
quality: number;
|
|
43
|
+
};
|
|
44
|
+
}[];
|
|
45
|
+
min_shot_size: number;
|
|
46
|
+
tier: string;
|
|
47
|
+
number_params: string;
|
|
48
|
+
}
|
|
49
|
+
export interface WatsonxListModelResponse {
|
|
50
|
+
total_count: number;
|
|
51
|
+
limit: number;
|
|
52
|
+
resources: WatsonxModelSpec[];
|
|
53
|
+
}
|
|
54
|
+
export interface WatsonAuthToken {
|
|
55
|
+
access_token: string;
|
|
56
|
+
refresh_token: string;
|
|
57
|
+
token_type: string;
|
|
58
|
+
expire_in: number;
|
|
59
|
+
expiration: number;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/watsonx/interfaces.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,4BAA4B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACR,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC;KACvB,EAAE,CAAA;CACN;AAED,MAAM,WAAW,wBAAwB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,yBAAyB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACL,SAAS,EAAE,MAAM,EAAE,CAAC;KACvB,EAAE,CAAA;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE;YACL,OAAO,EAAE,MAAM,CAAC;SACnB,CAAA;KACJ,EAAE,CAAC;IACJ,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,wBAAwB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAGD,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACrB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@llumiverse/drivers",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "LLM driver implementations. Currently supported are: openai, huggingface, bedrock, replicate.",
|
|
6
6
|
"files": [
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
"types": "./lib/types/index.d.ts",
|
|
11
11
|
"exports": {
|
|
12
12
|
"types": "./lib/types/index.d.ts",
|
|
13
|
-
"default": "./lib/esm/index.js",
|
|
14
13
|
"import": "./lib/esm/index.js",
|
|
15
14
|
"require": "./lib/cjs/index.js"
|
|
16
15
|
},
|
|
@@ -51,7 +50,7 @@
|
|
|
51
50
|
"@types/json-schema": "^7.0.15",
|
|
52
51
|
"dotenv": "^16.4.5",
|
|
53
52
|
"rimraf": "^5.0.5",
|
|
54
|
-
"ts-dual-module": "^0.6.
|
|
53
|
+
"ts-dual-module": "^0.6.3",
|
|
55
54
|
"typescript": "^5.4.2",
|
|
56
55
|
"vitest": "^1.4.0"
|
|
57
56
|
},
|
|
@@ -61,9 +60,9 @@
|
|
|
61
60
|
"@aws-sdk/client-s3": "^3.535.0",
|
|
62
61
|
"@aws-sdk/credential-providers": "^3.535.0",
|
|
63
62
|
"@aws-sdk/lib-storage": "^3.535.0",
|
|
64
|
-
"@google-cloud/vertexai": "^
|
|
63
|
+
"@google-cloud/vertexai": "^1.1.0",
|
|
65
64
|
"@huggingface/inference": "^2.6.6",
|
|
66
|
-
"@llumiverse/core": "^0.
|
|
65
|
+
"@llumiverse/core": "^0.13.0",
|
|
67
66
|
"api-fetch-client": "^0.8.6",
|
|
68
67
|
"eventsource": "^2.0.2",
|
|
69
68
|
"google-auth-library": "^9.7.0",
|
|
@@ -71,7 +70,7 @@
|
|
|
71
70
|
"json-schema": "^0.4.0",
|
|
72
71
|
"mnemonist": "^0.39.7",
|
|
73
72
|
"openai": "^4.29.1",
|
|
74
|
-
"replicate": "^0.
|
|
73
|
+
"replicate": "^0.29.0"
|
|
75
74
|
},
|
|
76
75
|
"ts_dual_module": {
|
|
77
76
|
"outDir": "lib"
|
package/src/bedrock/index.ts
CHANGED
|
@@ -62,6 +62,7 @@ export class BedrockDriver extends AbstractDriver<BedrockDriverOptions, BedrockP
|
|
|
62
62
|
this._executor = new BedrockRuntime({
|
|
63
63
|
region: this.options.region,
|
|
64
64
|
credentials: this.options.credentials,
|
|
65
|
+
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
return this._executor;
|
|
@@ -81,7 +82,8 @@ export class BedrockDriver extends AbstractDriver<BedrockDriverOptions, BedrockP
|
|
|
81
82
|
//TODO move the anthropic test in abstract driver?
|
|
82
83
|
if (opts.model.includes('anthropic')) {
|
|
83
84
|
//TODO: need to type better the types aren't checked properly by TS
|
|
84
|
-
|
|
85
|
+
const prompt = formatClaudePrompt(segments, opts.resultSchema);
|
|
86
|
+
return prompt;
|
|
85
87
|
} else {
|
|
86
88
|
return super.formatPrompt(segments, opts) as string;
|
|
87
89
|
}
|
|
@@ -104,8 +106,14 @@ export class BedrockDriver extends AbstractDriver<BedrockDriverOptions, BedrockP
|
|
|
104
106
|
//A21
|
|
105
107
|
return [result.completions[0].data?.text, a21FinishReason(result.completions[0].finishReason?.reason)];
|
|
106
108
|
} else if (result.content) {
|
|
107
|
-
// anthropic claude
|
|
108
|
-
|
|
109
|
+
// anthropic claude
|
|
110
|
+
//if last prompt.messages is {, add { to the response
|
|
111
|
+
const p = prompt as ClaudeMessagesPrompt;
|
|
112
|
+
const lastMessage = (p as ClaudeMessagesPrompt).messages[p.messages.length - 1];
|
|
113
|
+
const res = lastMessage.content[0].text === '{' ? '{' + result.content[0]?.text : result.content[0]?.text;
|
|
114
|
+
|
|
115
|
+
return [ res, claudeFinishReason(result.stop_reason)];
|
|
116
|
+
|
|
109
117
|
} else if (result.outputs) {
|
|
110
118
|
// mistral
|
|
111
119
|
return [result.outputs[0]?.text, result.outputs[0]?.stop_reason]; // the stop reason is in the expected format ("stop" and "length")
|
|
@@ -138,6 +146,7 @@ export class BedrockDriver extends AbstractDriver<BedrockDriverOptions, BedrockP
|
|
|
138
146
|
|
|
139
147
|
const payload = this.preparePayload(prompt, options);
|
|
140
148
|
const executor = this.getExecutor();
|
|
149
|
+
console.log("Requesting completion", JSON.stringify(payload));
|
|
141
150
|
const res = await executor.invokeModel({
|
|
142
151
|
modelId: options.model,
|
|
143
152
|
contentType: "application/json",
|
|
@@ -165,6 +174,7 @@ export class BedrockDriver extends AbstractDriver<BedrockDriverOptions, BedrockP
|
|
|
165
174
|
async requestCompletionStream(prompt: string, options: ExecutionOptions): Promise<AsyncIterable<string>> {
|
|
166
175
|
const payload = this.preparePayload(prompt, options);
|
|
167
176
|
const executor = this.getExecutor();
|
|
177
|
+
console.log("Requesting completion stream", JSON.stringify(payload));
|
|
168
178
|
return executor.invokeModelWithResponseStream({
|
|
169
179
|
modelId: options.model,
|
|
170
180
|
contentType: "application/json",
|
|
@@ -224,7 +234,7 @@ export class BedrockDriver extends AbstractDriver<BedrockDriverOptions, BedrockP
|
|
|
224
234
|
temperature: options.temperature,
|
|
225
235
|
max_gen_len: options.max_tokens,
|
|
226
236
|
} as LLama2RequestPayload
|
|
227
|
-
} else if (contains(options.model, "
|
|
237
|
+
} else if (contains(options.model, "claude")) {
|
|
228
238
|
return {
|
|
229
239
|
anthropic_version: "bedrock-2023-05-31",
|
|
230
240
|
...(prompt as ClaudeMessagesPrompt),
|
|
@@ -350,11 +360,16 @@ export class BedrockDriver extends AbstractDriver<BedrockDriverOptions, BedrockP
|
|
|
350
360
|
async _listModels(foundationFilter?: (m: FoundationModelSummary) => boolean): Promise<AIModel[]> {
|
|
351
361
|
const service = this.getService();
|
|
352
362
|
const [foundationals, customs] = await Promise.all([
|
|
353
|
-
service.listFoundationModels({})
|
|
354
|
-
|
|
363
|
+
service.listFoundationModels({}).catch(() => {
|
|
364
|
+
this.logger.warn("[Bedrock] Can't list foundation models. Check if the user has the right permissions.");
|
|
365
|
+
return undefined
|
|
366
|
+
}),
|
|
367
|
+
service.listCustomModels({}).catch(() => {
|
|
368
|
+
this.logger.warn("[Bedrock] Can't list custom models. Check if the user has the right permissions.");
|
|
369
|
+
return undefined}),
|
|
355
370
|
]);
|
|
356
371
|
|
|
357
|
-
if (!foundationals
|
|
372
|
+
if (!foundationals?.modelSummaries) {
|
|
358
373
|
throw new Error("Foundation models not found");
|
|
359
374
|
}
|
|
360
375
|
|
|
@@ -373,7 +388,7 @@ export class BedrockDriver extends AbstractDriver<BedrockDriverOptions, BedrockP
|
|
|
373
388
|
id: m.modelArn ?? m.modelId,
|
|
374
389
|
name: `${m.providerName} ${m.modelName}`,
|
|
375
390
|
provider: this.provider,
|
|
376
|
-
description:
|
|
391
|
+
//description: ``,
|
|
377
392
|
owner: m.providerName,
|
|
378
393
|
canStream: m.responseStreamingSupported ?? false,
|
|
379
394
|
tags: m.outputModalities ?? [],
|
|
@@ -383,7 +398,7 @@ export class BedrockDriver extends AbstractDriver<BedrockDriverOptions, BedrockP
|
|
|
383
398
|
});
|
|
384
399
|
|
|
385
400
|
//add custom models
|
|
386
|
-
if (customs
|
|
401
|
+
if (customs?.modelSummaries) {
|
|
387
402
|
customs.modelSummaries.forEach((m) => {
|
|
388
403
|
|
|
389
404
|
if (!m.modelArn) {
|
package/src/huggingface_ie.ts
CHANGED
|
@@ -92,7 +92,7 @@ export class HuggingFaceIEDriver extends AbstractDriver<HuggingFaceIEDriverOptio
|
|
|
92
92
|
},
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
-
let finish_reason = res.details?.finish_reason;
|
|
95
|
+
let finish_reason = res.details?.finish_reason as string;
|
|
96
96
|
if (finish_reason === "eos_token") {
|
|
97
97
|
finish_reason = "stop";
|
|
98
98
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from "./bedrock/index.js";
|
|
2
|
+
export * from "./groq/index.js";
|
|
2
3
|
export * from "./huggingface_ie.js";
|
|
3
4
|
export * from "./mistral/index.js";
|
|
4
5
|
export * from "./openai.js";
|
|
@@ -6,4 +7,4 @@ export * from "./replicate.js";
|
|
|
6
7
|
export * from "./test/index.js";
|
|
7
8
|
export * from "./togetherai/index.js";
|
|
8
9
|
export * from "./vertexai/index.js";
|
|
9
|
-
export * from "./
|
|
10
|
+
export * from "./watsonx/index.js";
|
|
@@ -7,15 +7,15 @@ import { ModelDefinition } from "../models.js";
|
|
|
7
7
|
function getGenerativeModel(driver: VertexAIDriver, options: ExecutionOptions) {
|
|
8
8
|
return driver.vertexai.preview.getGenerativeModel({
|
|
9
9
|
model: options.model,
|
|
10
|
-
//TODO pass in the options
|
|
11
|
-
|
|
10
|
+
//TODO pass in the options
|
|
11
|
+
safetySettings: [{
|
|
12
12
|
category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
|
|
13
13
|
threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE
|
|
14
14
|
}],
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
generationConfig: {
|
|
16
|
+
candidateCount: 1,
|
|
17
17
|
temperature: options.temperature,
|
|
18
|
-
|
|
18
|
+
maxOutputTokens: options.max_tokens
|
|
19
19
|
},
|
|
20
20
|
});
|
|
21
21
|
}
|
|
@@ -113,7 +113,7 @@ export class GeminiModelDefinition implements ModelDefinition<GenerateContentReq
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
let finish_reason: string | undefined, result: any;
|
|
116
|
-
const candidate = response.candidates[0];
|
|
116
|
+
const candidate = response.candidates && response.candidates[0];
|
|
117
117
|
if (candidate) {
|
|
118
118
|
switch (candidate.finishReason) {
|
|
119
119
|
case FinishReason.MAX_TOKENS: finish_reason = "length"; break;
|
|
@@ -143,7 +143,7 @@ export class GeminiModelDefinition implements ModelDefinition<GenerateContentReq
|
|
|
143
143
|
const streamingResp = await model.generateContentStream(prompt);
|
|
144
144
|
|
|
145
145
|
const stream = asyncMap(streamingResp.stream, async (item) => {
|
|
146
|
-
if (item.candidates.length > 0) {
|
|
146
|
+
if (item.candidates && item.candidates.length > 0) {
|
|
147
147
|
for (const candidate of item.candidates) {
|
|
148
148
|
if (candidate.content?.role === 'model') {
|
|
149
149
|
const text = collectTextParts(candidate.content);
|