Skip to content

Commit b450b77

Browse files
committed
Add support for generative-friendliai
1 parent 604f9dc commit b450b77

File tree

6 files changed

+112
-13
lines changed

6 files changed

+112
-13
lines changed

src/collections/config/types/generative.ts

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ export type GenerativeAnyscaleConfig = {
2828
temperature?: number;
2929
};
3030

31+
export type GenerativeFriendliAIConfig = {
32+
baseURL?: string;
33+
maxTokens?: number;
34+
model?: string;
35+
temperature?: number;
36+
};
37+
3138
export type GenerativeMistralConfig = {
3239
maxTokens?: number;
3340
model?: string;
@@ -75,15 +82,36 @@ export type GenerativePaLMConfig = {
7582
};
7683

7784
export type GenerativeConfig =
78-
| GenerativeOpenAIConfig
85+
| GenerativeAnthropicConfig
86+
| GenerativeAnyscaleConfig
87+
| GenerativeAWSConfig
88+
| GenerativeAzureOpenAIConfig
7989
| GenerativeCohereConfig
90+
| GenerativeMistralConfig
91+
| GenerativeOctoAIConfig
92+
| GenerativeOllamaConfig
93+
| GenerativeOpenAIConfig
8094
| GenerativePaLMConfig
8195
| Record<string, any>
8296
| undefined;
8397

84-
export type GenerativeConfigType<G> = G extends 'generative-openai'
98+
export type GenerativeConfigType<G> = G extends 'generative-anthropic'
99+
? GenerativeAnthropicConfig
100+
: G extends 'generative-anyscale'
101+
? GenerativeAnyscaleConfig
102+
: G extends 'generative-aws'
103+
? GenerativeAWSConfig
104+
: G extends 'generative-azure-openai'
85105
? GenerativeOpenAIConfig
86106
: G extends 'generative-cohere'
107+
? GenerativeAzureOpenAIConfig
108+
: G extends 'generative-mistral'
109+
? GenerativeMistralConfig
110+
: G extends 'generative-octoai'
111+
? GenerativeOctoAIConfig
112+
: G extends 'generative-ollama'
113+
? GenerativeOllamaConfig
114+
: G extends 'generative-openai'
87115
? GenerativeCohereConfig
88116
: G extends 'generative-palm'
89117
? GenerativePaLMConfig
@@ -95,6 +123,7 @@ export type GenerativeSearch =
95123
| 'generative-anthropic'
96124
| 'generative-anyscale'
97125
| 'generative-aws'
126+
| 'generative-azure-openai'
98127
| 'generative-mistral'
99128
| 'generative-octoai'
100129
| 'generative-ollama'

src/collections/config/types/reranker.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export type RerankerJinaAIConfig = {
2020

2121
export type RerankerConfig =
2222
| RerankerCohereConfig
23+
| RerankerJinaAIConfig
2324
| RerankerTransformersConfig
2425
| RerankerVoyageAIConfig
2526
| Record<string, any>

src/collections/configure/generative.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
GenerativeAnyscaleConfig,
55
GenerativeAzureOpenAIConfig,
66
GenerativeCohereConfig,
7+
GenerativeFriendliAIConfig,
78
GenerativeMistralConfig,
89
GenerativeOctoAIConfig,
910
GenerativeOllamaConfig,
@@ -17,6 +18,7 @@ import {
1718
GenerativeAnyscaleConfigCreate,
1819
GenerativeAzureOpenAIConfigCreate,
1920
GenerativeCohereConfigCreate,
21+
GenerativeFriendliAIConfigCreate,
2022
GenerativeMistralConfigCreate,
2123
GenerativeOctoAIConfigCreate,
2224
GenerativeOllamaConfigCreate,
@@ -121,6 +123,19 @@ export default {
121123
: undefined,
122124
};
123125
},
126+
/**
127+
* Create a `ModuleConfig<'generative-friendliai', GenerativeFriendliAIConfig | undefined>` object for use when performing AI generation using the `generative-friendliai` module.
128+
*
129+
* See the [documentation](https://weaviate.io/developers/weaviate/model-providers/friendliai/generative) for detailed usage.
130+
*/
131+
friendliai(
132+
config?: GenerativeFriendliAIConfigCreate
133+
): ModuleConfig<'generative-friendliai', GenerativeFriendliAIConfig | undefined> {
134+
return {
135+
name: 'generative-friendliai',
136+
config,
137+
};
138+
},
124139
/**
125140
* Create a `ModuleConfig<'generative-mistral', GenerativeMistralConfig | undefined>` object for use when performing AI generation using the `generative-mistral` module.
126141
*

src/collections/configure/types/generative.ts

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {
22
GenerativeAWSConfig,
33
GenerativeAnthropicConfig,
44
GenerativeAnyscaleConfig,
5+
GenerativeFriendliAIConfig,
56
GenerativeMistralConfig,
67
GenerativeOctoAIConfig,
78
GenerativeOllamaConfig,
@@ -17,12 +18,12 @@ export type GenerativeOpenAIConfigBaseCreate = {
1718
topP?: number;
1819
};
1920

20-
export type GenerativeOpenAIConfigCreate = GenerativeOpenAIConfigBaseCreate & {
21-
model?: string;
22-
};
23-
2421
export type GenerativeAnthropicConfigCreate = GenerativeAnthropicConfig;
2522

23+
export type GenerativeAnyscaleConfigCreate = GenerativeAnyscaleConfig;
24+
25+
export type GenerativeAWSConfigCreate = GenerativeAWSConfig;
26+
2627
export type GenerativeAzureOpenAIConfigCreate = GenerativeOpenAIConfigBaseCreate & {
2728
resourceName: string;
2829
deploymentId: string;
@@ -37,29 +38,53 @@ export type GenerativeCohereConfigCreate = {
3738
temperature?: number;
3839
};
3940

40-
export type GenerativeAnyscaleConfigCreate = GenerativeAnyscaleConfig;
41-
42-
export type GenerativeAWSConfigCreate = GenerativeAWSConfig;
41+
export type GenerativeFriendliAIConfigCreate = GenerativeFriendliAIConfig;
4342

4443
export type GenerativeMistralConfigCreate = GenerativeMistralConfig;
4544

4645
export type GenerativeOctoAIConfigCreate = GenerativeOctoAIConfig;
4746

4847
export type GenerativeOllamaConfigCreate = GenerativeOllamaConfig;
4948

49+
export type GenerativeOpenAIConfigCreate = GenerativeOpenAIConfigBaseCreate & {
50+
model?: string;
51+
};
52+
5053
export type GenerativePaLMConfigCreate = GenerativePaLMConfig;
5154

5255
export type GenerativeConfigCreate =
53-
| GenerativeOpenAIConfigCreate
56+
| GenerativeAnthropicConfigCreate
57+
| GenerativeAnyscaleConfigCreate
58+
| GenerativeAWSConfigCreate
59+
| GenerativeAzureOpenAIConfigCreate
5460
| GenerativeCohereConfigCreate
61+
| GenerativeFriendliAIConfigCreate
62+
| GenerativeMistralConfigCreate
63+
| GenerativeOctoAIConfigCreate
64+
| GenerativeOllamaConfigCreate
65+
| GenerativeOpenAIConfigCreate
5566
| GenerativePaLMConfigCreate
5667
| Record<string, any>
5768
| undefined;
5869

59-
export type GenerativeConfigCreateType<G> = G extends 'generative-openai'
60-
? GenerativeOpenAIConfigCreate
70+
export type GenerativeConfigCreateType<G> = G extends 'generative-anthropic'
71+
? GenerativeAnthropicConfigCreate
72+
: G extends 'generative-aws'
73+
? GenerativeAWSConfigCreate
74+
: G extends 'generative-azure-openai'
75+
? GenerativeAzureOpenAIConfigCreate
6176
: G extends 'generative-cohere'
6277
? GenerativeCohereConfigCreate
78+
: G extends 'generative-friendliai'
79+
? GenerativeFriendliAIConfigCreate
80+
: G extends 'generative-mistral'
81+
? GenerativeMistralConfigCreate
82+
: G extends 'generative-octoai'
83+
? GenerativeOctoAIConfigCreate
84+
: G extends 'generative-ollama'
85+
? GenerativeOllamaConfigCreate
86+
: G extends 'generative-openai'
87+
? GenerativeOpenAIConfigCreate
6388
: G extends 'generative-palm'
6489
? GenerativePaLMConfigCreate
6590
: G extends 'none'

src/collections/configure/unit.test.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
GenerativeAnyscaleConfig,
55
GenerativeAzureOpenAIConfig,
66
GenerativeCohereConfig,
7+
GenerativeFriendliAIConfig,
78
GenerativeMistralConfig,
89
GenerativeOctoAIConfig,
910
GenerativeOllamaConfig,
@@ -1258,6 +1259,32 @@ describe('Unit testing of the generative factory class', () => {
12581259
});
12591260
});
12601261

1262+
it('should create the correct GenerativeFriendliAIConfig type with required & default values', () => {
1263+
const config = configure.generative.friendliai();
1264+
expect(config).toEqual<ModuleConfig<'generative-friendliai', GenerativeFriendliAIConfig | undefined>>({
1265+
name: 'generative-friendliai',
1266+
config: undefined,
1267+
});
1268+
});
1269+
1270+
it('should create the correct GenerativeFriendliAIConfig type with all values', () => {
1271+
const config = configure.generative.friendliai({
1272+
baseURL: 'base-url',
1273+
maxTokens: 100,
1274+
model: 'model',
1275+
temperature: 0.5,
1276+
});
1277+
expect(config).toEqual<ModuleConfig<'generative-friendliai', GenerativeFriendliAIConfig | undefined>>({
1278+
name: 'generative-friendliai',
1279+
config: {
1280+
baseURL: 'base-url',
1281+
maxTokens: 100,
1282+
model: 'model',
1283+
temperature: 0.5,
1284+
},
1285+
});
1286+
});
1287+
12611288
it('should create the correct GenerativeMistralConfig type with required & default values', () => {
12621289
const config = configure.generative.mistral();
12631290
expect(config).toEqual<ModuleConfig<'generative-mistral', GenerativeMistralConfig | undefined>>({

src/collections/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,9 @@ const collections = (connection: Connection, dbVersionSupport: DbVersionSupport)
129129

130130
const moduleConfig: any = {};
131131
if (config.generative) {
132-
moduleConfig[config.generative.name] = config.generative.config ? config.generative.config : {};
132+
const generative =
133+
config.generative.name === 'generative-azure-openai' ? 'generative-openai' : config.generative.name;
134+
moduleConfig[generative] = config.generative.config ? config.generative.config : {};
133135
}
134136
if (config.reranker) {
135137
moduleConfig[config.reranker.name] = config.reranker.config ? config.reranker.config : {};

0 commit comments

Comments
 (0)