Skip to content

Commit c688c83

Browse files
committed
Add factory to produce user friendly gen runtime config objects
1 parent befa2af commit c688c83

File tree

8 files changed

+757
-33
lines changed

8 files changed

+757
-33
lines changed

src/collections/config/types/generative.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,13 @@ export type GenerativeMistralConfig = {
5858
temperature?: number;
5959
};
6060

61+
export type GenerativeNvidiaConfig = {
62+
baseURL?: string;
63+
maxTokens?: number;
64+
model?: string;
65+
temperature?: number;
66+
};
67+
6168
export type GenerativeOllamaConfig = {
6269
apiEndpoint?: string;
6370
model?: string;

src/collections/configure/generative.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
GenerativeFriendliAIConfig,
99
GenerativeGoogleConfig,
1010
GenerativeMistralConfig,
11+
GenerativeNvidiaConfig,
1112
GenerativeOllamaConfig,
1213
GenerativeOpenAIConfig,
1314
GenerativePaLMConfig,
@@ -22,6 +23,7 @@ import {
2223
GenerativeDatabricksConfigCreate,
2324
GenerativeFriendliAIConfigCreate,
2425
GenerativeMistralConfigCreate,
26+
GenerativeNvidiaConfigCreate,
2527
GenerativeOllamaConfigCreate,
2628
GenerativeOpenAIConfigCreate,
2729
GenerativePaLMConfigCreate,
@@ -169,6 +171,22 @@ export default {
169171
config,
170172
};
171173
},
174+
/**
175+
* Create a `ModuleConfig<'generative-nvidia', GenerativeNvidiaConfig | undefined>` object for use when performing AI generation using the `generative-mistral` module.
176+
*
177+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/nvidia/generative) for detailed usage.
178+
*
179+
* @param {GenerativeNvidiaConfigCreate} [config] The configuration for the `generative-nvidia` module.
180+
* @returns {ModuleConfig<'generative-nvidia', GenerativeNvidiaConfig | undefined>} The configuration object.
181+
*/
182+
nvidia(
183+
config?: GenerativeNvidiaConfigCreate
184+
): ModuleConfig<'generative-nvidia', GenerativeNvidiaConfig | undefined> {
185+
return {
186+
name: 'generative-nvidia',
187+
config,
188+
};
189+
},
172190
/**
173191
* Create a `ModuleConfig<'generative-ollama', GenerativeOllamaConfig | undefined>` object for use when performing AI generation using the `generative-ollama` module.
174192
*

src/collections/configure/types/generative.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
GenerativeDatabricksConfig,
66
GenerativeFriendliAIConfig,
77
GenerativeMistralConfig,
8+
GenerativeNvidiaConfig,
89
GenerativeOllamaConfig,
910
GenerativePaLMConfig,
1011
} from '../../index.js';
@@ -44,6 +45,8 @@ export type GenerativeFriendliAIConfigCreate = GenerativeFriendliAIConfig;
4445

4546
export type GenerativeMistralConfigCreate = GenerativeMistralConfig;
4647

48+
export type GenerativeNvidiaConfigCreate = GenerativeNvidiaConfig;
49+
4750
export type GenerativeOllamaConfigCreate = GenerativeOllamaConfig;
4851

4952
export type GenerativeOpenAIConfigCreate = GenerativeOpenAIConfigBaseCreate & {
@@ -61,6 +64,7 @@ export type GenerativeConfigCreate =
6164
| GenerativeDatabricksConfigCreate
6265
| GenerativeFriendliAIConfigCreate
6366
| GenerativeMistralConfigCreate
67+
| GenerativeNvidiaConfigCreate
6468
| GenerativeOllamaConfigCreate
6569
| GenerativeOpenAIConfigCreate
6670
| GenerativePaLMConfigCreate
@@ -81,6 +85,8 @@ export type GenerativeConfigCreateType<G> = G extends 'generative-anthropic'
8185
? GenerativeFriendliAIConfigCreate
8286
: G extends 'generative-mistral'
8387
? GenerativeMistralConfigCreate
88+
: G extends 'generative-nvidia'
89+
? GenerativeNvidiaConfigCreate
8490
: G extends 'generative-ollama'
8591
? GenerativeOllamaConfigCreate
8692
: G extends 'generative-openai'

src/collections/generate/config.ts

Lines changed: 282 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,282 @@
1+
import { TextArray } from '../../proto/v1/base.js';
2+
import { ModuleConfig } from '../config/types/index.js';
3+
import {
4+
GenerativeAWSConfigRuntime,
5+
GenerativeAnthropicConfigRuntime,
6+
GenerativeAnyscaleConfigRuntime,
7+
GenerativeCohereConfigRuntime,
8+
GenerativeConfigRuntimeType,
9+
GenerativeDatabricksConfigRuntime,
10+
GenerativeFriendliAIConfigRuntime,
11+
GenerativeGoogleConfigRuntime,
12+
GenerativeMistralConfigRuntime,
13+
GenerativeNvidiaConfigRuntime,
14+
GenerativeOllamaConfigRuntime,
15+
GenerativeOpenAIConfigRuntime,
16+
} from '../index.js';
17+
18+
export const generativeConfigRuntime = {
19+
/**
20+
* Create a `ModuleConfig<'generative-anthropic', GenerativeConfigRuntimeType<'generative-anthropic'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-anthropic` module.
21+
*
22+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/anthropic/generative) for detailed usage.
23+
*
24+
* @param {GenerativeAnthropicConfigCreateRuntime} [config] The configuration for the `generative-anthropic` module.
25+
* @returns {ModuleConfig<'generative-anthropic', GenerativeAnthropicConfigCreateRuntime | undefined>} The configuration object.
26+
*/
27+
anthropic(
28+
config?: GenerativeAnthropicConfigRuntime
29+
): ModuleConfig<'generative-anthropic', GenerativeConfigRuntimeType<'generative-anthropic'> | undefined> {
30+
const { baseURL, stopSequences, ...rest } = config || {};
31+
return {
32+
name: 'generative-anthropic',
33+
config: config
34+
? {
35+
...rest,
36+
baseUrl: baseURL,
37+
stopSequences: TextArray.fromPartial({ values: stopSequences }),
38+
}
39+
: undefined,
40+
};
41+
},
42+
/**
43+
* Create a `ModuleConfig<'generative-anyscale', GenerativeConfigRuntimeType<'generative-anyscale'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-anyscale` module.
44+
*
45+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/anyscale/generative) for detailed usage.
46+
*
47+
* @param {GenerativeAnyscaleConfigRuntime} [config] The configuration for the `generative-aws` module.
48+
* @returns {ModuleConfig<'generative-anyscale', GenerativeConfigRuntimeType<'generative-anyscale'> | undefined>} The configuration object.
49+
*/
50+
anyscale(
51+
config?: GenerativeAnyscaleConfigRuntime
52+
): ModuleConfig<'generative-anyscale', GenerativeConfigRuntimeType<'generative-anyscale'> | undefined> {
53+
const { baseURL, ...rest } = config || {};
54+
return {
55+
name: 'generative-anyscale',
56+
config: config
57+
? {
58+
...rest,
59+
baseUrl: baseURL,
60+
}
61+
: undefined,
62+
};
63+
},
64+
/**
65+
* Create a `ModuleConfig<'generative-aws', GenerativeConfigRuntimeType<'generative-aws'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-aws` module.
66+
*
67+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/aws/generative) for detailed usage.
68+
*
69+
* @param {GenerativeAWSConfigRuntime} [config] The configuration for the `generative-aws` module.
70+
* @returns {ModuleConfig<'generative-aws', GenerativeConfigRuntimeType<'generative-aws'> | undefined>} The configuration object.
71+
*/
72+
aws(
73+
config?: GenerativeAWSConfigRuntime
74+
): ModuleConfig<'generative-aws', GenerativeConfigRuntimeType<'generative-aws'> | undefined> {
75+
return {
76+
name: 'generative-aws',
77+
config,
78+
};
79+
},
80+
/**
81+
* Create a `ModuleConfig<'generative-openai', GenerativeConfigRuntimeType<'generative-azure-openai'>>` object for use when performing runtime-specific AI generation using the `generative-openai` module.
82+
*
83+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/openai/generative) for detailed usage.
84+
*
85+
* @param {GenerativeAzureOpenAIConfigRuntime} [config] The configuration for the `generative-openai` module.
86+
* @returns {ModuleConfig<'generative-azure-openai', GenerativeConfigRuntimeType<'generative-azure-openai'>>} The configuration object.
87+
*/
88+
azureOpenAI: (
89+
config?: GenerativeOpenAIConfigRuntime
90+
): ModuleConfig<'generative-azure-openai', GenerativeConfigRuntimeType<'generative-azure-openai'>> => {
91+
const { baseURL, model, stop, ...rest } = config || {};
92+
return {
93+
name: 'generative-azure-openai',
94+
config: config
95+
? {
96+
...rest,
97+
baseUrl: baseURL,
98+
model: model ?? '',
99+
isAzure: true,
100+
stop: TextArray.fromPartial({ values: stop }),
101+
}
102+
: { model: '', isAzure: true },
103+
};
104+
},
105+
/**
106+
* Create a `ModuleConfig<'generative-cohere', GenerativeConfigRuntimeType<'generative-cohere'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-cohere` module.
107+
*
108+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/cohere/generative) for detailed usage.
109+
*
110+
* @param {GenerativeCohereConfigRuntime} [config] The configuration for the `generative-cohere` module.
111+
* @returns {ModuleConfig<'generative-cohere', GenerativeConfigRuntimeType<'generative-cohere'> | undefined>} The configuration object.
112+
*/
113+
cohere: (
114+
config?: GenerativeCohereConfigRuntime
115+
): ModuleConfig<'generative-cohere', GenerativeConfigRuntimeType<'generative-cohere'> | undefined> => {
116+
const { baseURL, stopSequences, ...rest } = config || {};
117+
return {
118+
name: 'generative-cohere',
119+
config: config
120+
? {
121+
...rest,
122+
baseUrl: baseURL,
123+
stopSequences: TextArray.fromPartial({ values: stopSequences }),
124+
}
125+
: undefined,
126+
};
127+
},
128+
/**
129+
* Create a `ModuleConfig<'generative-databricks', GenerativeConfigRuntimeType<'generative-databricks'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-databricks` module.
130+
*
131+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/databricks/generative) for detailed usage.
132+
*
133+
* @param {GenerativeDatabricksConfigRuntime} [config] The configuration for the `generative-databricks` module.
134+
* @returns {ModuleConfig<'generative-databricks', GenerativeConfigRuntimeType<'generative-databricks'> | undefined>} The configuration object.
135+
*/
136+
databricks: (
137+
config?: GenerativeDatabricksConfigRuntime
138+
): ModuleConfig<
139+
'generative-databricks',
140+
GenerativeConfigRuntimeType<'generative-databricks'> | undefined
141+
> => {
142+
const { stop, ...rest } = config || {};
143+
return {
144+
name: 'generative-databricks',
145+
config: config
146+
? {
147+
...rest,
148+
stop: TextArray.fromPartial({ values: stop }),
149+
}
150+
: undefined,
151+
};
152+
},
153+
/**
154+
* Create a `ModuleConfig<'generative-friendliai', GenerativeConfigRuntimeType<'generative-friendliai'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-friendliai` module.
155+
*
156+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/friendliai/generative) for detailed usage.
157+
*
158+
* @param {GenerativeFriendliAIConfigRuntime} [config] The configuration for the `generative-friendliai` module.
159+
* @returns {ModuleConfig<'generative-databricks', GenerativeConfigRuntimeType<'generative-friendliai'> | undefined>} The configuration object.
160+
*/
161+
friendliai(
162+
config?: GenerativeFriendliAIConfigRuntime
163+
): ModuleConfig<'generative-friendliai', GenerativeConfigRuntimeType<'generative-friendliai'> | undefined> {
164+
const { baseURL, ...rest } = config || {};
165+
return {
166+
name: 'generative-friendliai',
167+
config: config
168+
? {
169+
...rest,
170+
baseUrl: baseURL,
171+
}
172+
: undefined,
173+
};
174+
},
175+
/**
176+
* Create a `ModuleConfig<'generative-mistral', GenerativeConfigRuntimeType<'generative-mistral'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-mistral` module.
177+
*
178+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/mistral/generative) for detailed usage.
179+
*
180+
* @param {GenerativeMistralConfigRuntime} [config] The configuration for the `generative-mistral` module.
181+
* @returns {ModuleConfig<'generative-mistral', GenerativeConfigRuntimeType<'generative-mistral'> | undefined>} The configuration object.
182+
*/
183+
mistral(
184+
config?: GenerativeMistralConfigRuntime
185+
): ModuleConfig<'generative-mistral', GenerativeConfigRuntimeType<'generative-mistral'> | undefined> {
186+
const { baseURL, ...rest } = config || {};
187+
return {
188+
name: 'generative-mistral',
189+
config: config
190+
? {
191+
baseUrl: baseURL,
192+
...rest,
193+
}
194+
: undefined,
195+
};
196+
},
197+
/**
198+
* Create a `ModuleConfig<'generative-nvidia', GenerativeConfigRuntimeType<'generative-nvidia'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-mistral` module.
199+
*
200+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/nvidia/generative) for detailed usage.
201+
*
202+
* @param {GenerativeNvidiaConfigCreate} [config] The configuration for the `generative-nvidia` module.
203+
* @returns {ModuleConfig<'generative-nvidia', GenerativeConfigRuntimeType<'generative-nvidia'> | undefined>} The configuration object.
204+
*/
205+
nvidia(
206+
config?: GenerativeNvidiaConfigRuntime
207+
): ModuleConfig<'generative-nvidia', GenerativeConfigRuntimeType<'generative-nvidia'> | undefined> {
208+
const { baseURL, ...rest } = config || {};
209+
return {
210+
name: 'generative-nvidia',
211+
config: config
212+
? {
213+
...rest,
214+
baseUrl: baseURL,
215+
}
216+
: undefined,
217+
};
218+
},
219+
/**
220+
* Create a `ModuleConfig<'generative-ollama', GenerativeConfigRuntimeType<'generative-ollama'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-ollama` module.
221+
*
222+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/ollama/generative) for detailed usage.
223+
*
224+
* @param {GenerativeOllamaConfigRuntime} [config] The configuration for the `generative-openai` module.
225+
* @returns {ModuleConfig<'generative-ollama', GenerativeConfigRuntimeType<'generative-ollama'> | undefined>} The configuration object.
226+
*/
227+
ollama(
228+
config?: GenerativeOllamaConfigRuntime
229+
): ModuleConfig<'generative-ollama', GenerativeConfigRuntimeType<'generative-ollama'> | undefined> {
230+
return {
231+
name: 'generative-ollama',
232+
config,
233+
};
234+
},
235+
/**
236+
* Create a `ModuleConfig<'generative-openai', GenerativeConfigRuntimeType<'generative-openai'>>` object for use when performing runtime-specific AI generation using the `generative-openai` module.
237+
*
238+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/openai/generative) for detailed usage.
239+
*
240+
* @param {GenerativeOpenAIConfigRuntime} [config] The configuration for the `generative-openai` module.
241+
* @returns {ModuleConfig<'generative-openai', GenerativeConfigRuntimeType<'generative-openai'>>} The configuration object.
242+
*/
243+
openAI: (
244+
config?: GenerativeOpenAIConfigRuntime
245+
): ModuleConfig<'generative-openai', GenerativeConfigRuntimeType<'generative-openai'>> => {
246+
const { baseURL, model, stop, ...rest } = config || {};
247+
return {
248+
name: 'generative-openai',
249+
config: config
250+
? {
251+
...rest,
252+
baseUrl: baseURL,
253+
model: model ?? '',
254+
isAzure: false,
255+
stop: TextArray.fromPartial({ values: stop }),
256+
}
257+
: { model: '', isAzure: false },
258+
};
259+
},
260+
/**
261+
* Create a `ModuleConfig<'generative-google', GenerativeConfigRuntimeType<'generative-openai'> | undefined>` object for use when performing runtime-specific AI generation using the `generative-google` module.
262+
*
263+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/google/generative) for detailed usage.
264+
*
265+
* @param {GenerativeGoogleConfigRuntime} [config] The configuration for the `generative-palm` module.
266+
* @returns {ModuleConfig<'generative-google', GenerativeConfigRuntimeType<'generative-google'> | undefined>} The configuration object.
267+
*/
268+
google: (
269+
config?: GenerativeGoogleConfigRuntime
270+
): ModuleConfig<'generative-google', GenerativeConfigRuntimeType<'generative-google'> | undefined> => {
271+
const { stopSequences, ...rest } = config || {};
272+
return {
273+
name: 'generative-google',
274+
config: config
275+
? {
276+
...rest,
277+
stopSequences: TextArray.fromPartial({ values: stopSequences }),
278+
}
279+
: undefined,
280+
};
281+
},
282+
};

src/collections/generate/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,4 +364,5 @@ class GenerateManager<T> implements Generate<T> {
364364

365365
export default GenerateManager.use;
366366

367+
export { generativeConfigRuntime } from './config.js';
367368
export { Generate } from './types.js';

0 commit comments

Comments
 (0)