@chainfuse/ai-tools 0.2.8 → 0.3.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.
package/dist/models.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import type { LanguageModelValues, TextEmbeddingModelValues } from '@chainfuse/types';
2
- import { wrapLanguageModel, type embed, type embedMany } from 'ai';
1
+ import type { ImageModelValues, LanguageModelValues, TextEmbeddingModelValues } from '@chainfuse/types';
2
+ import { wrapLanguageModel, type embed, type embedMany, type experimental_generateImage as generateImage } from 'ai';
3
3
  import { AiBase } from './base.mjs';
4
4
  import { AiRegistry } from './registry.mjs';
5
5
  import type { AiRequestConfig } from './types.mjs';
@@ -8,13 +8,23 @@ type ValidProviders = keyof ProvidersReturnType;
8
8
  type ProviderLanguageModels = {
9
9
  [P in ValidProviders]: Parameters<ProvidersReturnType[P]['languageModel']>[0];
10
10
  };
11
- type ProvidersTextEmbeddingModels = {
11
+ type ValidImageProviders = {
12
+ [P in ValidProviders]: ProvidersReturnType[P] extends {
13
+ imageModel: (...args: any[]) => any;
14
+ } ? P : never;
15
+ }[ValidProviders];
16
+ type ProviderImageModels = {
17
+ [P in Extract<ValidImageProviders, ValidProviders>]: Parameters<ProvidersReturnType[P]['imageModel']>[0];
18
+ };
19
+ type ProviderTextEmbeddingModels = {
12
20
  [P in ValidProviders]: Parameters<ProvidersReturnType[P]['textEmbeddingModel']>[0];
13
21
  };
14
22
  export declare class AiModel extends AiBase {
15
23
  wrappedLanguageModel<P extends ValidProviders>(args: AiRequestConfig, provider: P, model: ProviderLanguageModels[P]): Promise<ReturnType<typeof wrapLanguageModel>>;
16
24
  wrappedLanguageModel(args: AiRequestConfig, model: LanguageModelValues): Promise<ReturnType<typeof wrapLanguageModel>>;
17
- wrappedTextEmbeddingModel<P extends ValidProviders>(args: AiRequestConfig, provider: P, model: ProvidersTextEmbeddingModels[P]): Promise<Parameters<typeof embed | typeof embedMany>[0]['model']>;
25
+ wrappedImageModel<P extends ValidImageProviders>(args: AiRequestConfig, provider: P, model: ProviderImageModels[P]): Promise<Parameters<typeof generateImage>[0]['model']>;
26
+ wrappedImageModel(args: AiRequestConfig, model: ImageModelValues): Promise<Parameters<typeof generateImage>[0]['model']>;
27
+ wrappedTextEmbeddingModel<P extends ValidProviders>(args: AiRequestConfig, provider: P, model: ProviderTextEmbeddingModels[P]): Promise<Parameters<typeof embed | typeof embedMany>[0]['model']>;
18
28
  wrappedTextEmbeddingModel(args: AiRequestConfig, model: TextEmbeddingModelValues): Promise<Parameters<typeof embed | typeof embedMany>[0]['model']>;
19
29
  private get middleware();
20
30
  }
package/dist/models.mjs CHANGED
@@ -8,6 +8,9 @@ export class AiModel extends AiBase {
8
8
  middleware: this.middleware,
9
9
  }));
10
10
  }
11
+ wrappedImageModel(args, modelOrProvider, model) {
12
+ return new AiRegistry(this.config).registry(args).then((registry) => registry.imageModel(model ? `${modelOrProvider}:${model}` : modelOrProvider));
13
+ }
11
14
  wrappedTextEmbeddingModel(args, modelOrProvider, model) {
12
15
  return new AiRegistry(this.config).registry(args).then((registry) => registry.textEmbeddingModel(model ? `${modelOrProvider}:${model}` : modelOrProvider));
13
16
  }
@@ -1,6 +1,6 @@
1
1
  import { Helpers } from '@chainfuse/helpers';
2
2
  import { AiModels, enabledCloudflareLlmProviders } from '@chainfuse/types';
3
- import { APICallError, experimental_customProvider as customProvider, TypeValidationError, wrapLanguageModel } from 'ai';
3
+ import { APICallError, customProvider, TypeValidationError, wrapLanguageModel } from 'ai';
4
4
  import { ZodError } from 'zod';
5
5
  import { AiBase } from '../base.mjs';
