@dataclouder/nest-vertex 0.0.42 → 0.0.43

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.
@@ -45,8 +45,8 @@ __decorate([
45
45
  __metadata("design:returntype", Promise)
46
46
  ], GeminiChatController.prototype, "generateText", null);
47
47
  exports.GeminiChatController = GeminiChatController = GeminiChatController_1 = __decorate([
48
- (0, swagger_1.ApiTags)('Vertex Only Gemini'),
49
- (0, common_1.Controller)('api/vertex/gemini'),
48
+ (0, swagger_1.ApiTags)('LLM Gemini '),
49
+ (0, common_1.Controller)('api/ai-services/gemini'),
50
50
  __metadata("design:paramtypes", [vertex_gemini_chat_service_1.GeminiChatService])
51
51
  ], GeminiChatController);
52
52
  //# sourceMappingURL=vertex-gemini-chat.controller.js.map
package/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from './services/adapter-llm.service';
14
14
  export * from './services/adapter-image-gen.service';
15
15
  export * from './services/generated-asset.service';
16
16
  export * from './services/vertex-veo-genai.service';
17
+ export * from './services/whisper/groq.service';
17
18
  export * from './models/gemini-models';
18
19
  export * from './models/adapter.models';
19
20
  export * from './models/google-voices';
@@ -21,4 +22,3 @@ export * from './models/generated-asset.entity';
21
22
  export * from './models/generated-asset.model';
22
23
  export * from './models/key-balancer.models';
23
24
  export * from './models/llm.models';
24
- export * from './services/whisper/groq.service';
package/index.js CHANGED
@@ -30,6 +30,7 @@ __exportStar(require("./services/adapter-llm.service"), exports);
30
30
  __exportStar(require("./services/adapter-image-gen.service"), exports);
31
31
  __exportStar(require("./services/generated-asset.service"), exports);
32
32
  __exportStar(require("./services/vertex-veo-genai.service"), exports);
33
+ __exportStar(require("./services/whisper/groq.service"), exports);
33
34
  __exportStar(require("./models/gemini-models"), exports);
34
35
  __exportStar(require("./models/adapter.models"), exports);
35
36
  __exportStar(require("./models/google-voices"), exports);
@@ -37,5 +38,4 @@ __exportStar(require("./models/generated-asset.entity"), exports);
37
38
  __exportStar(require("./models/generated-asset.model"), exports);
38
39
  __exportStar(require("./models/key-balancer.models"), exports);
39
40
  __exportStar(require("./models/llm.models"), exports);
40
- __exportStar(require("./services/whisper/groq.service"), exports);
41
41
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dataclouder/nest-vertex",
3
- "version": "0.0.42",
3
+ "version": "0.0.43",
4
4
  "description": "NestJS Vertex AI library for Dataclouder",
5
5
  "author": "dataclouder",
6
6
  "license": "MIT",
@@ -1,13 +1,19 @@
1
1
  import { GoogleGenAI } from '@google/genai';
2
2
  import { AvailableKeyResult, ModelType, TierType } from '../models/key-balancer.models';
3
3
  import { KeyBalancerApiService } from './key-balancer-api.service';
4
+ interface GeminiClientRequest {
5
+ model: string;
6
+ keyTierType: TierType;
7
+ aiType: ModelType;
8
+ }
4
9
  export declare class GoogleGenaiService {
5
10
  private readonly keyBalancer;
6
11
  private readonly logger;
7
12
  private readonly defaultApiKey;
8
13
  constructor(keyBalancer: KeyBalancerApiService);
9
- getGoogleGenAIClient(modelName: string, keyTierType?: TierType, aiType?: ModelType): Promise<{
14
+ getGoogleGenAIClient(request: GeminiClientRequest): Promise<{
10
15
  client: GoogleGenAI;
11
16
  balancedKey?: AvailableKeyResult;
12
17
  }>;
13
18
  }
19
+ export {};
@@ -26,14 +26,14 @@ let GoogleGenaiService = GoogleGenaiService_1 = class GoogleGenaiService {
26
26
  this.logger.warn('GEMINI_API_KEY environment variable not set. This service will not work without available keys in the balancer.');
27
27
  }
28
28
  }
