@llumiverse/drivers 0.15.0 → 0.16.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 (156) hide show
  1. package/README.md +3 -3
  2. package/lib/cjs/adobe/firefly.js +119 -0
  3. package/lib/cjs/adobe/firefly.js.map +1 -0
  4. package/lib/cjs/bedrock/converse.js +177 -0
  5. package/lib/cjs/bedrock/converse.js.map +1 -0
  6. package/lib/cjs/bedrock/index.js +329 -228
  7. package/lib/cjs/bedrock/index.js.map +1 -1
  8. package/lib/cjs/bedrock/nova-image-payload.js +207 -0
  9. package/lib/cjs/bedrock/nova-image-payload.js.map +1 -0
  10. package/lib/cjs/groq/index.js +34 -9
  11. package/lib/cjs/groq/index.js.map +1 -1
  12. package/lib/cjs/huggingface_ie.js +28 -12
  13. package/lib/cjs/huggingface_ie.js.map +1 -1
  14. package/lib/cjs/index.js +1 -0
  15. package/lib/cjs/index.js.map +1 -1
  16. package/lib/cjs/mistral/index.js +31 -12
  17. package/lib/cjs/mistral/index.js.map +1 -1
  18. package/lib/cjs/mistral/types.js.map +1 -1
  19. package/lib/cjs/openai/index.js +149 -27
  20. package/lib/cjs/openai/index.js.map +1 -1
  21. package/lib/cjs/replicate.js +16 -18
  22. package/lib/cjs/replicate.js.map +1 -1
  23. package/lib/cjs/test/TestValidationErrorCompletionStream.js.map +1 -1
  24. package/lib/cjs/test/index.js.map +1 -1
  25. package/lib/cjs/togetherai/index.js +40 -10
  26. package/lib/cjs/togetherai/index.js.map +1 -1
  27. package/lib/cjs/vertexai/embeddings/embeddings-image.js +26 -0
  28. package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +1 -0
  29. package/lib/cjs/vertexai/embeddings/embeddings-text.js +1 -1
  30. package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +1 -1
  31. package/lib/cjs/vertexai/index.js +88 -24
  32. package/lib/cjs/vertexai/index.js.map +1 -1
  33. package/lib/cjs/vertexai/models/claude.js +252 -0
  34. package/lib/cjs/vertexai/models/claude.js.map +1 -0
  35. package/lib/cjs/vertexai/models/gemini.js +147 -22
  36. package/lib/cjs/vertexai/models/gemini.js.map +1 -1
  37. package/lib/cjs/vertexai/models/imagen.js +317 -0
  38. package/lib/cjs/vertexai/models/imagen.js.map +1 -0
  39. package/lib/cjs/vertexai/models.js +12 -64
  40. package/lib/cjs/vertexai/models.js.map +1 -1
  41. package/lib/cjs/watsonx/index.js +39 -8
  42. package/lib/cjs/watsonx/index.js.map +1 -1
  43. package/lib/cjs/xai/index.js +71 -0
  44. package/lib/cjs/xai/index.js.map +1 -0
  45. package/lib/esm/adobe/firefly.js +115 -0
  46. package/lib/esm/adobe/firefly.js.map +1 -0
  47. package/lib/esm/bedrock/converse.js +171 -0
  48. package/lib/esm/bedrock/converse.js.map +1 -0
  49. package/lib/esm/bedrock/index.js +331 -230
  50. package/lib/esm/bedrock/index.js.map +1 -1
  51. package/lib/esm/bedrock/nova-image-payload.js +203 -0
  52. package/lib/esm/bedrock/nova-image-payload.js.map +1 -0
  53. package/lib/esm/groq/index.js +34 -9
  54. package/lib/esm/groq/index.js.map +1 -1
  55. package/lib/esm/huggingface_ie.js +29 -13
  56. package/lib/esm/huggingface_ie.js.map +1 -1
  57. package/lib/esm/index.js +1 -0
  58. package/lib/esm/index.js.map +1 -1
  59. package/lib/esm/mistral/index.js +31 -12
  60. package/lib/esm/mistral/index.js.map +1 -1
  61. package/lib/esm/mistral/types.js.map +1 -1
  62. package/lib/esm/openai/index.js +150 -28
  63. package/lib/esm/openai/index.js.map +1 -1
  64. package/lib/esm/replicate.js +17 -19
  65. package/lib/esm/replicate.js.map +1 -1
  66. package/lib/esm/test/TestValidationErrorCompletionStream.js.map +1 -1
  67. package/lib/esm/test/index.js.map +1 -1
  68. package/lib/esm/togetherai/index.js +40 -10
  69. package/lib/esm/togetherai/index.js.map +1 -1
  70. package/lib/esm/vertexai/embeddings/embeddings-image.js +23 -0
  71. package/lib/esm/vertexai/embeddings/embeddings-image.js.map +1 -0
  72. package/lib/esm/vertexai/embeddings/embeddings-text.js +1 -1
  73. package/lib/esm/vertexai/embeddings/embeddings-text.js.map +1 -1
  74. package/lib/esm/vertexai/index.js +89 -26
  75. package/lib/esm/vertexai/index.js.map +1 -1
  76. package/lib/esm/vertexai/models/claude.js +247 -0
  77. package/lib/esm/vertexai/models/claude.js.map +1 -0
  78. package/lib/esm/vertexai/models/gemini.js +148 -23
  79. package/lib/esm/vertexai/models/gemini.js.map +1 -1
  80. package/lib/esm/vertexai/models/imagen.js +310 -0
  81. package/lib/esm/vertexai/models/imagen.js.map +1 -0
  82. package/lib/esm/vertexai/models.js +12 -61
  83. package/lib/esm/vertexai/models.js.map +1 -1
  84. package/lib/esm/watsonx/index.js +39 -8
  85. package/lib/esm/watsonx/index.js.map +1 -1
  86. package/lib/esm/xai/index.js +64 -0
  87. package/lib/esm/xai/index.js.map +1 -0
  88. package/lib/types/adobe/firefly.d.ts +30 -0
  89. package/lib/types/adobe/firefly.d.ts.map +1 -0
  90. package/lib/types/bedrock/converse.d.ts +8 -0
  91. package/lib/types/bedrock/converse.d.ts.map +1 -0
  92. package/lib/types/bedrock/index.d.ts +26 -11
  93. package/lib/types/bedrock/index.d.ts.map +1 -1
  94. package/lib/types/bedrock/nova-image-payload.d.ts +74 -0
  95. package/lib/types/bedrock/nova-image-payload.d.ts.map +1 -0
  96. package/lib/types/bedrock/payloads.d.ts +9 -65
  97. package/lib/types/bedrock/payloads.d.ts.map +1 -1
  98. package/lib/types/groq/index.d.ts +3 -3
  99. package/lib/types/groq/index.d.ts.map +1 -1
  100. package/lib/types/huggingface_ie.d.ts +5 -7
  101. package/lib/types/huggingface_ie.d.ts.map +1 -1
  102. package/lib/types/index.d.ts +1 -0
  103. package/lib/types/index.d.ts.map +1 -1
  104. package/lib/types/mistral/index.d.ts +4 -4
  105. package/lib/types/mistral/index.d.ts.map +1 -1
  106. package/lib/types/mistral/types.d.ts +1 -0
  107. package/lib/types/mistral/types.d.ts.map +1 -1
  108. package/lib/types/openai/index.d.ts +5 -4
  109. package/lib/types/openai/index.d.ts.map +1 -1
  110. package/lib/types/replicate.d.ts +4 -9
  111. package/lib/types/replicate.d.ts.map +1 -1
  112. package/lib/types/test/index.d.ts +2 -2
  113. package/lib/types/test/index.d.ts.map +1 -1
  114. package/lib/types/togetherai/index.d.ts +4 -4
  115. package/lib/types/togetherai/index.d.ts.map +1 -1
  116. package/lib/types/vertexai/embeddings/embeddings-image.d.ts +11 -0
  117. package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +1 -0
  118. package/lib/types/vertexai/index.d.ts +16 -7
  119. package/lib/types/vertexai/index.d.ts.map +1 -1
  120. package/lib/types/vertexai/models/claude.d.ts +20 -0
  121. package/lib/types/vertexai/models/claude.d.ts.map +1 -0
  122. package/lib/types/vertexai/models/gemini.d.ts +4 -4
  123. package/lib/types/vertexai/models/gemini.d.ts.map +1 -1
  124. package/lib/types/vertexai/models/imagen.d.ts +75 -0
  125. package/lib/types/vertexai/models/imagen.d.ts.map +1 -0
  126. package/lib/types/vertexai/models.d.ts +3 -6
  127. package/lib/types/vertexai/models.d.ts.map +1 -1
  128. package/lib/types/watsonx/index.d.ts +3 -3
  129. package/lib/types/watsonx/index.d.ts.map +1 -1
  130. package/lib/types/xai/index.d.ts +19 -0
  131. package/lib/types/xai/index.d.ts.map +1 -0
  132. package/package.json +17 -15
  133. package/src/adobe/firefly.ts +207 -0
  134. package/src/bedrock/converse.ts +194 -0
  135. package/src/bedrock/index.ts +349 -237
  136. package/src/bedrock/nova-image-payload.ts +309 -0
  137. package/src/bedrock/payloads.ts +12 -66
  138. package/src/groq/index.ts +35 -12
  139. package/src/huggingface_ie.ts +34 -13
  140. package/src/index.ts +1 -0
  141. package/src/mistral/index.ts +34 -12
  142. package/src/mistral/types.ts +2 -1
  143. package/src/openai/index.ts +167 -33
  144. package/src/replicate.ts +21 -20
  145. package/src/test/TestValidationErrorCompletionStream.ts +2 -2
  146. package/src/test/index.ts +3 -2
  147. package/src/togetherai/index.ts +44 -12
  148. package/src/vertexai/embeddings/embeddings-image.ts +50 -0
  149. package/src/vertexai/embeddings/embeddings-text.ts +1 -1
  150. package/src/vertexai/index.ts +106 -32
  151. package/src/vertexai/models/claude.ts +281 -0
  152. package/src/vertexai/models/gemini.ts +159 -26
  153. package/src/vertexai/models/imagen.ts +401 -0
  154. package/src/vertexai/models.ts +16 -78
  155. package/src/watsonx/index.ts +42 -10
  156. package/src/xai/index.ts +110 -0