6
6
  import { AzureServerSelector } from '../serverSelector/azure.mjs';
@@ -67,6 +67,13 @@ export class AiCustomProviders extends AiBase {
67
67
  return acc;
68
68
  }, Promise.resolve({})),
69
69
  // @ts-expect-error override for types
70
+ imageModels: await server.imageModelAvailability.reduce(async (accPromise, model) => {
71
+ const acc = await accPromise;
72
+ // @ts-expect-error override for types
73
+ acc[model] = (await raw.azOpenai(args, server)).imageModel(model);
74
+ return acc;
75
+ }, Promise.resolve({})),
76
+ // @ts-expect-error override for types
70
77
  textEmbeddingModels: await server.textEmbeddingModelAvailability.reduce(async (accPromise, model) => {
71
78
  const acc = await accPromise;
72
79
  // @ts-expect-error override for types
@@ -165,13 +172,11 @@ export class AiCustomProviders extends AiBase {
165
172
  const fallbackProvider = await new AiRawProviders(this.config).googleAi(args);
166
173
  return customProvider({
167
174
  languageModels: {
168
- // provider:actual model name:extra
169
175
  [AiModels.LanguageModels.GoogleGenerativeAi.gemini_flash_beta_search.split(':').slice(1).join(':')]: fallbackProvider(AiModels.LanguageModels.GoogleGenerativeAi.gemini_flash_beta_search.split(':')[1], { useSearchGrounding: true }),
170
176
  [AiModels.LanguageModels.GoogleGenerativeAi.gemini_flash_search.split(':').slice(1).join(':')]: fallbackProvider(AiModels.LanguageModels.GoogleGenerativeAi.gemini_flash_search.split(':')[1], { useSearchGrounding: true }),
171
177
  [AiModels.LanguageModels.GoogleGenerativeAi.gemini_pro_search.split(':').slice(1).join(':')]: fallbackProvider(AiModels.LanguageModels.GoogleGenerativeAi.gemini_pro_search.split(':')[1], { useSearchGrounding: true }),
172
178
  },
173
179
  fallbackProvider,
174
- // GoogleGenerativeAi
175
180
  });
176
181
  }
177
182
  }
@@ -1,15 +1,20 @@
1
+ import type { OpenAIProvider } from '@ai-sdk/openai';
1
2
  import type { OpenAIChatSettings, OpenAIEmbeddingSettings } from '@ai-sdk/openai/internal';
2
- import type { EmbeddingModelV1, LanguageModelV1 } from '@ai-sdk/provider';
3
- import type { AzureChatModels, AzureEmbeddingModels } from '@chainfuse/types';
3
+ import type { EmbeddingModelV1, ImageModelV1, LanguageModelV1 } from '@ai-sdk/provider';
4
+ import type { AzureChatModels, AzureEmbeddingModels, AzureImageModels } from '@chainfuse/types';
4
5
  import type { Provider } from 'ai';
5
6
  export interface AzureOpenAIProvider extends Provider {
6
7
  (deploymentId: AzureChatModels, settings?: OpenAIChatSettings): LanguageModelV1;
7
8
  /**
8
- Creates an Azure OpenAI chat model for text generation.
9
+ * Creates an Azure OpenAI chat model for text generation.
9
10
  */
10
11
  languageModel(deploymentId: AzureChatModels, settings?: OpenAIChatSettings): LanguageModelV1;
11
12
  /**
12
- Creates an Azure OpenAI model for text embeddings.
13
+ * Creates an Azure OpenAI model for text embeddings.
13
14
  */
14
15
  textEmbeddingModel(deploymentId: AzureEmbeddingModels, settings?: OpenAIEmbeddingSettings): EmbeddingModelV1<string>;
16
+ /**
17
+ * Creates a model for image generation.
18
+ */
19
+ imageModel(modelId: AzureImageModels, settings?: Parameters<OpenAIProvider['imageModel']>[1]): ImageModelV1;
15
20
  }
package/dist/registry.mjs CHANGED
@@ -13,6 +13,8 @@ export class AiRegistry extends AiBase {
13
13
  });
14
14
  }
15
15
  async registry(args) {
16
- return createProviderRegistry(await this.providers(args));
16
+ return createProviderRegistry(
17
+ // @ts-expect-error override for types
18
+ await this.providers(args));
17
19
  }
18
20
  }
@@ -10,7 +10,8 @@ export class AzureServerSelector extends ServerSelector {
10
10
  },
