@llumiverse/drivers 0.14.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 (198) 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 +92 -25
  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 +169 -27
  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 -107
  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 +93 -27
  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 +170 -28
  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 -104
  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 +19 -8
  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 +24 -23
  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 +114 -37
  151. package/src/vertexai/models/claude.ts +281 -0
  152. package/src/vertexai/models/gemini.ts +181 -31
  153. package/src/vertexai/models/imagen.ts +401 -0
  154. package/src/vertexai/models.ts +16 -120
  155. package/src/watsonx/index.ts +42 -10
  156. package/src/xai/index.ts +110 -0
  157. package/lib/cjs/vertexai/models/codey-chat.js +0 -65
  158. package/lib/cjs/vertexai/models/codey-chat.js.map +0 -1
  159. package/lib/cjs/vertexai/models/codey-text.js +0 -35
  160. package/lib/cjs/vertexai/models/codey-text.js.map +0 -1
  161. package/lib/cjs/vertexai/models/palm-model-base.js +0 -59
  162. package/lib/cjs/vertexai/models/palm-model-base.js.map +0 -1
  163. package/lib/cjs/vertexai/models/palm2-chat.js +0 -65
  164. package/lib/cjs/vertexai/models/palm2-chat.js.map +0 -1
  165. package/lib/cjs/vertexai/models/palm2-text.js +0 -35
  166. package/lib/cjs/vertexai/models/palm2-text.js.map +0 -1
  167. package/lib/cjs/vertexai/utils/tensor.js +0 -86
  168. package/lib/cjs/vertexai/utils/tensor.js.map +0 -1
  169. package/lib/esm/vertexai/models/codey-chat.js +0 -61
  170. package/lib/esm/vertexai/models/codey-chat.js.map +0 -1
  171. package/lib/esm/vertexai/models/codey-text.js +0 -31
  172. package/lib/esm/vertexai/models/codey-text.js.map +0 -1
  173. package/lib/esm/vertexai/models/palm-model-base.js +0 -55
  174. package/lib/esm/vertexai/models/palm-model-base.js.map +0 -1
  175. package/lib/esm/vertexai/models/palm2-chat.js +0 -61
  176. package/lib/esm/vertexai/models/palm2-chat.js.map +0 -1
  177. package/lib/esm/vertexai/models/palm2-text.js +0 -31
  178. package/lib/esm/vertexai/models/palm2-text.js.map +0 -1
  179. package/lib/esm/vertexai/utils/tensor.js +0 -82
  180. package/lib/esm/vertexai/utils/tensor.js.map +0 -1
  181. package/lib/types/vertexai/models/codey-chat.d.ts +0 -51
  182. package/lib/types/vertexai/models/codey-chat.d.ts.map +0 -1
  183. package/lib/types/vertexai/models/codey-text.d.ts +0 -39
  184. package/lib/types/vertexai/models/codey-text.d.ts.map +0 -1
  185. package/lib/types/vertexai/models/palm-model-base.d.ts +0 -61
  186. package/lib/types/vertexai/models/palm-model-base.d.ts.map +0 -1
  187. package/lib/types/vertexai/models/palm2-chat.d.ts +0 -61
  188. package/lib/types/vertexai/models/palm2-chat.d.ts.map +0 -1
  189. package/lib/types/vertexai/models/palm2-text.d.ts +0 -39
  190. package/lib/types/vertexai/models/palm2-text.d.ts.map +0 -1
  191. package/lib/types/vertexai/utils/tensor.d.ts +0 -6
  192. package/lib/types/vertexai/utils/tensor.d.ts.map +0 -1
  193. package/src/vertexai/models/codey-chat.ts +0 -115
  194. package/src/vertexai/models/codey-text.ts +0 -69
  195. package/src/vertexai/models/palm-model-base.ts +0 -128
  196. package/src/vertexai/models/palm2-chat.ts +0 -119
  197. package/src/vertexai/models/palm2-text.ts +0 -69
  198. package/src/vertexai/utils/tensor.ts +0 -82