29
- async getGoogleGenAIClient(modelName, keyTierType, aiType) {
29
+ async getGoogleGenAIClient(request) {
30
30
  this.logger.warn('getGoogleGenAIClient() Getting key from redis');
31
- if (process.env.KEY_BALANCER_HOST && aiType) {
31
+ if (process.env.KEY_BALANCER_HOST && request.aiType) {
32
32
  const balancedKey = await this.keyBalancer.postQueryKey({
33
33
  provider: 'google',
34
- model: modelName,
35
- tier: keyTierType,
36
- aiType: aiType,
34
+ model: request.model,
35
+ tier: request.keyTierType,
36
+ aiType: request.aiType,
37
37
  });
38
38
  if (balancedKey?.apiKey) {
39
39
  this.logger.debug(`Using balanced key: ${balancedKey.name} ${balancedKey.id}`);
@@ -23,7 +23,7 @@ let GeminiChatService = GeminiChatService_1 = class GeminiChatService {
23
23
  keyBalancer;
24
24
  googleGenaiService;
25
25
  logger = new common_1.Logger(GeminiChatService_1.name);
26
- defaultModel = 'gemini-1.5-flash-latest';
26
+ defaultModel = gemini_models_1.GeminiModels.Gemini2_5Lite;
27
27
  constructor(keyBalancer, googleGenaiService) {
28
28
  this.keyBalancer = keyBalancer;
29
29
  this.googleGenaiService = googleGenaiService;
@@ -57,7 +57,11 @@ let GeminiChatService = GeminiChatService_1 = class GeminiChatService {
57
57
  if (!messages || messages.length === 0) {
58
58
  return { content: '', role: adapter_models_1.ChatRole.Assistant, metadata: { finishReason: 'NO_INPUT' } };
59
59
  }
60
- const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(model, keyType);
60
+ const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
61
+ model: model,
62
+ keyTierType: keyType || key_balancer_models_1.TierType.FREE_TIER,
63
+ aiType: key_balancer_models_1.ModelType.LLM,
64
+ });
61
65
  try {
62
66
  const systemMessage = messages
63
67
  .filter(msg => msg.role === 'system')
@@ -140,7 +144,11 @@ let GeminiChatService = GeminiChatService_1 = class GeminiChatService {
140
144
  }
141
145
  const formattedContents = this.formatMessagesToContent(messages);
142
146
  const processStream = async function* () {
143
- const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(model, keyType);
147
+ const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
148
+ model: model,
149
+ keyTierType: keyType || key_balancer_models_1.TierType.FREE_TIER,
150
+ aiType: key_balancer_models_1.ModelType.LLM,
151
+ });
144
152
  try {
145
153
  this.logger.debug(`Sending stream request to Gemini model ${model} with ${formattedContents.length} content parts and system instruction: ${!!systemMessage}`);
146
154
  const stream = await client.models.generateContentStream({
@@ -229,7 +237,11 @@ let GeminiChatService = GeminiChatService_1 = class GeminiChatService {
229
237
  const textModelForFix = gemini_models_1.GeminiModels.Gemini2_5Lite;
230
238
  const prompt = dto.prompt ||
231
239
  'Describe this image, return a json with {"description": "description of image in 1 paragraph", "video": "idea of video in 1 paragraph, describe movements and camera movements, animation, actions or anything that can fit in 6 seconds video "}';
232
- const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(visionModelLLM, key_balancer_models_1.TierType.TIER_1);
240
+ const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
241
+ model: visionModelLLM,
242
+ keyTierType: key_balancer_models_1.TierType.TIER_1,
243
+ aiType: key_balancer_models_1.ModelType.LLM,
244
+ });
233
245
  this.logger.log(`Fetching image from URL: ${dto.url}`);
234
246
  const imageResponse = await fetch(dto.url);
235
247
  if (!imageResponse.ok) {
@@ -75,7 +75,11 @@ let VertexVeoGenaiService = class VertexVeoGenaiService {
75
75
  }
76
76
  async generateVideo() {
77
77
  const prompt = 'Panning wide shot of a calico kitten sleeping in the sunshine';
78
- const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(gemini_models_1.GeminiVideoModels.Veo3Fast, key_balancer_models_1.TierType.TIER_1, key_balancer_models_1.ModelType.VIDEO);
78
+ const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
79
+ model: gemini_models_1.GeminiVideoModels.Veo3Fast,
80
+ keyTierType: key_balancer_models_1.TierType.TIER_1,
81
+ aiType: key_balancer_models_1.ModelType.VIDEO,
82
+ });
79
83
  console.log('the balance key for video is ', balancedKey);
80
84
  const imagenResponse = await client.models.generateImages({
81
85
  model: 'imagen-3.0-generate-002',
@@ -123,7 +127,11 @@ let VertexVeoGenaiService = class VertexVeoGenaiService {
123
127
  }
124
128
  async _generateVideo(videoRequest) {
125
129
  console.log('Generating video...', videoRequest);
126
- const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient(gemini_models_1.GeminiVideoModels.Veo3Fast, key_balancer_models_1.TierType.TIER_1, key_balancer_models_1.ModelType.VIDEO);
130
+ const { client, balancedKey } = await this.googleGenaiService.getGoogleGenAIClient({
131
+ model: gemini_models_1.GeminiVideoModels.Veo3Fast,
132
+ keyTierType: key_balancer_models_1.TierType.TIER_1,
133
+ aiType: key_balancer_models_1.ModelType.VIDEO,
134
+ });
127
135
  console.log('the balance key for video is ', balancedKey);
128
136
  let operation = await client.models.generateVideos(videoRequest);
129
137
  const filename = `veo_video_${(0, uuid_1.v4)()}.mp4`;