@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.
Files changed (38) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/bedrock/index.js +22 -9
  3. package/lib/cjs/bedrock/index.js.map +1 -1
  4. package/lib/cjs/huggingface_ie.js.map +1 -1
  5. package/lib/cjs/index.js +2 -1
  6. package/lib/cjs/index.js.map +1 -1
  7. package/lib/cjs/vertexai/models/gemini.js +7 -7
  8. package/lib/cjs/vertexai/models/gemini.js.map +1 -1
  9. package/lib/cjs/watsonx/index.js +124 -0
  10. package/lib/cjs/watsonx/index.js.map +1 -0
  11. package/lib/cjs/watsonx/interfaces.js +3 -0
  12. package/lib/cjs/watsonx/interfaces.js.map +1 -0
  13. package/lib/esm/bedrock/index.js +22 -9
  14. package/lib/esm/bedrock/index.js.map +1 -1
  15. package/lib/esm/huggingface_ie.js.map +1 -1
  16. package/lib/esm/index.js +2 -1
  17. package/lib/esm/index.js.map +1 -1
  18. package/lib/esm/vertexai/models/gemini.js +7 -7
  19. package/lib/esm/vertexai/models/gemini.js.map +1 -1
  20. package/lib/esm/watsonx/index.js +120 -0
  21. package/lib/esm/watsonx/index.js.map +1 -0
  22. package/lib/esm/watsonx/interfaces.js +2 -0
  23. package/lib/esm/watsonx/interfaces.js.map +1 -0
  24. package/lib/types/bedrock/index.d.ts.map +1 -1
  25. package/lib/types/huggingface_ie.d.ts +5 -5
  26. package/lib/types/index.d.ts +2 -1
  27. package/lib/types/index.d.ts.map +1 -1
  28. package/lib/types/watsonx/index.d.ts +27 -0
  29. package/lib/types/watsonx/index.d.ts.map +1 -0
  30. package/lib/types/watsonx/interfaces.d.ts +61 -0
  31. package/lib/types/watsonx/interfaces.d.ts.map +1 -0
  32. package/package.json +5 -6
  33. package/src/bedrock/index.ts +24 -9
  34. package/src/huggingface_ie.ts +1 -1
  35. package/src/index.ts +2 -1
  36. package/src/vertexai/models/gemini.ts +7 -7
  37. package/src/watsonx/index.ts +163 -0
  38. 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
- safety_settings: [{
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
- generation_config: {
13
- candidate_count: 1,
12
+ generationConfig: {
13
+ candidateCount: 1,
14
14
  temperature: options.temperature,
15
- max_output_tokens: options.max_tokens
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":"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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interfaces.js.map
@@ -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":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bedrock/index.ts"],"names":[],"mappings":"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"}
@@ -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: any;
21
+ result: string;
22
22
  token_usage: {
23
- result: any;
23
+ result: number;
24
24
  prompt: number;
25
- total: any;
25
+ total: number;
26
26
  };
27
- finish_reason: any;
28
- original_response: any;
27
+ finish_reason: string;
28
+ original_response: import("@huggingface/inference").TextGenerationOutput | undefined;
29
29
  }>;
30
30
  listModels(): Promise<AIModel[]>;
31
31
  validateConnection(): Promise<boolean>;
@@ -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 "./groq/index.js";
10
+ export * from "./watsonx/index.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -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,iBAAiB,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.12.2",
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.2",
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": "^0.5.0",
63
+ "@google-cloud/vertexai": "^1.1.0",
65
64
  "@huggingface/inference": "^2.6.6",
66
- "@llumiverse/core": "^0.12.2",
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.28.1"
73
+ "replicate": "^0.29.0"
75
74
  },
76
75
  "ts_dual_module": {
77
76
  "outDir": "lib"
@@ -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
- return formatClaudePrompt(segments, opts.resultSchema);
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
- return [result.content[0]?.text || '', claudeFinishReason(result.stop_reason)];
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, "anthropic")) {
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
- service.listCustomModels({}),
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.modelSummaries) {
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: `id: ${m.modelId}`,
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.modelSummaries) {
401
+ if (customs?.modelSummaries) {
387
402
  customs.modelSummaries.forEach((m) => {
388
403
 
389
404
  if (!m.modelArn) {
@@ -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 "./groq/index.js";
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
- safety_settings: [{
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
- generation_config: {
16
- candidate_count: 1,
15
+ generationConfig: {
16
+ candidateCount: 1,
17
17
  temperature: options.temperature,
18
- max_output_tokens: options.max_tokens
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);