@@ -1,22 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VertexAIDriver = void 0;
4
+ exports.trimModelName = trimModelName;
4
5
  const vertexai_1 = require("@google-cloud/vertexai");
5
6
  const core_1 = require("@llumiverse/core");
6
7
  const api_fetch_client_1 = require("api-fetch-client");
7
8
  const google_auth_library_1 = require("google-auth-library");
8
9
  const embeddings_text_js_1 = require("./embeddings/embeddings-text.js");
9
10
  const models_js_1 = require("./models.js");
11
+ const embeddings_image_js_1 = require("./embeddings/embeddings-image.js");
12
+ const aiplatform_1 = require("@google-cloud/aiplatform");
13
+ const vertex_sdk_1 = require("@anthropic-ai/vertex-sdk");
14
+ const imagen_js_1 = require("./models/imagen.js");
15
+ function trimModelName(model) {
16
+ const i = model.lastIndexOf('@');
17
+ return i > -1 ? model.substring(0, i) : model;
18
+ }
10
19
  class VertexAIDriver extends core_1.AbstractDriver {
11
20
  static PROVIDER = "vertexai";
12
21
  provider = VertexAIDriver.PROVIDER;
13
- //aiplatform: v1.ModelServiceClient;
22
+ aiplatform;
14
23
  vertexai;
15
24
  fetchClient;
16
25
  authClient;
26
+ anthropicClient;
17
27
  constructor(options) {
18
28
  super(options);
19
- //this.aiplatform = new v1.ModelServiceClient();
29
+ this.anthropicClient = undefined;
20
30
  this.authClient = options.googleAuthOptions?.authClient ?? new google_auth_library_1.GoogleAuth(options.googleAuthOptions);
21
31
  this.vertexai = new vertexai_1.VertexAI({
22
32
  project: this.options.project,
@@ -31,43 +41,97 @@ class VertexAIDriver extends core_1.AbstractDriver {
31
41
  const token = await this.authClient.getAccessToken();
32
42
  return `Bearer ${token}`;
33
43
  });
34
- // this.aiplatform = new v1.ModelServiceClient({
35
- // projectId: this.options.project,
36
- // apiEndpoint: `${this.options.region}-${API_BASE_PATH}`,
37
- // });
44
+ this.aiplatform = new aiplatform_1.v1beta1.ModelServiceClient({
45
+ projectId: this.options.project,
46
+ apiEndpoint: `${this.options.region}-${API_BASE_PATH}`,
47
+ });
48
+ }
49
+ getAnthropicClient() {
50
+ //Lazy initialisation
51
+ if (!this.anthropicClient) {
52
+ this.anthropicClient = new vertex_sdk_1.AnthropicVertex({ region: "us-east5", projectId: process.env.GOOGLE_PROJECT_ID });
53
+ }
54
+ return this.anthropicClient;
38
55
  }
39
56
  canStream(options) {
57
+ if (options.output_modality == core_1.Modalities.image) {
58
+ return Promise.resolve(false);
59
+ }
40
60
  return Promise.resolve((0, models_js_1.getModelDefinition)(options.model).model.can_stream === true);
41
61
  }
42
62
  createPrompt(segments, options) {
63
+ if (options.model.includes("imagen")) {
64
+ return new imagen_js_1.ImagenModelDefinition(options.model).createPrompt(this, segments, options);
65
+ }
43
66
  return (0, models_js_1.getModelDefinition)(options.model).createPrompt(this, segments, options);
44
67
  }
45
- async requestCompletion(prompt, options) {
46
- return (0, models_js_1.getModelDefinition)(options.model).requestCompletion(this, prompt, options);
68
+ async requestTextCompletion(prompt, options) {
69
+ return (0, models_js_1.getModelDefinition)(options.model).requestTextCompletion(this, prompt, options);
47
70
  }
48
- async requestCompletionStream(prompt, options) {
49
- return (0, models_js_1.getModelDefinition)(options.model).requestCompletionStream(this, prompt, options);
71
+ async requestTextCompletionStream(prompt, options) {
72
+ return (0, models_js_1.getModelDefinition)(options.model).requestTextCompletionStream(this, prompt, options);
73
+ }
74
+ async requestImageGeneration(_prompt, _options) {
75
+ const splits = _options.model.split("/");
76
+ const modelName = trimModelName(splits[splits.length - 1]);
77
+ return new imagen_js_1.ImagenModelDefinition(modelName).requestImageGeneration(this, _prompt, _options);
50
78
  }
51
79
  async listModels(_params) {
52
- return models_js_1.BuiltinModels;
53
- // try {
54
- // const response = await this.fetchClient.get('/publishers/google/models/gemini-pro');
55
- // console.log('>>>>>>>>', response);
56
- // } catch (err: any) {
57
- // console.error('+++++VETREX ERROR++++++', err);
58
- // throw err;
59
- // }
60
- // TODO uncomment this to use apiplatform instead of the fetch client
61
- // const response = await this.aiplatform.listModels({
62
- // parent: `projects/${this.options.project}/locations/${this.options.region}`,
63
- // });
64
- return []; //TODO
80
+ let models = [];
81
+ const modelGarden = new aiplatform_1.v1beta1.ModelGardenServiceClient({
82
+ projectId: this.options.project,
83
+ apiEndpoint: `${this.options.region}-${API_BASE_PATH}`,
84
+ });
85
+ //Project specific deployed models
86
+ const [response] = await this.aiplatform.listModels({
87
+ parent: `projects/${this.options.project}/locations/${this.options.region}`,
88
+ });
89
+ models = models.concat(response.map(model => ({
90
+ id: model.name?.split('/').pop() ?? '',
91
+ name: model.displayName ?? '',
92
+ provider: 'vertexai',
93
+ })));
94
+ //Model Garden Publisher models - Pretrained models
95
+ const publishers = ['google', 'anthropic'];
96
+ const supportedModels = { google: ['gemini', 'imagen'], anthropic: ['claude'] };
97
+ for (const publisher of publishers) {
98
+ const [response] = await modelGarden.listPublisherModels({
99
+ parent: `publishers/${publisher}`,
100
+ orderBy: 'name',
101
+ //filter: `name eq name`,
102
+ listAllVersions: true,
103
+ });
104
+ models = models.concat(response.map(model => ({
105
+ id: model.name ?? '',
106
+ name: model.name?.split('/').pop() ?? '',
107
+ provider: 'vertexai',
108
+ owner: publisher,
109
+ })).filter(model => {
110
+ const modelFamily = supportedModels[publisher];
111
+ for (const family of modelFamily) {
112
+ if (model.name.includes(family)) {
113
+ return true;
114
+ }
115
+ }
116
+ }));
117
+ }
118
+ return models;
65
119
  }
66
120
  validateConnection() {
67
121
  throw new Error("Method not implemented.");
68
122
  }
69
123
  async generateEmbeddings(options) {
70
- return (0, embeddings_text_js_1.getEmbeddingsForText)(this, options);
124
+ if (options.image || options.model?.includes("multimodal")) {
125
+ if (options.text && options.image) {
126
+ throw new Error("Text and Image simultaneous embedding not implemented. Submit seperately");
127
+ }
128
+ return (0, embeddings_image_js_1.getEmbeddingsForImages)(this, options);
129
+ }
130
+ const text_options = {
131
+ content: options.text ?? '',
132
+ model: options.model,
133
+ };
134
+ return (0, embeddings_text_js_1.getEmbeddingsForText)(this, text_options);
71
135
  }
72
136
  }
73
137
  exports.VertexAIDriver = VertexAIDriver;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vertexai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/vertexai/index.ts"],"names":[],"mappings":";;;AAuBA,sCAGC;AA1BD,qDAA0E;AAC1E,2CAAiN;AACjN,uDAA+C;AAC/C,6DAAoE;AAEpE,wEAA8F;AAC9F,2CAAiD;AAEjD,0EAA0E;AAC1E,yDAAmD;AACnD,yDAA2D;AAC3D,kDAAyE;AAYzE,SAAgB,aAAa,CAAC,KAAa;IACvC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC;AAED,MAAa,cAAe,SAAQ,qBAAqD;IACrF,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC7B,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IAEnC,UAAU,CAA6B;IACvC,QAAQ,CAAW;IACnB,WAAW,CAAc;IACzB,UAAU,CAAsC;IAChD,eAAe,CAA8B;IAE7C,YAAa,OAA8B;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,iBAAiB,EAAE,UAAU,IAAI,IAAI,gCAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAErG,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC7B,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;SACpD,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;SAChC,CAAC,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YAC3B,YAAY;YACZ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;YACrD,OAAO,UAAU,KAAK,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAO,CAAC,kBAAkB,CAAC;YAC7C,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC/B,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE;SACzD,CAAC,CAAC;IACP,CAAC;IAEM,kBAAkB;QACrB,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,GAAG,IAAI,4BAAe,CAAC,EAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAC,CAAC,CAAC;QAC/G,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAES,SAAS,CAAC,OAAyB;QACzC,IAAI,OAAO,CAAC,eAAe,IAAI,iBAAU,CAAC,KAAK,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAA,8BAAkB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;IACxF,CAAC;IAEM,YAAY,CAAC,QAAyB,EAAE,OAAyB;QACpE,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,iCAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAA,8BAAkB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAAsB,EAAE,OAAyB;QACzE,OAAO,IAAA,8BAAkB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC;IACD,KAAK,CAAC,2BAA2B,CAAC,MAAsB,EAAE,OAAyB;QAC/E,OAAO,IAAA,8BAAkB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,OAAqB,EAAE,QAA0B;QAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,iCAAqB,CAAC,SAAS,CAAC,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA4B;QACzC,IAAI,MAAM,GAAsB,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,oBAAO,CAAC,wBAAwB,CAAC;YACrD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC/B,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE;SACzD,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAChD,MAAM,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,cAAc,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;SAC9E,CAAC,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1C,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE;YACtC,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;YAC7B,QAAQ,EAAE,UAAU;SACvB,CAAC,CAAC,CAAC,CAAC;QAEL,mDAAmD;QACnD,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;QAC1C,MAAM,eAAe,GAAG,EAAC,MAAM,EAAE,CAAC,QAAQ,EAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAC,CAAA;QAE5E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,WAAW,CAAC,mBAAmB,CAAC;gBACrD,MAAM,EAAE,cAAc,SAAS,EAAE;gBACjC,OAAO,EAAE,MAAM;gBACf,yBAAyB;gBACzB,eAAe,EAAE,IAAI;aACxB,CAAC,CAAC;YAEH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC1C,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE;gBACxC,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,SAAS;aACnB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACf,MAAM,WAAW,GAAG,eAAe,CAAC,SAAyC,CAAC,CAAC;gBAC/E,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;oBAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC9B,OAAO,IAAI,CAAC;oBAChB,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC,CAAC;QACR,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAA0B;QAC/C,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACzD,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;YAChG,CAAC;YACD,OAAO,IAAA,4CAAsB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,YAAY,GAA0B;YACxC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;SACvB,CAAA;QACD,OAAO,IAAA,yCAAoB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;;AAtIL,wCAwIC;AAED,0CAA0C;AAC1C,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAClD,SAAS,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,GAAG,IAAI,EAK3E;IACG,MAAM,kBAAkB,GAAG,WAAW,IAAI,GAAG,MAAM,IAAI,aAAa,EAAE,CAAC;IACvE,OAAO,IAAI,8BAAW,CAAC,WAAW,kBAAkB,IAAI,UAAU,aAAa,OAAO,cAAc,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC;QACtH,cAAc,EAAE,kBAAkB;KACrC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClaudeModelDefinition = void 0;
4
+ exports.collectTools = collectTools;
5
+ const core_1 = require("@llumiverse/core");
6
+ const async_1 = require("@llumiverse/core/async");
7
+ function getFullModelName(model) {
8
+ if (model.includes("claude-3-5-sonnet-v2")) {
9
+ return "claude-3-5-sonnet-v2@20241022";
10
+ }
11
+ else if (model.includes("claude-3-5-sonnet")) {
12
+ return "claude-3-5-sonnet@20240620";
13
+ }
14
+ else if (model.includes("claude-3-5-haiku")) {
15
+ return "claude-3-5-haiku@20241022";
16
+ }
17
+ else if (model.includes("claude-3-opus")) {
18
+ return "claude-3-opus@20240229";
19
+ }
20
+ else if (model.includes("claude-3-sonnet")) {
21
+ return "claude-3-sonnet@20240229";
22
+ }
23
+ else if (model.includes("claude-3-haike")) {
24
+ return "claude-3-haiku@20240307";
25
+ }
26
+ return model;
27
+ }
28
+ function claudeFinishReason(reason) {
29
+ if (!reason)
30
+ return undefined;
31
+ switch (reason) {
32
+ case 'end_turn': return "stop";
33
+ case 'max_tokens': return "length";
34
+ default: return reason; //stop_sequence
35
+ }
36
+ }
37
+ function collectTextParts(content) {
38
+ const out = [];
39
+ for (const block of content) {
40
+ if (block?.text) {
41
+ out.push(block.text);
42
+ }
43
+ }
44
+ return out.join('\n');
45
+ }
46
+ function maxToken(max_tokens, model) {
47
+ const contains = (str, substr) => str.indexOf(substr) !== -1;
48
+ if (max_tokens) {
49
+ return max_tokens;
50
+ }
51
+ else if (contains(model, "claude-3-5")) {
52
+ return 8192;
53
+ }
54
+ else {
55
+ return 4096;
56
+ }
57
+ }
58
+ class ClaudeModelDefinition {
59
+ model;
60
+ constructor(modelId) {
61
+ this.model = {
62
+ id: modelId,
63
+ name: modelId,
64
+ provider: 'vertexai',
65
+ type: core_1.ModelType.Text,
66
+ can_stream: true,
67
+ };
68
+ }
69
+ async createPrompt(_driver, segments, options) {
70
+ // Convert the prompt to the format expected by the Claude API
71
+ const systemSegments = segments
72
+ .filter(segment => segment.role === core_1.PromptRole.system)
73
+ .map(segment => ({
74
+ text: segment.content,
75
+ type: 'text'
76
+ }));
77
+ const safetySegments = segments
78
+ .filter(segment => segment.role === core_1.PromptRole.safety)
79
+ .map(segment => ({
80
+ text: segment.content,
81
+ type: 'text'
82
+ }));
83
+ if (options.result_schema) {
84
+ const schemaSegments = {
85
+ text: "The answer must be a JSON object using the following JSON Schema:\n" + JSON.stringify(options.result_schema),
86
+ type: 'text'
87
+ };
88
+ safetySegments.push(schemaSegments);
89
+ }
90
+ const messages = segments.filter(segment => segment.role == core_1.PromptRole.user
91
+ || segment.role == core_1.PromptRole.assistant
92
+ || segment.role === core_1.PromptRole.tool)
93
+ .map(segment => {
94
+ if (segment.role === core_1.PromptRole.tool) {
95
+ if (!segment.tool_use_id) {
96
+ throw new Error("Tool prompt segment must have a tool_use_id");
97
+ }
98
+ return {
99
+ role: 'user',
100
+ content: [
101
+ {
102
+ type: 'tool_result',
103
+ tool_use_id: segment.tool_use_id,
104
+ content: segment.content || undefined
105
+ }
106
+ ]
107
+ };
108
+ }
109
+ else {
110
+ return {
111
+ role: segment.role !== core_1.PromptRole.user ? 'assistant' : 'user',
112
+ content: segment.content
113
+ };
114
+ }
115
+ });
116
+ const system = systemSegments.concat(safetySegments);
117
+ return {
118
+ messages: messages,
119
+ system: system
120
+ };
121
+ }
122
+ async requestTextCompletion(driver, prompt, options) {
123
+ const client = driver.getAnthropicClient();
124
+ const splits = options.model.split("/");
125
+ const modelName = splits[splits.length - 1];
126
+ options = { ...options, model: modelName };
127
+ options.model_options = options.model_options;
128
+ if (options.model_options?._option_id !== "vertexai-claude") {
129
+ driver.logger.warn("Invalid model options", { options: options.model_options });
130
+ }
131
+ let conversation = updateConversation(options.conversation, prompt);
132
+ const result = await client.messages.create({
133
+ ...conversation, // messages, system,
134
+ tools: options.tools, // we are using the same shape as claude for tools
135
+ temperature: options.model_options?.temperature,
136
+ model: modelName,
137
+ max_tokens: maxToken(options.model_options?.max_tokens, modelName),
138
+ top_p: options.model_options?.top_p,
139
+ top_k: options.model_options?.top_k,
140
+ stop_sequences: options.model_options?.stop_sequence,
141
+ thinking: options.model_options?.thinking_mode ?
142
+ {
143
+ budget_tokens: options.model_options?.thinking_budget_tokens ?? 1024,
144
+ type: "enabled"
145
+ } : {
146
+ type: "disabled"
147
+ }
148
+ });
149
+ const text = collectTextParts(result.content);
150
+ const tool_use = collectTools(result.content);
151
+ conversation = updateConversation(options.conversation, createPromptFromResponse(result));
152
+ return {
153
+ chat: [prompt, { role: result.role, content: result.content }],
154
+ result: text ?? '',
155
+ tool_use,
156
+ token_usage: {
157
+ prompt: result?.usage.input_tokens,
158
+ result: result?.usage.output_tokens,
159
+ total: result?.usage.input_tokens + result?.usage.output_tokens
160
+ },
161
+ // make sure we set finish_reason to the correct value (claude is normally setting this by itself)
162
+ finish_reason: tool_use ? "tool_use" : claudeFinishReason(result?.stop_reason ?? ''),
163
+ conversation
164
+ };
165
+ }
166
+ async requestTextCompletionStream(driver, prompt, options) {
167
+ const client = driver.getAnthropicClient();
168
+ const splits = options.model.split("/");
169
+ const modelName = splits[splits.length - 1];
170
+ options = { ...options, model: modelName };
171
+ options.model_options = options.model_options;
172
+ if (options.model_options?._option_id !== "vertexai-claude") {
173
+ driver.logger.warn("Invalid model options", { options: options.model_options });
174
+ }
175
+ const response_stream = await client.messages.stream({
176
+ ...prompt, // messages, system,
177
+ tools: options.tools, // we are using the same shape as claude for tools
178
+ temperature: options.model_options?.temperature,
179
+ model: modelName,
180
+ max_tokens: maxToken(options.model_options?.max_tokens, modelName),
181
+ top_p: options.model_options?.top_p,
182
+ top_k: options.model_options?.top_k,
183
+ stop_sequences: options.model_options?.stop_sequence,
184
+ thinking: options.model_options?.thinking_mode ?
185
+ {
186
+ budget_tokens: options.model_options?.thinking_budget_tokens ?? 1024,
187
+ type: "enabled"
188
+ } : {
189
+ type: "disabled"
190
+ }
191
+ });
192
+ //Streaming does not give information on the input tokens,
193
+ //So we use a seperate call to get the input tokens.
194
+ //Non-critical and model name sensitive so we put it in a try catch block
195
+ let count_tokens = { input_tokens: 0 };
196
+ try {
197
+ count_tokens = await client.messages.countTokens({
198
+ ...prompt, // messages, system
199
+ model: getFullModelName(modelName),
200
+ });
201
+ }
202
+ catch (e) {
203
+ driver.logger.warn("Failed to get token count for model " + modelName);
204
+ }
205
+ const stream = (0, async_1.asyncMap)(response_stream, async (item) => {
206
+ return {
207
+ result: item?.delta?.text ?? '',
208
+ token_usage: { prompt: count_tokens.input_tokens, result: item?.usage?.output_tokens },
209
+ finish_reason: claudeFinishReason(item?.delta?.stop_reason ?? ''),
210
+ };
211
+ });
212
+ return stream;
213
+ }
214
+ }
215
+ exports.ClaudeModelDefinition = ClaudeModelDefinition;
216
+ function collectTools(content) {
217
+ const out = [];
218
+ for (const block of content) {
219
+ if (block?.type === "tool_use") {
220
+ out.push({
221
+ id: block.id,
222
+ name: block.name,
223
+ input: block.input,
224
+ });
225
+ }
226
+ }
227
+ return out.length > 0 ? out : undefined;
228
+ }
229
+ function createPromptFromResponse(response) {
230
+ return {
231
+ messages: [{
232
+ role: core_1.PromptRole.assistant,
233
+ content: response.content,
234
+ }],
235
+ system: []
236
+ };
237
+ }
238
+ /**
239
+ * Update the converatation messages
240
+ * @param prompt
241
+ * @param response
242
+ * @returns
243
+ */
244
+ function updateConversation(conversation, prompt) {
245
+ const baseSystemMessages = conversation ? conversation.system : [];
246
+ const baseMessages = conversation ? conversation.messages : [];
247
+ return {
248
+ messages: baseMessages.concat(prompt.messages || []),
249
+ system: baseSystemMessages.concat(prompt.system || [])
250
+ };
251
+ }
252
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../src/vertexai/models/claude.ts"],"names":[],"mappings":"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"}