11
11
  region: PrivacyRegion.Australian_Privacy_Principles,
12
12
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
13
- textEmbeddingModelAvailability: [],
13
+ imageModelAvailability: ['dall-e-3'],
14
+ textEmbeddingModelAvailability: ['text-embedding-3-large', 'text-embedding-3-small'],
14
15
  },
15
16
  {
16
17
  id: 'OpenAi-BR-SaoPauloState',
@@ -20,6 +21,7 @@ export class AzureServerSelector extends ServerSelector {
20
21
  },
21
22
  region: PrivacyRegion.Brazil_General_Data_protection_Law,
22
23
  languageModelAvailability: ['gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
24
+ imageModelAvailability: [],
23
25
  textEmbeddingModelAvailability: [],
24
26
  },
25
27
  {
@@ -30,6 +32,7 @@ export class AzureServerSelector extends ServerSelector {
30
32
  },
31
33
  region: PrivacyRegion.Canada_Personal_Information_Protection_and_Electronic_Documents_Act,
32
34
  languageModelAvailability: [],
35
+ imageModelAvailability: [],
33
36
  textEmbeddingModelAvailability: [],
34
37
  },
35
38
  {
@@ -40,6 +43,7 @@ export class AzureServerSelector extends ServerSelector {
40
43
  },
41
44
  region: PrivacyRegion.Canada_Personal_Information_Protection_and_Electronic_Documents_Act,
42
45
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
46
+ imageModelAvailability: [],
43
47
  textEmbeddingModelAvailability: ['text-embedding-3-small', 'text-embedding-3-large'],
44
48
  },
45
49
  {
@@ -49,6 +53,7 @@ export class AzureServerSelector extends ServerSelector {
49
53
  lon: -79.8164,
50
54
  },
51
55
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
56
+ imageModelAvailability: ['dall-e-3'],
52
57
  textEmbeddingModelAvailability: ['text-embedding-3-small', 'text-embedding-3-large'],
53
58
  },
54
59
  {
@@ -57,7 +62,8 @@ export class AzureServerSelector extends ServerSelector {
57
62
  lat: 36.6681,
58
63
  lon: -78.3889,
59
64
  },
60
- languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
65
+ languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini', 'o1', 'o3-mini'],
66
+ imageModelAvailability: [],
61
67
  textEmbeddingModelAvailability: ['text-embedding-3-small', 'text-embedding-3-large'],
62
68
  },
63
69
  {
@@ -68,6 +74,7 @@ export class AzureServerSelector extends ServerSelector {
68
74
  },
69
75
  region: PrivacyRegion.General_Data_Protection_Regulation,
70
76
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
77
+ imageModelAvailability: [],
71
78
  textEmbeddingModelAvailability: ['text-embedding-3-large'],
72
79
  },
73
80
  {
@@ -78,6 +85,7 @@ export class AzureServerSelector extends ServerSelector {
78
85
  },
79
86
  region: PrivacyRegion.General_Data_Protection_Regulation,
80
87
  languageModelAvailability: ['gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
88
+ imageModelAvailability: [],
81
89
  textEmbeddingModelAvailability: [],
82
90
  },
83
91
  {
@@ -88,7 +96,8 @@ export class AzureServerSelector extends ServerSelector {
88
96
  },
89
97
  region: PrivacyRegion.Japan_Act_on_the_Protection_of_Personal_Information,
90
98
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
91
- textEmbeddingModelAvailability: ['text-embedding-3-large'],
99
+ imageModelAvailability: [],
100
+ textEmbeddingModelAvailability: ['text-embedding-3-large', 'text-embedding-3-small'],
92
101
  },
93
102
  {
94
103
  id: 'OpenAi-KR-Seoul',
@@ -98,6 +107,7 @@ export class AzureServerSelector extends ServerSelector {
98
107
  },
99
108
  region: PrivacyRegion.Korean_Personal_Information_Protection_Act,
100
109
  languageModelAvailability: ['gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
110
+ imageModelAvailability: [],
101
111
  textEmbeddingModelAvailability: [],
102
112
  },
103
113
  {
@@ -107,6 +117,7 @@ export class AzureServerSelector extends ServerSelector {
107
117
  lon: -87.6278,
108
118
  },
109
119
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
120
+ imageModelAvailability: [],
110
121
  textEmbeddingModelAvailability: [],
111
122
  },
112
123
  {
@@ -117,6 +128,7 @@ export class AzureServerSelector extends ServerSelector {
117
128
  },
118
129
  region: PrivacyRegion.Norwegian_Personal_Data_Act,
119
130
  languageModelAvailability: ['gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
131
+ imageModelAvailability: [],
120
132
  textEmbeddingModelAvailability: ['text-embedding-3-large'],
121
133
  },
122
134
  {
@@ -127,7 +139,8 @@ export class AzureServerSelector extends ServerSelector {
127
139
  },
128
140
  region: PrivacyRegion.General_Data_Protection_Regulation,
129
141
  languageModelAvailability: ['gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
130
- textEmbeddingModelAvailability: [],
142
+ imageModelAvailability: [],
143
+ textEmbeddingModelAvailability: ['text-embedding-3-large'],
131
144
  },
132
145
  {
133
146
  id: 'OpenAi-ZA-Johannesburg',
@@ -137,6 +150,7 @@ export class AzureServerSelector extends ServerSelector {
137
150
  },
138
151
  region: PrivacyRegion.SouthAfrica_Protection_Personal_Information_Act,
139
152
  languageModelAvailability: ['gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
153
+ imageModelAvailability: [],
140
154
  textEmbeddingModelAvailability: [],
141
155
  },
142
156
  {
@@ -146,6 +160,7 @@ export class AzureServerSelector extends ServerSelector {
146
160
  lon: -98.5,
147
161
  },
148
162
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
163
+ imageModelAvailability: [],
149
164
  textEmbeddingModelAvailability: [],
150
165
  },
151
166
  {
@@ -156,8 +171,19 @@ export class AzureServerSelector extends ServerSelector {
156
171
  },
157
172
  region: PrivacyRegion.Indian_Personal_Protection,
158
173
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
174
+ imageModelAvailability: [],
159
175
  textEmbeddingModelAvailability: ['text-embedding-3-large'],
160
176
  },
177
+ {
178
+ id: 'OpenAi-SG-Singapore',
179
+ coordinate: {
180
+ lat: 1.283,
181
+ lon: 103.833,
182
+ },
183
+ languageModelAvailability: [],
184
+ imageModelAvailability: [],
185
+ textEmbeddingModelAvailability: [],
186
+ },
161
187
  {
162
188
  id: 'OpenAi-EU-Gavle',
163
189
  coordinate: {
@@ -165,7 +191,8 @@ export class AzureServerSelector extends ServerSelector {
165
191
  lon: 17.14127,
166
192
  },
167
193
  region: PrivacyRegion.General_Data_Protection_Regulation,
168
- languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o-mini', 'gpt-4o'],
194
+ languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o-mini', 'gpt-4o', 'o1', 'o3-mini'],
195
+ imageModelAvailability: ['dall-e-3'],
169
196
  textEmbeddingModelAvailability: ['text-embedding-3-large'],
170
197
  },
171
198
  {
@@ -176,6 +203,7 @@ export class AzureServerSelector extends ServerSelector {
176
203
  },
177
204
  region: PrivacyRegion.General_Data_Protection_Regulation,
178
205
  languageModelAvailability: ['gpt-4-turbo', 'gpt-4o'],
206
+ imageModelAvailability: [],
179
207
  textEmbeddingModelAvailability: [],
180
208
  },
181
209
  {
@@ -186,6 +214,17 @@ export class AzureServerSelector extends ServerSelector {
186
214
  },
187
215
  region: PrivacyRegion.Swiss_Federal_Act_on_Data_Protection,
188
216
  languageModelAvailability: [],
217
+ imageModelAvailability: [],
218
+ textEmbeddingModelAvailability: [],
219
+ },
220
+ {
221
+ id: 'OpenAi-AE-Dubai',
222
+ coordinate: {
223
+ lat: 25.266666,
224
+ lon: 55.316666,
225
+ },
226
+ languageModelAvailability: ['gpt-4-turbo', 'gpt-4o-mini'],
227
+ imageModelAvailability: [],
189
228
  textEmbeddingModelAvailability: [],
190
229
  },
191
230
  {
@@ -196,7 +235,8 @@ export class AzureServerSelector extends ServerSelector {
196
235
  },
197
236
  region: PrivacyRegion.Swiss_Federal_Act_on_Data_Protection,
198
237
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
199
- textEmbeddingModelAvailability: [],
238
+ imageModelAvailability: [],
239
+ textEmbeddingModelAvailability: ['text-embedding-3-large', 'text-embedding-3-small'],
200
240
  },
201
241
  {
202
242
  id: 'OpenAi-UK-London',
@@ -206,6 +246,7 @@ export class AzureServerSelector extends ServerSelector {
206
246
  },
207
247
  region: PrivacyRegion.UK_General_Data_Protection_Regulation,
208
248
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
249
+ imageModelAvailability: [],
209
250
  textEmbeddingModelAvailability: ['text-embedding-3-large'],
210
251
  },
211
252
  {
@@ -216,6 +257,7 @@ export class AzureServerSelector extends ServerSelector {
216
257
  },
217
258
  region: PrivacyRegion.General_Data_Protection_Regulation,
218
259
  languageModelAvailability: ['gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
260
+ imageModelAvailability: [],
219
261
  textEmbeddingModelAvailability: [],
220
262
  },
221
263
  {
@@ -225,6 +267,7 @@ export class AzureServerSelector extends ServerSelector {
225
267
  lon: -122.417,
226
268
  },
227
269
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
270
+ imageModelAvailability: [],
228
271
  textEmbeddingModelAvailability: [],
229
272
  },
230
273
  {
@@ -234,6 +277,7 @@ export class AzureServerSelector extends ServerSelector {
234
277
  lon: -112.074036,
235
278
  },
236
279
  languageModelAvailability: ['gpt-35-turbo', 'gpt-4-turbo', 'gpt-4o', 'gpt-4o-mini'],
280
+ imageModelAvailability: [],
237
281
  textEmbeddingModelAvailability: ['text-embedding-3-large'],
238
282
  },
239
283
  ]);
@@ -1,9 +1,10 @@
1
- import type { AzureChatModels, AzureEmbeddingModels, Coordinate } from '@chainfuse/types';
1
+ import type { AzureChatModels, AzureEmbeddingModels, AzureImageModels, Coordinate } from '@chainfuse/types';
2
2
  import type { PrivacyRegion } from './base.mjs';
3
3
  export interface Server {
4
4
  id: string;
5
5
  coordinate: Coordinate;
6
6
  region?: PrivacyRegion;
7
7
  languageModelAvailability: AzureChatModels[] | string[];
8
+ imageModelAvailability: AzureImageModels[] | string[];
8
9
  textEmbeddingModelAvailability: AzureEmbeddingModels[] | string[];
9
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainfuse/ai-tools",
3
- "version": "0.2.8",
3
+ "version": "0.3.0",
4
4
  "description": "",
5
5
  "author": "ChainFuse",
6
6
  "homepage": "https://github.com/ChainFuse/packages/tree/main/packages/ai-tools#readme",
@@ -48,21 +48,21 @@
48
48
  },
49
49
  "prettier": "@demosjarco/prettier-config",
50
50
  "dependencies": {
51
- "@ai-sdk/anthropic": "^1.1.5",
52
- "@ai-sdk/azure": "^1.1.5",
53
- "@ai-sdk/google": "^1.1.6",
51
+ "@ai-sdk/anthropic": "^1.1.6",
52
+ "@ai-sdk/azure": "^1.1.9",
53
+ "@ai-sdk/google": "^1.1.8",
54
54
  "@ai-sdk/openai": "^1.0.5",
55
- "@ai-sdk/openai-compatible": "^0.1.6",
56
- "@chainfuse/helpers": "^1.1.1",
57
- "@chainfuse/types": "^1.6.0",
58
- "ai": "^4.1.10",
55
+ "@ai-sdk/openai-compatible": "^0.1.8",
56
+ "@chainfuse/helpers": "^1.1.2",
57
+ "@chainfuse/types": "^1.6.2",
58
+ "ai": "^4.1.16",
59
59
  "chalk": "^5.4.1",
60
60
  "haversine-distance": "^1.2.3",
61
61
  "workers-ai-provider": "^0.0.10"
62
62
  },
63
63
  "devDependencies": {
64
- "@cloudflare/workers-types": "^4.20250124.3",
65
- "openai": "^4.80.1"
64
+ "@cloudflare/workers-types": "^4.20250129.0",
65
+ "openai": "^4.82.0"
66
66
  },
67
- "gitHead": "928481e16670b3cbf86d942d1d2983635298c41c"
67
+ "gitHead": "5c8d059af28f814e48549d079a7b7f01dc3ad1db"
68
68
  }