@@ -1,128 +0,0 @@
1
- import { AIModel, Completion, ExecutionOptions, PromptOptions, PromptSegment } from "@llumiverse/core";
2
- import { transformSSEStream } from "@llumiverse/core/async";
3
- import { VertexAIDriver } from "../index.js";
4
- import { ModelDefinition } from "../models.js";
5
- import { generateStreamingPrompt } from "../utils/tensor.js";
6
-
7
-
8
- export interface PromptParamatersBase {
9
- temperature?: number,
10
- maxOutputTokens?: number,
11
- topK?: number,
12
- topP?: number,
13
- groundingConfig?: string,
14
- stopSequences?: string[],
15
- candidateCount?: number,
16
- logprobs?: number,
17
- presencePenalty?: number,
18
- frequencyPenalty?: number,
19
- logitBias?: Record<string, number>,
20
- seed?: number,
21
- echo?: boolean
22
- }
23
-
24
- export interface NonStreamingPromptBase<InstanceType = any> {
25
- instances: InstanceType[];
26
- parameters: PromptParamatersBase;
27
- }
28
-
29
- export interface StreamingPromptBase<InputType = any> {
30
- inputs: { structVal: InputType }[];
31
- parameters: {
32
- structVal: {
33
- temperature?: { floatval: number },
34
- maxOutputTokens?: { intVal: number },
35
- //TODO more params
36
- [key: string]: Record<string, any> | undefined
37
- }
38
- }
39
- }
40
-
41
- export interface PalmResponseMetadata {
42
- tokenMetadata: {
43
- outputTokenCount: {
44
- totalBillableCharacters: number,
45
- totalTokens: number
46
- },
47
- inputTokenCount: {
48
- totalBillableCharacters: number,
49
- totalTokens: number
50
- }
51
- }
52
- }
53
-
54
-
55
- export abstract class AbstractPalmModelDefinition<NonStreamingPromptT extends NonStreamingPromptBase, StreamingPromptT extends StreamingPromptBase> implements ModelDefinition<NonStreamingPromptT | StreamingPromptT> {
56
-
57
- abstract model: AIModel;
58
-
59
- abstract versions?: string[];
60
-
61
- abstract createNonStreamingPrompt(driver: VertexAIDriver, segments: PromptSegment[], options: PromptOptions): NonStreamingPromptT;
62
-
63
- abstract extractContentFromResponse(response: any): string;
64
-
65
- abstract extractContentFromResponseChunk(chunk: any): string;
66
-
67
- async createPrompt(driver: VertexAIDriver, segments: PromptSegment[], options: PromptOptions) {
68
- return this.createNonStreamingPrompt(driver, segments, options);
69
- }
70
-
71
- async requestCompletion(driver: VertexAIDriver, prompt: NonStreamingPromptT | StreamingPromptT, options: ExecutionOptions): Promise<Completion<any>> {
72
- const nonStreamingPrompt = prompt as NonStreamingPromptT;
73
- Object.assign((nonStreamingPrompt).parameters, {
74
- temperature: options.temperature,
75
- maxOutputTokens: options.max_tokens,
76
- });
77
-
78
- const response = await driver.fetchClient.post(`/publishers/google/models/${this.model.id}:predict`, {
79
- payload: nonStreamingPrompt
80
- });
81
-
82
- const metadata = response.metadata as PalmResponseMetadata;
83
- const inputTokens = metadata.tokenMetadata.inputTokenCount.totalTokens;
84
- const outputTokens = metadata.tokenMetadata.outputTokenCount.totalTokens;
85
- const result = this.extractContentFromResponse(response);
86
- return {
87
- result,
88
- token_usage: {
89
- prompt: inputTokens,
90
- result: outputTokens,
91
- total: inputTokens && outputTokens ? inputTokens + outputTokens : undefined,
92
- },
93
- //finish_reason not available
94
- original_response: options.include_original_response ? response : undefined,
95
- } as Completion;
96
-
97
- }
98
-
99
- async requestCompletionStream(driver: VertexAIDriver, prompt: NonStreamingPromptT | StreamingPromptT, options: ExecutionOptions): Promise<AsyncIterable<string>> {
100
- const inPrompt = prompt as NonStreamingPromptT;
101
- Object.assign(inPrompt.parameters, {
102
- temperature: options.temperature,
103
- maxOutputTokens: options.max_tokens,
104
- });
105
-
106
- const path = `/publishers/google/models/${this.model.id}:serverStreamingPredict?alt=sse`;
107
-
108
- const newPrompt = generateStreamingPrompt(inPrompt);
109
-
110
- // we need to modify the existing prompt since it is not the final one
111
- const outPrompt = prompt as StreamingPromptT;
112
- delete (outPrompt as any).instances;
113
- outPrompt.inputs = newPrompt.inputs;
114
- outPrompt.parameters = newPrompt.parameters;
115
-
116
- const eventStrean = await driver.fetchClient.post(path, {
117
- payload: newPrompt,
118
- reader: 'sse'
119
- });
120
-
121
- return transformSSEStream(eventStrean, (data: string) => {
122
- const json = JSON.parse(data);
123
- const stringChunk = this.extractContentFromResponseChunk(json);
124
- return Array.isArray(stringChunk) ? stringChunk.join('') : stringChunk;
125
- })
126
- }
127
-
128
- }
@@ -1,119 +0,0 @@
1
- import { AIModel, ModelType, PromptOptions, PromptRole, PromptSegment } from "@llumiverse/core";
2
- import { getJSONSafetyNotice } from "@llumiverse/core/formatters";
3
- import { VertexAIDriver } from "../index.js";
4
- import { AbstractPalmModelDefinition, NonStreamingPromptBase, PalmResponseMetadata, StreamingPromptBase } from "./palm-model-base.js";
5
-
6
- export interface Palm2ChatMessage {
7
- author: string,
8
- content: string
9
- }
10
-
11
- export type Palm2ChatPrompt = NonStreamingPromptBase<{
12
- context?: string;
13
- examples?: [
14
- {
15
- input: { content: string },
16
- output: { content: string }
17
- }
18
- ],
19
- messages: Palm2ChatMessage[];
20
- }>
21
-
22
-
23
- export type Palm2ChatStreamingPrompt = StreamingPromptBase<{
24
- messages: {
25
- listVal: {
26
- structVal: {
27
- author: {
28
- stringVal: string
29
- },
30
- content: {
31
- stringVal: string
32
- }
33
- }
34
- }[]
35
- }
36
- }>
37
-
38
- interface Palm2ChatResponsePrediction {
39
- candidates: Palm2ChatMessage[],
40
- safetyAttributes: {
41
- scores: number[],
42
- blocked: boolean,
43
- categories: string[],
44
- errors: number[],
45
- },
46
- citationMetadata: {
47
- citations: any[]
48
- },
49
- logprobs: any,
50
- }
51
-
52
- export interface Palm2ChatResponse {
53
- predictions: Palm2ChatResponsePrediction[],
54
- metadata: PalmResponseMetadata
55
- }
56
-
57
- export class Palm2ChatDefinition extends AbstractPalmModelDefinition<Palm2ChatPrompt, Palm2ChatStreamingPrompt> {
58
- versions: string[] = [];
59
- model: AIModel = {
60
- id: "chat-bison",
61
- name: "PaLM 2 for Chat",
62
- provider: "vertexai",
63
- owner: "google",
64
- type: ModelType.Chat,
65
- can_stream: true,
66
- }
67
-
68
- createNonStreamingPrompt(_driver: VertexAIDriver, segments: PromptSegment[], opts: PromptOptions): Palm2ChatPrompt {
69
- const system: string[] = [];
70
- const messages: Palm2ChatMessage[] = [];
71
- const safety: string[] = [];
72
- for (const segment of segments) {
73
- switch (segment.role) {
74
- case PromptRole.user:
75
- messages.push({ author: 'user', content: segment.content });
76
- break;
77
- case PromptRole.assistant:
78
- messages.push({ author: 'assistant', content: segment.content });
79
- break;
80
- case PromptRole.system:
81
- system.push(segment.content);
82
- break;
83
- case PromptRole.safety:
84
- safety.push(segment.content);
85
- break;
86
- }
87
- }
88
-
89
- if (opts.result_schema) {
90
- safety.push(getJSONSafetyNotice(opts.result_schema));
91
- }
92
-
93
- const context = []
94
- if (system.length > 0) {
95
- context.push(system.join('\n'));
96
- }
97
- if (safety.length > 0) {
98
- context.push('IMPORTANT: ' + safety.join('\n'));
99
- }
100
-
101
- return {
102
- instances: [{
103
- context: context.length > 0 ? context.join('\n') : undefined,
104
- messages
105
- }],
106
- parameters: {
107
- // put defauilts here
108
- }
109
- } as Palm2ChatPrompt;
110
- }
111
-
112
- extractContentFromResponse(response: Palm2ChatResponse): string {
113
- return response.predictions[0].candidates[0].content ?? '';
114
- }
115
-
116
- extractContentFromResponseChunk(chunk: any): string {
117
- return chunk.outputs[0]?.structVal.candidates.listVal[0].structVal.content.stringVal || ''
118
- }
119
- }
@@ -1,69 +0,0 @@
1
- import { AIModel, ModelType, PromptOptions, PromptSegment } from "@llumiverse/core";
2
- import { formatTextPrompt } from "@llumiverse/core/formatters";
3
- import { VertexAIDriver } from "../index.js";
4
- import { AbstractPalmModelDefinition, NonStreamingPromptBase, PalmResponseMetadata, StreamingPromptBase } from "./palm-model-base.js";
5
-
6
- export type Palm2TextPrompt = NonStreamingPromptBase<{
7
- prompt: string
8
- }>
9
-
10
-
11
- export type Palm2TextStreamingPrompt = StreamingPromptBase<{
12
- prompt: {
13
- stringVal: string
14
- }
15
- }>
16
-
17
-
18
- interface Palm2TextResponsePrediction {
19
- content: string,
20
- safetyAttributes: {
21
- scores: number[],
22
- safetyRatings: {
23
- severity: string,
24
- probabilityScore: number,
25
- severityScore: number,
26
- category: string
27
- }[]
28
- },
29
- citationMetadata: {
30
- citations: any[]
31
- }
32
- }
33
-
34
- export interface Palm2TextResponse {
35
- predictions: Palm2TextResponsePrediction[],
36
- metadata: PalmResponseMetadata
37
- }
38
-
39
- export class Palm2TextDefinition extends AbstractPalmModelDefinition<Palm2TextPrompt, Palm2TextStreamingPrompt> {
40
- versions: string[] = [];
41
- model: AIModel = {
42
- id: "text-bison",
43
- name: "PaLM 2 for Text",
44
- provider: "vertexai",
45
- owner: "google",
46
- type: ModelType.Text,
47
- can_stream: true,
48
- }
49
-
50
- createNonStreamingPrompt(_driver: VertexAIDriver, segments: PromptSegment[], opts: PromptOptions): Palm2TextPrompt {
51
- return {
52
- instances: [{
53
- prompt: formatTextPrompt(segments, opts.result_schema)
54
- }],
55
- parameters: {
56
- // put defauilts here
57
- }
58
- } as Palm2TextPrompt;
59
- }
60
-
61
- extractContentFromResponse(response: Palm2TextResponse): string {
62
- return response.predictions[0].content ?? '';
63
- }
64
-
65
- extractContentFromResponseChunk(chunk: any): string {
66
- return chunk.outputs[0]?.structVal.content.stringVal || '';
67
- }
68
-
69
- }
@@ -1,82 +0,0 @@
1
-
2
-
3
- function getTensorType(val: any) {
4
- if (val == null) {
5
- return null;
6
- }
7
- if (Array.isArray(val)) {
8
- if (val.length > 0) {
9
- val = val[0]
10
- } else {
11
- return 'listVal';
12
- }
13
- }
14
- const type = typeof val;
15
- if (type === 'string') {
16
- return 'stringVal';
17
- }
18
- if (type === 'number') {
19
- if (val % 1 === 0) { // is interger
20
- return 'intVal';
21
- } else {
22
- return 'floatVal';
23
- }
24
- }
25
- if (type === 'boolean') {
26
- return 'boolVal';
27
- }
28
- if (type === 'object') {
29
- return 'structVal';
30
- }
31
- return undefined;
32
- }
33
-
34
- export function formatArrayAsTensor(arr: any[]): any {
35
- return arr.map(item => {
36
- const type = typeof item;
37
- if (type === 'string' || type === 'number' || type === 'boolean') {
38
- return item; // primitve values
39
- } else {
40
- return formatObjectAsTensor(item)
41
- }
42
- });
43
- }
44
-
45
- /**
46
- * Do not support nested array or nested object arrays
47
- * @param obj
48
- * @returns
49
- */
50
- function formatObjectAsTensor(obj: any, isField = false): any {
51
- const struct: any = {};
52
- const keys = Object.keys(obj);
53
- for (const key of keys) {
54
- //console.log('###', key);
55
- const val = obj[key];
56
- const type = getTensorType(val);
57
- if (type === 'structVal') {
58
- if (Array.isArray(val)) {
59
- struct[key] = { listVal: formatArrayAsTensor(val) };
60
- } else {
61
- struct[key] = {
62
- [type]: formatObjectAsTensor(val, true)
63
- }
64
- }
65
- } else if (type) {
66
- struct[key] = {
67
- [type]: val
68
- }
69
- }
70
- }
71
- return isField ? struct : {
72
- structVal: struct
73
- };
74
- }
75
-
76
-
77
- export function generateStreamingPrompt(prompt: { instances: any, parameters: any }): any {
78
- return {
79
- inputs: prompt.instances.map((inst: any) => formatObjectAsTensor(inst)),
80
- parameters: formatObjectAsTensor(prompt.parameters)
81
- }
82
- }